【问题标题】:JBoss 7.1: java.lang.IllegalStateException: No 'jboss' MBeanServer foundJBoss 7.1:java.lang.IllegalStateException:找不到“jboss”MBeanServer
【发布时间】:2013-01-27 00:48:01
【问题描述】:

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

【问题讨论】:

    标签: jboss jboss7.x jmx illegalstateexception mbeans


    【解决方案1】:

    解决办法如下:

    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 对象名称在 AS 7.1 中不起作用,我必须使用 JVM 特定参数来确定 MBean 属性。 'java.lang:type=Memory' 和属性为 'HeapMemoryUsage'。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 2020-02-13
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多