在 Spring 3.1 中,我尝试通过 JMX 以两个不同的 bean 名称和两个不同的接口(interface)导出相同的 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 公开的两个接口(interface)。
但是,当我启动应用程序时,我遇到了异常
javax.management.InstanceAlreadyExistsException: MXBean already registered with name internal:name=internalName
是否有任何方法可以在两个不同的 mbean 名称下注册相同的 bean 实例,从而暴露不同的接口(interface)?
最佳答案
Can you register the same MBean with more than one name?表示您可以用不同的名称注册相同的 MBean,但提供了一些理由说明为什么这可能是一个坏主意。
在我的具体情况下,我使用 MXBeans。相同的 MXBean 不能注册在不同的对象名称下,因为这会与对 MXBean 间引用的支持发生冲突。
关于java - spring JMX可以在两个不同的bean名称下导出相同的bean实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712096/