Spring JMX可以在两个不同的bean名下导出相同的bean实例吗?

时间:2012-10-03 15:45:59

标签: java spring jmx

在Spring 3.1中,我试图通过JMX在具有两个不同接口的两个不同bean名称下导出相同的bean。

下面是一些示例spring xml配置,显示了我要做的事情:

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="beans">
  <map>
    <entry key="internal:name=internalName" value-ref="myBean"/>
    <entry key="external:name=externalName" value-ref="myBean"/>
  </map>
</property>
<property name="assembler">
  <bean class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
    <property name="interfaceMappings">
      <props>
        <prop key="internal:name=internalName">InternalMXBean</prop>
        <prop key="external:name=externalName">ExternalMXBean</prop>
      </props>
    </property>
  </bean>
</property>

myBean实现了我试图通过JMX公开的两个接口。

然而,当我启动我的应用程序时,我得到了异常

javax.management.InstanceAlreadyExistsException: MXBean already registered with name internal:name=internalName

有没有办法在两个不同的mbean名称下注册相同的bean实例,从而暴露出不同的接口?

1 个答案:

答案 0 :(得分:0)

Can you register the same MBean with more than one name?表示您可以使用不同的名称注册相同的MBean,但提供了一些理由,说明为什么这可能是一个坏主意。

在我的具体情况下,我使用的是MXBeans。无法在不同的对象名称下注册相同的MXBean,因为这会与对MXBean间引用的支持相冲突。