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.
|
Schädliche Apps können unter Umständen einen Systemabsturz auslösen. Mindestens eine Anfälligkeit erlaubt eine Remotecodeausführung.
Sein Anteil an allen Infektionen steigt in Deutschland auf 18,5 Prozent. Das Botnet Androxgh0st integriert…
Betroffen sind Chrome 131 und früher für Windows, macOS und Linux. Angreifer können unter Umständen…
Marktforscher Lündendonk erwartet für das Jahr 2025 ein durchschnittliches Umsatzwachstum von 14,9 Prozent.
Alarmierender Anstieg von Open-Source-Malware / Seit 2019 haben Sonatype-Analysen mehr als 778.500 bösartige Pakete aufgedeckt
Das KI-Werkzeug "BAIOSPHERE KI-KOMPASS" soll Unternehmen den Einstieg in KI erleichtern.