JBoss AS 7中用于MBeanServerLocator类的JMX服务器定位器替换

ort*_*bio 5 jmx jboss7.x

我目前正在使用JBoss 4.3作为Web应用程序.我想转移到JBoss AS 7.我已经能够修复两个版本中应用程序的差异而不是一个.该应用程序有一些通过spring框架创建的JMX bean.不幸的是,AS 7版本删除了类:org.jboss.mx.util.MBeanServerLocator,它在spring中用于定位JBoss JMX服务器并创建一些bean.我不熟悉JMX,但到目前为止,我发现的唯一一件事就是:"http://lists.jboss.org/pipermail/jboss-as7-dev/2011-February/000569.html".我想知道是否有人知道如何用新的JMX 1.6类替换JBOSS上面的类.这是我需要修复的弹簧配置snipet:

<bean class="org.springframework.jmx.export.MBeanExporter">
    <property name="server">
        <bean class="org.jboss.mx.util.MBeanServerLocator" factory-method="locateJBoss"/>
    </property>
      <property name="beans">
        <map>
          <entry key="MywebMbeans:name=profileListenerContainer" value-ref="profileListenerContainer"/>
          <entry key="MywebMbeans:name=jmsSenderService" value-ref="jmsSenderService"/>
          <entry key="MywebMbeans:name=mailSender" value-ref="mailSender"/>
        </map>
      </property>
      <property name="assembler" ref="mbeanAssembler"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

谢谢,

Nic*_*las 5

JBoss 7使用的MBeanServer(默认情况下)是平台MBeanServer.类名是com.sun.jmx.mbeanserver.JmxMBeanServer,默认域是DefaultDomain.因此,您可以简单地使用:

java.lang.management.ManagementFactory.getPlatformMBeanServer()
Run Code Online (Sandbox Code Playgroud)

或者:

    for(MBeanServer server: javax.management.MBeanServerFactory.findMBeanServer(null)) {
        if("DefaultDomain".equals(server.getDefaultDomain())) return server;
    }
    throw new Exception("Failed to locate MBeanServer");
Run Code Online (Sandbox Code Playgroud)