Я реализую сервлет в качестве менеджера JMX, который работает в том же экземпляре Tomcat, в котором работают все отслеживаемые сервлеты. Я вижу данные отслеживаемых сервлетов при открытии JConsole.Из моего сервлета менеджера я могу перечислить все доступные стандартные MBean-компоненты, в том числе те, которые я создал в отслеживаемых сервлетах, используя этот код следующим образом:
JMXServiceURL url = new JMXServiceURL( "service:jmx:rmi://localhost:1099/jndi/rmi://localhost:1099/jmxrmi" );
mConnector = JMXConnectorFactory.connect( url );
mMBSC = mConnector.getMBeanServerConnection();
mObjectName = new ObjectName( "com.blahCompany.blah.blah:type=BlahBlah" );
// just looking for one specific bean
Set<ObjectName> myMbean = mMBSC.queryNames( mObjectName, null );
if( myMBean.size() == 1 ) // I know it exists
{
MBeanInfo mbeanInfo = mMBSC.getMBeanInfo( <ObjectName extracted from Set> );
MBeanAttributeInfo[] mbeanAttributeInfos = mbeanInfo.getAttributes();
for( MBeanAttributeInfo attribInfo : mbeanAttributeInfos )
{
if( attribInfo.isReadable() )
{
String attribName = attribInfo.getName();
String attribReturnType = attribInfo.getType();
// The data's somewhere ... where????
// In the MBeanInfo?
// In the MBeanAttributeInfo??
}
}
}
Проблема в том, что я не знаюкак на самом деле извлечь данных из этих MBeans.Ответ должен быть чертовски очевидным, потому что, кажется, никто не спрашивал, но у меня есть дар пропустить очевидное.Будем благодарны за вашу помощь.
Билл