Java 发出JMX通知的最佳实践

Java 发出JMX通知的最佳实践,java,jmx,Java,Jmx,在定义发出通知的MBean时寻找指导原则,特别是关于通知类型的指导原则。甲骨文网站上的声明如下。但是它有点旧,而且是在Java6之前 通知应该是javax.management.Notification的实例或javax.management命名空间中的一个子类。不适合这些子类之一的信息应该通过使用setUserData方法将复合数据附加到通知来传递 同样在Oracle的网站上,我看到Weblogic定义了它自己的一些子类,例如WebLogicLogNotification。其国家: 所有JMX

在定义发出通知的MBean时寻找指导原则,特别是关于通知类型的指导原则。甲骨文网站上的声明如下。但是它有点旧,而且是在Java6之前

通知应该是javax.management.Notification的实例或javax.management命名空间中的一个子类。不适合这些子类之一的信息应该通过使用setUserData方法将复合数据附加到通知来传递

同样在Oracle的网站上,我看到Weblogic定义了它自己的一些子类,例如WebLogicLogNotification。其国家:

所有JMX通知对象都扩展了javax.management.notification对象类型。JMX和WebLogic Server定义了其他通知对象类型,例如javax.management.AttributeChangeNotification。其他对象类型包含适用于不同类型事件的专用信息集

我们的通知不适合任何标准子类,因此与WLS一样,考虑使用自定义getter定义我们自己的子类,以获取我们希望通过通知传递的信息。还是继续使用基本javax.management.Notification并将我们的信息附加到通用的setUserData(对象)中更好?如果我们使用后者,我想对象应该是JMX类型,比如CompositeData,这看起来不太好。从消费者的角度考虑哪一个更好


编辑:从消费者的角度来看,我想自定义子类的缺点是它们必须将其包含在应用程序/类路径中。

在jmx中使用自定义数据类型几乎总是一个坏主意。这是非常有限的。坚持开放类型,任何jmx客户机(java或其他)都可以使用您的数据

注意,您始终可以提供一些帮助器类,这些类执行某种“自定义bean”“打开类型”转换。可以访问helper类的类可以利用这些方便的方法(例如),而外部和非java代码仍然能够使用数据