JBoss 7.1:java.lang.IllegalStateException:找不到'jboss'MBeanServer

时间:2013-01-27 00:48:01

标签: jboss jboss7.x jmx illegalstateexception mbeans

我的应用程序部署在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独立版上运行?

1 个答案:

答案 0 :(得分:0)

以下是解决方案:

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

引用:

以上问题是dueto locateJboss实现,它与旧版本的Jboss兼容。 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对象名在AS 7.1中不起作用我不得不使用JVM特定参数来确定MBean属性。 'java.lang:type = Memory',属性为'HeapMemoryUsage'。