Java Management Extensions ( JMX ) es una tecnología Java que proporciona herramientas para gestionar y supervisar aplicaciones , objetos del sistema, dispositivos (como impresoras ) y redes orientadas a servicios. Estos recursos están representados por objetos llamados MBeans (por Managed Bean ). En la API, las clases se pueden cargar e instanciar dinámicamente. La gestión y supervisión de aplicaciones se puede diseñar y desarrollar utilizando el Java Dynamic Management Kit. [1]
JSR 003 [2] del Java Community Process definió JMX 1.0, 1.1 y 1.2. JMX 2.0 se estaba desarrollando bajo JSR 255, pero este JSR fue retirado posteriormente. [3] La API remota JMX 1.0 para administración y monitoreo remotos está especificada por JSR 160. [4] Una extensión de la API remota JMX para servicios web se estaba desarrollando bajo JSR 262. [5]
Adoptado tempranamente por la comunidad J2EE , JMX ha sido parte de J2SE desde la versión 5.0. "JMX" es una marca comercial de Oracle Corporation .
Arquitectura
JMX utiliza una arquitectura de tres niveles:
El nivel de sonda , también llamado nivel de instrumentación , contiene las sondas (llamadas MBeans) que instrumentan los recursos.
El nivel de agente , o MBeanServer, es el núcleo de JMX y actúa como intermediario entre el MBean y las aplicaciones.
El nivel de administración remota permite que las aplicaciones remotas accedan a MBeanServer a través de conectores y adaptadores. Un conector proporciona acceso remoto completo a la API de MBeanServer mediante diversas comunicaciones ( RMI , IIOP , JMS , WS-*, etc.), mientras que un adaptador adapta la API a otro protocolo ( SNMP , etc.) o a una interfaz gráfica de usuario basada en Web ( HTML / HTTP , WML / HTTP , etc.).
Las aplicaciones pueden ser consolas genéricas (como JConsole [6] y MC4J [7] ) o aplicaciones específicas de dominio (monitoreo). Las aplicaciones externas pueden interactuar con los MBeans mediante el uso de conectores JMX y adaptadores de protocolo. Los conectores sirven para conectar un agente con una aplicación de administración remota habilitada para JMX. Esta forma de comunicación implica un conector en el agente JMX y un cliente de conector en la aplicación de administración.
Los adaptadores de protocolo proporcionan una vista de administración del agente JMX a través de un protocolo determinado. Las aplicaciones de administración que se conectan a un adaptador de protocolo suelen ser específicas del protocolo en cuestión.
Frijoles gestionados
Un bean administrado , a veces denominado simplemente MBean , es un tipo de JavaBean creado con inyección de dependencia . Los beans administrados se utilizan particularmente en la tecnología Java Management Extensions, pero con Java EE 6 la especificación proporciona un significado más detallado de un bean administrado.
El MBean representa un recurso que se ejecuta en la máquina virtual Java , como una aplicación o un servicio técnico Java EE (monitor transaccional, controlador JDBC, etc.). Se pueden utilizar para recopilar estadísticas sobre cuestiones como el rendimiento, el uso de recursos o los problemas (pull); para obtener y establecer configuraciones o propiedades de la aplicación (push/pull); y para notificar eventos como fallas o cambios de estado (push).
Java EE 6 establece que un bean administrado es un bean implementado por una clase Java, que se denomina su clase bean. Una clase Java de nivel superior es un bean administrado si está definida como tal por cualquier otra especificación tecnológica Java EE (por ejemplo, la especificación tecnológica JavaServer Faces ) o si cumple todas las siguientes condiciones:
No es una clase interna no estática.
Es una clase concreta, o está anotada @Decorator.
No está anotado con una anotación que defina un componente EJB ni se declara como una clase de bean EJB en ejb-jar.xml.
No se requiere ninguna declaración especial, como una anotación, para definir un bean administrado.
Un MBean puede notificar al MBeanServer de sus cambios internos (para los atributos) mediante la implementación de javax.management.NotificationEmitter. La aplicación interesada en los cambios del MBean registra un receptor ( javax.management.NotificationListener) en el MBeanServer. Tenga en cuenta que JMX no garantiza que los receptores recibirán todas las notificaciones. [8]
Tipos
Hay dos tipos básicos de MBean:
Los MBeans estándar implementan una interfaz empresarial que contiene establecedores y captadores para los atributos y las operaciones (es decir, métodos).
Los MBeans dinámicos implementan la javax.management.DynamicMBeaninterfaz que proporciona una manera de enumerar los atributos y las operaciones, y de obtener y establecer los valores de los atributos.
Los tipos adicionales son Open MBeans , Model MBeans y Monitor MBeans . Los Open MBeans son MBeans dinámicos que se basan en los tipos de datos básicos. Se explican por sí solos y son más fáciles de usar. Los Model MBeans son MBeans dinámicos que se pueden configurar durante el tiempo de ejecución. También se proporciona una clase MBean genérica para configurar dinámicamente los recursos durante el tiempo de ejecución del programa.
Un MLet ( Applet de administración ) es un MBean de utilidad para cargar, instanciar y registrar MBeans en un MBeanServer a partir de una descripción XML . El formato del descriptor XML es: [9]
MX4J [2] es JMX de código abierto para informática empresarial.
jManage [3] Archivado el 3 de agosto de 2020 en Wayback Machine es una consola JMX de nivel empresarial de código abierto con interfaces web y de línea de comandos.
MC4J [4] es una consola visual de código abierto para conectarse a servidores compatibles con JMX
snmpAdaptor4j [5] es un código abierto que proporciona un acceso simple a MBeans a través del protocolo SNMP.
jvmtop es una herramienta de monitoreo JMX liviana y de código abierto para la línea de comandos
Prometheus puede ingerir datos JMX a través del exportador JMX [14] que expone métricas en formato Prometheus.
Jolokia es una aplicación j2ee que expone JMX a través de HTTP.
^ "Descripción general del kit de administración dinámica de Java". docs.oracle.com . Consultado el 12 de enero de 2021 .
^ JSR 003: Especificación de extensiones de administración de JavaTM (JMXTM)
^ JSR 255: Especificación de extensiones de administración de JavaTM (JMXTM), versión 2.0
^ JSR 160: API remota de extensiones de administración de JavaTM (JMX)
^
JSR 262: Conector de servicios web para agentes de extensiones de administración de Java (JMX)
^ Uso de JConsole para monitorear aplicaciones
^ "El proyecto MC4J crea software de gestión para servidores de aplicaciones J2EE y otras aplicaciones Java". Archivado desde el original el 23 de marzo de 2007. Consultado el 27 de agosto de 2006 .
^ Extensiones de administración de Java (JMX): mejores prácticas
^ "MLet (plataforma Java 2 SE 5.0)". Microsistemas solares . Consultado el 22 de junio de 2008 .
^ UnboundID Corp. Archivado el 6 de marzo de 2012 en Wayback Machine.
^ "Inicio".
^ "Recopilación de datos JMX". www.logicmonitor.com . Consultado el 20 de noviembre de 2020 .
^ Apache Tomcat 6.0: Monitoreo y administración de Tomcat (manual de Tomcat)
^ "Exportador JMX". GitHub . 14 de febrero de 2022.
Lectura adicional
Artículos
"Habilitación de arquitecturas de componentes con JMX" por Marc Fleury y Juha Lindfors
"Presentación de una nueva API de gestión J2EE independiente del proveedor" por Andreas Schaefer
"Java en el ámbito de la gestión" por Max Goff 1999
"Administre sus aplicaciones compatibles con JMX con jManage 1.0" por Rakesh Kalra 16 de enero de 2006
"Administración de sistemas J2EE con JMX y JUnit Archivado el 26 de mayo de 2008 en Wayback Machine " por Lucas McGregor
Descripción general de la supervisión y la gestión de Sun Java
Tutorial de Java EE 6: Acerca de los beans administrados
Libros
Benjamin G Sullins, Mark B Whipple: JMX en acción: también podrá poner en funcionamiento su primera aplicación JMX , Manning Publications Co. 2002, ISBN 1-930110-56-1
J. Steven Perry: Extensiones de gestión de Java , O'Reilly, ISBN 0-596-00245-9
Jeff Hanson : Conexión de clientes y servidores JMX: comprensión de las extensiones de administración de Java , APress LP, ISBN 1-59059-101-1
Marc Fleury , Juha Lindfors: JMX: Gestión de J2EE con extensiones de gestión de Java , Sams Publishing, ISBN 0-672-32288-9