Замена локатора JMX-сервера в JBoss AS 7 для класса MBeanServerLocator - PullRequest
5 голосов
/ 21 июля 2011

В настоящее время я использую JBoss 4.3 для веб-приложения.Я хотел бы перейти на JBoss AS 7. Мне удалось исправить различия приложения в обеих версиях, кроме одной.В приложении есть несколько JMX-бинов, которые создаются с помощью Spring Framework.К сожалению, в выпуске AS 7 был удален класс: org.jboss.mx.util.MBeanServerLocator, который использовался весной для определения местоположения сервера JBoss JMX и создания некоторых bean-компонентов.Я не знаком с JMX, но пока единственное, что я нашел на данный момент: «http://lists.jboss.org/pipermail/jboss-as7-dev/2011-February/000569.html". Мне было интересно, знает ли кто-нибудь, как заменить вышеприведенный класс из JBOSS на новые классы JMX 1.6. Вот моя весенняя конфигурацияфрагмент для части, которую мне нужно исправить:

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

Спасибо,

Ответы [ 2 ]

5 голосов
/ 22 июля 2011

MBeanServer, используемый JBoss 7 (по умолчанию), является платформой 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");
1 голос
/ 22 июля 2011

На самом деле я просто смотрю на странице JMX на весну 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>
...