java - spring JMX可以在两个不同的bean名称下导出相同的bean实例吗?

标签 java spring jmx

在 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/

相关文章:

java - ActiveMQ Jolokia API 如何获取完整的消息正文

java - spring boot拦截器,拦截返回中文乱码的问题

java - Spring Boot 中的 SSL 证书

多个实例上的 Spring 和计划任务

java - 找不到 MBean "jboss.web:type=Manager,path=/,host=localhost"

java - 在 Graphite 中显示 Java Metrics 结果

java - RESTful 畅玩!框架

java - 调用方法时,类中的构造方法无法应用于给定的类型错误

java - 在 CDI SessionScoped bean 中注入(inject) HttpServletRequest

java - Servlet 无法解析