Ich suche nach Richtlinien für die Definition einer MBean, die Benachrichtigungen ausgibt, insbesondere für die Art der Benachrichtigungen. Die JMX-Best-Practices auf der Oracle-Website steht Folgendes. Aber es ist ein bisschen alt und vor Java6.
Benachrichtigungen sollten Instanzen von javax.management.Notification oder einer der Unterklassen aus dem javax.management-Namespace sein. Informationen, die nicht in eine dieser Unterklassen passen, sollten durch Anhängen eines CompositeData an die Benachrichtigung mithilfe der Methode setUserData übermittelt werden.
Auf der Oracle-Website sehe ich auch, dass Weblogic einige seiner eigenen Unterklassen definiert, z. B. WebLogicLogNotification. Seine Bewährte Praktiken Staaten:
Alle JMX-Benachrichtigungsobjekte erweitern den Objekttyp javax.management.Notification. JMX und WebLogic Server definieren zusätzliche Benachrichtigungsobjekttypen, wie z. B. javax.management.AttributeChangeNotification. Die zusätzlichen Objekttypen enthalten spezialisierte Informationssätze, die für verschiedene Arten von Ereignissen geeignet sind.
Unsere Benachrichtigungen passen nicht in eine der Standard-Unterklassen, so dass wir wie WLS in Erwägung ziehen, unsere eigene Unterklasse mit benutzerdefinierten Gettern für die Informationen zu definieren, die wir mit den Benachrichtigungen übermitteln möchten. Oder wäre es besser, bei der Basis javax.management.Notification zu bleiben und unsere Informationen einfach mit dem generischen setUserData(Object) anzuhängen? In letzterem Fall müsste das Objekt wohl ein JMX-Typ wie CompositeData sein, was nicht so schön wäre. Was wäre aus Sicht des Verbrauchers besser?
EDIT: Aus der Sicht der Verbraucher ist der Nachteil einer benutzerdefinierten Unterklasse wohl, dass sie diese in ihre Anwendung/Klassenpfad aufnehmen müssen.