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 verwendet eine dreistufige Architektur:
- Die Probe- Ebene – auch Instrumentierungsebene genannt – enthält die Probes ( MBeans genannt ), die die Ressourcen instrumentieren.
- Die Agentenebene oder der MBeanServer – das Herzstück von JMX. Er fungiert als Vermittler zwischen dem MBean und den Anwendungen.
- 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:
- Es handelt sich nicht um eine nicht-statische innere Klasse .
- Es handelt sich um eine konkrete Klasse oder sie ist annotiert
@Decorator. - 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:
- JMX wird von Java -Anwendungsservern wie OpenCloud Rhino Application Server [1] , JBoss , JOnAS, WebSphere Application Server , WebLogic , SAP NetWeaver Application Server , Oracle Application Server 10g und Sun Java System Application Server unterstützt .
- JMX wird vom UnboundID Directory Server, Directory Proxy Server und Synchronization Server unterstützt. [ 10 ]
- Zu den Systemverwaltungstools , die das Protokoll unterstützen, gehören Empirix OneSight, GroundWork Monitor, Hyperic , HP OpenView , IBM Director , ITRS Geneos, Nimsoft NMS , OpenNMS , [ 11 ] Zabbix , Zenoss Core und Zyrion, SolarWinds , Uptime Infrastructure Monitor und LogicMonitor. [ 12 ]
- JMX wird auch von Servlet-Containern wie Apache Tomcat [ 13 ] und Jetty (Webserver) unterstützt .
- MX4J [2] ist Open Source JMX für Enterprise Computing.
- jManage [3] Archiviert 2020-08-03 bei der Wayback Machine ist eine Open-Source-JMX-Konsole der Enterprise-Klasse mit Web- und Befehlszeilenschnittstellen.
- MC4J [4] ist eine Open-Source-visuelle Konsole zur Verbindung mit Servern, die JMX unterstützen.
- snmpAdaptor4j [5] ist eine Open-Source-Lösung, die einen einfachen Zugriff auf MBeans über das SNMP-Protokoll ermöglicht.
- jvmtop ist ein leichtgewichtiges Open-Source-JMX-Überwachungstool für die Kommandozeile.
- Prometheus kann JMX-Daten über den JMX-Exporter [ 14 ] aufnehmen, der Metriken im Prometheus-Format bereitstellt.
- Der On-Host-Infrastrukturagent von New Relic sammelt JMX-Daten [ 15 ] , die in verschiedenen Diagrammen im Dashboard der Observability- Plattform angezeigt werden. [ 16 ] [ 17 ]
- Jolokia ist ein Java-Agent, der JMX über HTTP bereitstellt, um den Zugriff von Nicht-Java-Systemen aus zu vereinfachen.
Siehe auch
Referenzen
- ^ „Übersicht über das Java Dynamic Management Kit“ . docs.oracle.com . Abgerufen am 12. Januar 2021 .
- ^ JSR 003: Java™ Management Extensions (JMX™) Spezifikation
- ^ JSR 255: JavaTM Management Extensions (JMXTM) Spezifikation, Version 2.0
- ^ JSR 160: Java™ Management Extensions (JMX) Remote API
- ^ JSR 262: Web Services Connector für Java Management Extensions (JMX) Agents
- ^ Verwendung von JConsole zur Überwachung von Anwendungen
- ^ „Das MC4J-Projekt entwickelt Managementsoftware für J2EE-Anwendungsserver und andere Java-Anwendungen .“ Archiviert vom Original am 23.03.2007 . Abgerufen am 27.08.2006 .
- ^ Java Management Extensions (JMX) – Bewährte Verfahren
- ^ „MLet (Java 2 Platform SE 5.0)“ . Sun Microsystems . Abgerufen am 22.06.2008 .
- ^ UnboundID Corp. Archiviert am 06.03.2012 im Internet Archive.
- ^ "Startseite" .
- ^ „JMX-Datenerfassung“ . www.logicmonitor.com . Abgerufen am 20.11.2020 .
- ^ Apache Tomcat 6.0: Überwachung und Verwaltung von Tomcat (Tomcat-Handbuch)
- ^ "JMX Exporter" . GitHub . 14. Februar 2022.
- ^"JMX monitoring integration | New Relic Documentation". docs.newrelic.com. Retrieved 2025-01-13.
- ^"JVMs page (Java): View app server metrics from JMX | New Relic Documentation". docs.newrelic.com. Retrieved 2025-01-13.
- ^"Introduction to New Relic for Java | New Relic Documentation". docs.newrelic.com. Retrieved 2025-01-13.
Further reading
Articles
- "Enabling Component Architectures with JMX" by Marc Fleury and Juha Lindfors - Archived 2005-12-07 at the Wayback Machine
- "Introducing A New Vendor-Neutral J2EE Management API" by Andreas Schaefer - Archived 2002-04-08 at the Wayback Machine
- "Java in the management sphere" by Max Goff 1999
- JMX/JBoss – The microkernel design
- "Manage your JMX-enabled applications with jManage 1.0" by Rakesh Kalra Jan 16, 2006
- "Managing J2EE Systems with JMX and JUnitArchived 2008-05-26 at the Wayback Machine" by Lucas McGregor
- Sun Java Overview of Monitoring and Management
- The Java EE 6 Tutorial: About managed beans
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
External links
- JMX 1.4 (JMX 1.4, part of Java 6)
- JMX at JBoss.com
- JMX on www.oracle.com
- JSR 255 (JMX 2.0)
- JSR 3 (JMX 1.0, 1.1, and 1.2)