以编程方式访问Infinispan MBeans

时间:2013-05-06 14:00:25

标签: java jmx mbeans infinispan

我正在使用Infinispan 5.2.1并试图通过我的Java程序访问MBean。但没有运气。我假设Infinispan MBean在Platform MBean服务器中注册。我可以在Jconsole中正确地看到所有MBean,但不能在程序中看到。

我的Infinispan配置

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

我的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;

        }

1 个答案:

答案 0 :(得分:1)

即使JVM在同一主机上运行,​​您也需要使用远程MBean服务器访问。

请查看Accessing a remote MBean server以了解有关为远程连接设置平台MBean服务器以及连接到该服务器的更多信息。