0

Infinispan 5.2.1 を使用しており、Java プログラムを介して MBean にアクセスしようとしました。しかし、運がありません。Platform MBean サーバーに Infinispan 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;

        }
4

1 に答える 1

1

JVM が同じホスト上で実行されている場合でも、リモート MBean サーバー アクセスを使用する必要があります。

リモート接続用のプラットフォーム MBean サーバーのセットアップとそのサーバーへの接続の詳細については、リモート MBean サーバーへのアクセスを参照してください。

于 2013-05-07T13:05:46.847 に答える