找到多个MBean服务器 - 带有Websphere 7的Spring JMX

时间:2012-03-06 21:34:35

标签: spring jmx websphere-7

我正在使用Spring 3并通过Spring公开了一个MBean,一切正常但我在日志文件中看到了以下警告消息。

WARN  org.springframework.jmx.support.JmxUtils  - Found more than one MBeanServer instance. Returning first from list.

这是我的配置:

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
    <property name="assembler" ref="assembler" />
    <property name="namingStrategy" ref="namingStrategy" />
    <property name="autodetect" value="true" />
    <property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
</bean>

<bean id="jmxAttributeSource"
    class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" />

<bean id="assembler"
    class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
    <property name="attributeSource" ref="jmxAttributeSource" />
</bean>

<bean id="WASAdminService" class="com.ibm.websphere.management.AdminServiceFactory"
    factory-method="getAdminService" />

<bean id="namingStrategy" class="com.xxxx.WebSphereNamingStrategy">
    <constructor-arg ref="WASAdminService" />
</bean>

我放了一个调试点,发现它找到'com.ibm.ws.management.PlatformMBeanServer'和'com.sun.jmx.mbeanserver.JmxMBeanServer'对象。知道为什么它不止一个?当我用Google搜索时,我发现我可以指定'agent id'来查找所需的MBean服务器,但是如果我们在多个环境中部署此代码,则代理ID可能不相同(不能是静态的)...

对此的任何意见表示赞赏......

谢谢,Kiran

1 个答案:

答案 0 :(得分:1)

我的猜测是两个MBean服务器对应于:

  1. “Platform”MBean服务器 - 由JVM建立。这个MBean服务器将拥有所有内置Mbeans,例如:java.lang:type = Runtime
  2. WebSphere提供的MBean服务器 - 它有像WebSphere这样的MBean:name = WebContainer,process = ...
  3. 我是这个领域的新手,但我正准备进一步调查。从我的角度来看,我想指定Platform Mbean服务器 - 这样可以更容易地从监视工具(如JConsole等)访问