我正在使用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;
}
最佳答案
即使JVM在同一主机上运行,也将需要使用远程MBean服务器访问。
请检查Accessing a remote MBean server,以了解有关为远程连接设置平台MBean服务器以及连接到该服务器的更多信息。