我通过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订阅notificatios,我从未看到已调用addNotificationListener实现的方法。 通过debug查看bean代码,我从未看到任何调用的NotificationEmitter方法。虽然该bean的所有其他方法都按预期运行。 MBeanExporter做这个数字是什么意思?
答案 0 :(得分:0)
设置 MBeanExporter bean的属性汇编程序时出现问题,特别是设置汇编程序的属性 interfaceMappings >。如果添加到 MBeanExporter 的bean的类名和汇编程序中的接口名不算数,则规则interfaceName = className +" MBean&#34 ;创建一个实现 NotificationEmitter 的新MBean,并将其注册到MBeanServer中。遵循上述规则,将注册随 MBeanExporter 提供的bean 这是因为在注册时 MBeanServer ,检查上面的规则并在发现mimatch时抛出 NotCompliantMBeanException 。