0

私のアプリケーションは JBoss 7.1 (スタンドアロン) にデプロイされています。次の行で例外が発生します。

MBeanServerConnection server = MBeanServerLocator.locateJBoss();

例外は次のとおりです。

JBoss: java.lang.IllegalStateException: No 'jboss' MBeanServer found!

上記のコードは、アプリが JBoss 5 にデプロイされたときに正常に機能しました。

私がオンラインで読んでいたことから、コードは、MBeanServer が作成されたのと同じ JVM から呼び出された場合にのみ機能するはずです。それ以外の場合はリモート呼び出しであり、JNDI を使用する必要があります。しかし、それはローカル呼び出し (同じ JVM - つまり JBoss JVM) ではないのでしょうか? JBoss 5 ではどのように動作したのでしょうか? この特定のコードを変更せずに、JBoss 7.1 スタンドアロンで動作させるにはどうすればよいですか?

4

1 に答える 1

0

解決策は次のとおりです。

https://community.jboss.org/thread/221708

見積もり:

上記の問題は、古いバージョンの Jboss と互換性のあるlocateJboss 実装によるものです。JBoss 7 が (デフォルトで) 使用する MBeanServer は、プラットフォーム MBeanServer です。クラス名は com.sun.jmx.mbeanserver.JmxMBeanServer で、デフォルト ドメインは DefaultDomain です。したがって、次のものを簡単に使用できます。

java.lang.management.ManagementFactory.getPlatformMBeanServer()

または:

 for(MBeanServer server: javax.management.MBeanServerFactory.findMBeanServer(null)) {

      if("DefaultDomain".equals(server.getDefaultDomain())) return server;

 }

 throw new Exception("Failed to locate MBeanServer");

jboss.system:type=ServerInfo object name does not work in AS 7.1 JVM 固有のパラメーターを使用して、MBean 属性を特定する必要がありました。「java.lang:type=Memory」および「HeapMemoryUsage」としての属性。

于 2013-03-14T12:51:05.220 に答える