Benachrichtigungen (Notifications) sind eine weitere Funktion von Mbeans, die hier noch nicht besprochen wurde. Wenn sich ein Zustand ändert oder ein anderes wichtiges Ereignis bei einem Objekt eintritt, möchte man vielleicht die Management-Clients informieren können, dass etwas passiert ist. Das JMX Notification Framework bietet zwar eine Vielzahl von Funktionen, aber hier soll das WatchMe-Beispiel erweitert werden, um eine einfache Log-Benachrichtigung zu erzeugen, wenn der Zähler durch 10 teilbar ist.
Damit ein Mbean eine Benachrichtigung erzeugen kann, muss es das NotificationEmitter-Interface implementieren (welches das ehemalige NotificationBroadcaster-Interface ersetzt):
public class WatchMeBean implements Runnable,WatchMeBeanMBean,NotificationEmitter
Statt die erforderlichen Methoden selbst zu implementieren, kann man die Klasse NotificationBroadcasterSupport verwenden (die eigentlich NotificationEmitter implementiert) um seine Benachrichtigungen zu verwalten und die erforderliche Arbeit zu delegieren:
private NotificationBroadcasterSupport nbs=new NotificationBroadcasterSupport();
NotificationBroadcasterSupport implementiert eigentlich das NotificationEmitter-Interface, daher sind vier Methoden zu delegieren:
Nun verfügt man über ein Mbean, das Benachrichtigungen verschicken kann. Man wird dieselben Muster erkennen, die auch schon bei der Erzeugung von PropertyChange-Ereignissen in der WatchMe-Bean zum Einsatz kamen. Ein Unterschied von Benachrichtigungen gegenüber PropertyChange-Ereignissen ist, dass jede Benachrichtigung eine Seriennummer benötigt:
int _seq=0;
Damit kann man nun endlich eine Benachrichtigung erzeugen. Dazu erstellt man zuerst ein Notification-Objekt mit dem einfachsten Konstruktor, der einen String übernimmt.
Notification notif=new Notification(" uk.builder.watchme.log",this,_seq++," Count is divisible by 10");
Der erste Parameter ist ein String, der eine „Klasse“ von Benachrichtigungen bezeichnet. Der nächste ist die Quelle für die Benachrichtigung und dann folgt die Seriennummer, die inkrementiert wird. Und schließlich folgt die eigentliche Nachricht, die versendet werden soll. Danach wird diese Notification-Instanz zum Verschicken an die NotificationBroadcastSupport-Instanz übergeben:
nbs.sendNotification(notif);
Das war schon fast alles. Nun sollen diese Benachrichtigungen aber auch angezeigt werden. Hierzu führt man die Anwendung aus (mithilfe des überarbeiteten Beispielcodes für WatchMeBean.java in Listing A) und stellt mithilfe der Jconsole die Verbindung zur Anwendung her.
Listing A
Auf der Registerkarte Mbeans wählt man das WatchMe-Mbean aus und dann die Registerkarte Notification. Die Benachrichtigungen werden allerdings erst angezeigt, wenn man sie abonniert. Also klickt man auf den Subscribe-Button und wartet. Die ersten Benachrichtigungen sollten bald zu sehen sein.
|
Neueste Kommentare
Noch keine Kommentare zu Jconsole: Fernverwaltung, Benachrichtigungen und Logging
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.