2013-05-06 5 views
0

Я использую Infinispan 5.2.1 и пытался получить доступ к MBeans через мою программу Java. Но не повезло. Я предполагаю, что Infinispan MBeans зарегистрированы на сервере Platform MBean. Я вижу все MBeans правильно в Jconsole, но не с программой.Access Infinispan MBeans programatically

Моя Infinispan конфигурация

<globalJmxStatistics enabled="true" allowDuplicateDomains="true"/> 

программа My Java.

MBeanServerConnection mBeanServer = ManagementFactory.getPlatformMBeanServer(); 

String jmxQuery = "org.infinispan:type=Cache,name=" + "\"" + cacheName + "(" + cacheMode + ")" + "\"" 
      + ",manager=" + "\"" + "DefaultCacheManager" + "\"" 
      + ",component=Statistics"; 

Set<ObjectInstance> queryResults = mBeanServer.queryMBeans(new ObjectName(jmxQuery), null); 

for (ObjectInstance objectInstance : queryResults) { 

      ObjectName objectName = objectInstance.getObjectName(); 

      long cacheHits = (Long) mBeanServer.getAttribute(objectName, "Hits"); 

      long removeHits = (Long) mBeanServer.getAttribute(objectName, "RemoveHits"); 

      totalHits = cacheHits + removeHits; 

     } 

Любая помощь оценивается.

+0

Я ожидаю, что ваша Java-программа не будет работать в той же JVM, что и Infinispan. Это верно? –

+0

Да, это правильно. – era

ответ

0

Вам нужно будет использовать удаленный доступ к серверу MBean, даже если JVM работают на одном хосте.

Пожалуйста, зайдите в Accessing a remote MBean server, чтобы узнать больше о настройке платформы MBean для удаленного подключения и подключения к этому серверу.