1

在 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 实例,暴露不同的接口?

4

1 回答 1

1

您可以使用多个名称注册同一个 MBean 吗?表示您可以使用不同的名称注册相同的 MBean,但提供了一些理由来说明为什么这可能是一个坏主意。

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

于 2012-10-04T08:42:26.800 回答