我通过 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 这个图是做什么的?