【问题标题】:Spring 3.2.3 MBeanExporter doesn't honor bean propertySpring 3.2.3 MBeanExporter 不支持 bean 属性
【发布时间】:2017-07-11 09:23:53
【问题描述】:

我通过 Spring MBeanExporter 导出了一个 bean,这个 bean 实现了 NotificationEmitter 并且表现得像一个 NotificationBroadcasterSupport。因此它采用了 public MBeanNotificationInfo[] getNotificationInfo() 方法,返回一个 MBeanNotificationInfo[] 的静态实例,该实例包含它自己的 notifTypes,只有一个带点注释的字符串。通过jconsole查看这个bean,而不是配置的notifTypes,我看到了:

ModelMBeanNotificationInfo: GENERIC ... Types: jmx.modelmbean.generic
ModelMBeanNotificationInfo: ATTRIBUTE_CHANGE ... Types: jmx.attribute.change

另外,如果我通过 jconsole 订阅通知,我永远不会看到 addNotificationListener 实现的方法已被调用。 通过调试查看 bean 代码,我从未看到调用过任何 NotificationEmitter 方法。虽然该 bean 的所有其他方法都按预期运行。 MBeanExporter 这个图是做什么的?

【问题讨论】:

    标签: java spring spring-jmx


    【解决方案1】:

    设置 MBeanExporter bean 的属性 assembler 出现问题,特别是设置 assembler的属性 interfaceMappings >。如果添加到 MBeanExporter 的 bean 的类名和 assembler 中的接口名不计算规则 interfaceName = className+"MBean" 实现 NotificationEmitter 被创建并注册到 MBeanServer 中。按照上述规则,由 MBeanExporter 提供的 bean 被注册。
    这是因为 MBeanServer 在注册时检查上述规则,如果发现不匹配则抛出 NotCompliantMBeanException

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-29
      • 2011-06-26
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多