在定义发出通知的 MBean 时寻找指南,特别是关于通知类型的指南。 Oracle 网站上的 JMX Best Practices 说明如下。但是它有点旧并且是 Java6 之前的版本。
同样在 Oracle 的站点上,我看到 Weblogic 定义了一些自己的子类,例如WebLogicLogNotification。它的 Best Practices 声明:
我们的通知不适合任何标准子类,因此像 WLS 一样,考虑使用自定义 getter 定义我们自己的子类,以用于我们希望通过通知传达的信息。还是坚持使用基本的 javax.management.Notification 并将我们的信息与通用 setUserData(Object) 附加在一起会更好吗?如果我们做后者,我想 Object 应该是一个 JMX 类型,比如 CompositeData,这看起来不太好。从消费者的角度考虑哪个更好?
编辑:从消费者的角度来看,我猜自定义子类的缺点是他们必须将其包含在他们的应用程序/类路径中。
最佳答案
在 jmx 中使用自定义数据类型几乎总是一个坏主意。这是非常有限的。坚持开放类型,您的数据可以被任何 jmx 客户端(java 或其他)使用。
请注意,您始终可以提供一些辅助类,它们执行某种“自定义 bean”“开放类型”转换。可以访问辅助类的类可以使用这些方便的方法(例如 ThreadInfo.from() ),而外部和非 Java 代码仍然能够使用数据。
关于java - 发出 JMX 通知的最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5554529/