Java Management Extensions ( JMX ) ist eine Java- Technologie, die Werkzeuge zur Verwaltung und Überwachung von Anwendungen , Systemobjekten, Geräten (wie Druckern ) und serviceorientierten Netzwerken bereitstellt. Diese Ressourcen werden durch Objekte namens MBeans ( Managed Bean ) repräsentiert. In der API können Klassen dynamisch geladen und instanziiert werden. Anwendungen zur Verwaltung und Überwachung können mithilfe des Java Dynamic Management Kits entworfen und entwickelt werden. [ 1 ]

JSR 003 [ 2 ] des Java Community Process definierte JMX 1.0, 1.1 und 1.2. JMX 2.0 wurde unter JSR 255 entwickelt, diese JSR wurde jedoch später zurückgezogen. [ 3 ] Die JMX Remote API 1.0 für Fernverwaltung und -überwachung ist in JSR 160 spezifiziert. [ 4 ] Eine Erweiterung der JMX Remote API für Webdienste wurde unter JSR 262 entwickelt. [ 5 ]

JMX wurde früh von der J2EE- Community übernommen und ist seit Version 5.0 Bestandteil von J2SE . „JMX“ ist eine Marke der Oracle Corporation .

Architektur

JMX-Architektur

JMX verwendet eine dreistufige Architektur:

  1. Die Probe- Ebene – auch Instrumentierungsebene genannt – enthält die Probes ( MBeans genannt ), die die Ressourcen instrumentieren.
  2. Die Agentenebene oder der MBeanServer – das Herzstück von JMX. Er fungiert als Vermittler zwischen dem MBean und den Anwendungen.
  3. Die Remote-Management- Ebene ermöglicht es Remote-Anwendungen, über Konnektoren und Adapter auf den MBeanServer zuzugreifen. Ein Konnektor bietet vollen Remote-Zugriff auf die MBeanServer-API über verschiedene Kommunikationsschnittstellen ( RMI , IIOP , JMS , WS-* usw.), während ein Adapter die API an ein anderes Protokoll ( SNMP usw.) oder an eine webbasierte GUI ( HTML / HTTP , WML / HTTP usw.) anpasst.

Anwendungen können generische Konsolen (wie JConsole [ 6 ] und MC4J [ 7 ] ) oder domänenspezifische (Überwachungs-)Anwendungen sein. Externe Anwendungen können über JMX-Konnektoren und Protokolladapter mit den MBeans interagieren. Konnektoren dienen dazu, einen Agenten mit einer entfernten, JMX-fähigen Managementanwendung zu verbinden. Diese Kommunikationsform umfasst einen Konnektor im JMX-Agenten und einen Konnektor-Client in der Managementanwendung.

Die Java Platform, Standard Edition wird mit einem Connector ausgeliefert, dem RMI-Connector , der das Java Remote Method Protocol (JRP) nutzt, welches Teil der Java Remote Method Invocation API (JRMI-API) ist. Dieser Connector wird von den meisten Managementanwendungen verwendet.

Protokolladapter ermöglichen die Verwaltung des JMX-Agenten über ein bestimmtes Protokoll. Verwaltungsanwendungen, die sich mit einem Protokolladapter verbinden, sind in der Regel protokollspezifisch.

Bewirtschaftete Bohnen

Ein Managed Bean – oft einfach MBean genannt – ist eine Art JavaBean , die mithilfe von Dependency Injection erzeugt wird . Managed Beans werden insbesondere in der Java Management Extensions-Technologie verwendet. Mit Java EE 6 bietet die Spezifikation jedoch eine detailliertere Definition des Begriffs „Managed Bean“.

Ein MBean repräsentiert eine Ressource, die in der Java Virtual Machine ausgeführt wird , beispielsweise eine Anwendung oder ein technischer Dienst von Java EE (Transaktionsmonitor, JDBC-Treiber usw.). MBeans können verwendet werden, um Statistiken zu Aspekten wie Leistung, Ressourcennutzung oder Problemen zu erfassen (Pull-Methode), um Anwendungskonfigurationen oder -eigenschaften abzurufen und festzulegen (Push-/Pull-Methode) und um Ereignisse wie Fehler oder Zustandsänderungen zu melden (Push-Methode).

Java EE 6 definiert eine Managed Bean als eine Bean, die von einer Java-Klasse implementiert wird, deren Klasse als Bean-Klasse bezeichnet wird. Eine Java-Klasse der obersten Ebene ist eine Managed Bean, wenn sie in einer anderen Java-EE-Technologiespezifikation (z. B. der JavaServer Faces -Technologiespezifikation) als Managed Bean definiert ist oder wenn sie alle folgenden Bedingungen erfüllt:

  1. Es handelt sich nicht um eine nicht-statische innere Klasse .
  2. Es handelt sich um eine konkrete Klasse oder sie ist annotiert @Decorator.
  3. Es ist nicht mit einer EJB-Komponenten-definierenden Annotation versehen oder als EJB-Bean-Klasse deklariert in ejb-jar.xml.

Für die Definition einer Managed Bean ist keine spezielle Deklaration, wie beispielsweise eine Annotation, erforderlich.

Ein MBean kann den MBeanServer über interne Änderungen (der Attribute) informieren, indem es die Schnittstelle implementiert javax.management.NotificationEmitter. Die an den Änderungen des MBeans interessierte Anwendung registriert einen Listener ( javax.management.NotificationListener) beim MBeanServer. Beachten Sie, dass JMX nicht garantiert, dass die Listener alle Benachrichtigungen empfangen. [ 8 ]

Typen

Es gibt zwei grundlegende Arten von MBeans:

  • Standard MBeans implementieren eine Geschäftsschnittstelle, die Setter und Getter für die Attribute und die Operationen (d. h. Methoden) enthält.
  • Dynamische MBeans implementieren die javax.management.DynamicMBeanSchnittstelle, die eine Möglichkeit bietet, die Attribute und Operationen aufzulisten sowie die Attributwerte abzurufen und festzulegen.

Weitere Typen sind Open MBeans , Model MBeans und Monitor MBeans . Open MBeans sind dynamische MBeans, die auf den grundlegenden Datentypen basieren. Sie sind selbsterklärend und benutzerfreundlicher. Model MBeans sind ebenfalls dynamische MBeans, die zur Laufzeit konfiguriert werden können. Für die dynamische Konfiguration der Ressourcen während der Programmlaufzeit steht außerdem eine generische MBean-Klasse zur Verfügung.

Ein MXBean ( Platform MBean ) ist ein spezieller MBean-Typ, der Subsysteme der Java Virtual Machine wie Garbage Collection , JIT-Kompilierung , Speicherpools , Multithreading usw. reifiziert .

Ein MLet ( Management-Applet ) ist ein Hilfs-MBean zum Laden, Instanziieren und Registrieren von MBeans in einem MBeanServer anhand einer XML- Beschreibung. Das Format des XML-Deskriptors ist: [ 9 ]

<MLET CODE = ''class'' | OBJECT = ''serfile'' ARCHIV = ''archiveList'' [CODEBASE = ''codebaseURL''] [NAME = ''objectName''] [VERSION = ''version''] > [arglist] </MLET> 

Unterstützung

JMX wird von verschiedenen Anbietern auf unterschiedlichem Niveau unterstützt:

Siehe auch

Referenzen

Further reading

Articles

Books

  • Benjamin G Sullins, Mark B Whipple : JMX in Action: You will also get your first JMX application up and running, Manning Publications Co. 2002, ISBN 1-930110-56-1
  • J. Steven Perry: Java Management Extensions, O'Reilly, ISBN 0-596-00245-9
  • Jeff Hanson: Connecting JMX Clients and Servers: Understanding the Java Management Extensions, APress L. P., ISBN 1-59059-101-1
  • Marc Fleury, Juha Lindfors: JMX: Managing J2EE with Java Management Extensions, Sams Publishing, ISBN 0-672-32288-9