在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实例?
Can you register the same MBean with more than one name?表示您可以使用不同的名称注册相同的MBean,但提供了一些理由说明为什么这可能不是一个好主意。
在我的特定情况下,我正在使用MXBean。相同的MXBean无法以不同的对象名称注册,因为这将与对MXBean间引用的支持冲突。