5

I am currently using JBoss 4.3 for a web application. I would like to move to the JBoss AS 7. I have been able to fix must of the differences of the application in both versions but one. The application has some JMX beans that are created thru the spring framework. Unfortunately the AS 7 release removed the class: org.jboss.mx.util.MBeanServerLocator which was used in spring to locate the JBoss JMX server and create some beans. I am not to familiar with JMX but so far the only thing I have found so far is: "http://lists.jboss.org/pipermail/jboss-as7-dev/2011-February/000569.html". I was wondering if somebody knows how to replace the class above from JBOSS with the new JMX 1.6 classes. Here is my spring configuration snipet for the piece I need to fix:

<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>

Thanks,

4

2 回答 2

5

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");
于 2011-07-22T13:14:08.987 回答
1

实际上我只是在 JMX 页面中查看 spring http://static.springsource.org/spring/docs/1.2.x/reference/jmx.html

以下内容适用于 JBoss 实例 4 和 7。

<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
      <property name="locateExistingServerIfPossible" value="true" />
</bean>

<bean class="org.springframework.jmx.export.MBeanExporter">

   <property name="server" ref="mbeanServer"/>
   </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>
于 2011-07-22T13:50:29.307 回答