Comment obtenir des données via MBean

Je me suis mise en œuvre d'une servlet comme un JMX gestionnaire qui s'exécute dans la même instance de Tomcat que tous les suivis servlets sont en cours d'exécution. Je peux voir les données de surveillance des servlets quand j'ouvre JConsole. À partir de l'intérieur de mon gestionnaire de servlet je peux énumérer toutes les MBeans standard, y compris ceux que j'ai créé dans le suivi des servlets, à l'aide de ce code comme ceci:

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??
         }
     }
}

Le problème est que je ne sais pas comment extraire la données de ces MBeans. La réponse doit être godawful évident parce que personne ne semble avoir posé la question, mais j'ai un cadeau pour donnant sur l'évidence. Votre aide sera grandement appréciée.

Projet de loi

J'ai mis à jour ma réponse avec une note concernant l'accès local à la mbean server, qui d'après ce que je comprends de votre question est ce que votre situation l'exige (pas besoin de se connecter via l'URL). J'imagine que le rendement serait mieux que d'utiliser la connexion à distance.

OriginalL'auteur joe7pak | 2012-03-05