Und schließlich ist da noch die MBeans-Registerkarte. Hier wird es erst richtig interessant. MBeans sind das Herzstück des JMX-Frameworks und ermöglichen die Verwaltung und Überwachung eigener Anwendungen. Für jede Klasse, die man verwalten möchte, erstellt man ein zugehöriges MBean, das die Verwaltungsschnittstelle beschreibt. Beim WatchMe-Beispiel haben wir eine Klasse, die überwacht werden muss, WatchMeBean.java. Dies ist nur eine einfache Klasse mit einem Zähler, der jede Sekunde oder beim Aufruf der Methode incCount inkrementiert wird. Es gibt auch eine Reset-Methode, die den Zähler wieder auf Null setzt. WatchMeBean verfügt auch über einen Message-String. Für die Verwaltung soll der aktuelle Wert des Zählers, die Message sowie die Möglichkeit zum Zurücksetzen des Zählers bereitgestellt werden.
Hierfür benötigt man ein MBean wie das folgende:
Dies ist eher ein Interface als eine Klasse und verkapselt die Methoden, die JMX als Management-API betrachten soll. Das MBean-Interface muss denselben Namen wie die zu verwaltende Klasse haben (mit korrekter Groß- und Kleinschreibung), wobei „MBean“ angehängt wird. Das MBean um die Klasse WatchMeBean zu überwachen heißt also WatchMeBeanMBean. Darauf sollte man achten, wenn man eine Anwendung mit MBeans refaktoriert. Ein einfaches MBean folgt den bekannten JavaBean-Namensgebungskonventionen mit get- und set-Methoden.
MBeans müssen beim MBeanServer registriert werden. Dies ist ein Agent, der sich um die externen Clients kümmert, die mit dem JMX-Framework verbunden sind. In WatchMe.java wird dies wie folgt eingestellt:
Der Aufruf von getPlatformMBeanServer() erzeugt den MBeanServer (und gibt ihn zurück), der gleichzeitig für die JVM-Speicher- und Thread-Informationen verantwortlich ist, von denen oben bereits die Rede war. Sobald der MBeanServer vorhanden ist, kann man bei ihm eine Klassen-Instanz registrieren. Zuerst erstellt man das WatchMeBean und startet es in einem eigenen Thread:
Eventuell hat man mehrere Instanzen derselben Klasse, die man verwalten möchte. Um zwischen diesen zu unterscheiden, erstellt man einen ObjectName. Dieser besteht aus zwei Teilen, einer Domäne sowie einer Liste von Attributen. Hier ist die Domäne „WatchMeBean“ und ein Namens-Attribut, das auf „watchme“ gesetzt ist. Diese Namen tauchen später noch einmal auf. Sobald man über einen ObjectName verfügt, kann man das Bean beim MBeanServer registrieren:
Bei der Registrierung dient Reflexion dazu, das entsprechende WatchMeBeanMBean zu identifizieren (weshalb es wichtig ist, den Namen des MBeans korrekt anzugeben). Damit hat man ein überwachbares Bean.
Neueste Kommentare
Noch keine Kommentare zu Jconsole – ein zentrales J2SE-Tool
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.