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.
La plataforma Java, edición estándar se entrega con un conector, el conector RMI , que utiliza el protocolo de método remoto de Java, que forma parte de la API de invocación de método remoto de Java . Este es el conector que utilizan la mayoría de las aplicaciones 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 de tecnología Java EE (por ejemplo, la especificación de tecnología 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 sus cambios internos (para los atributos) implementando el 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 MXBean ( Platform MBean ) es un tipo especial de MBean que reifica los subsistemas de la máquina virtual Java , como la recolección de basura , la compilación JIT , los grupos de memoria , el subprocesamiento múltiple , etc.
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]
<CÓDIGO MLET = ''clase'' | OBJETO = ''servidor'' ARCHIVO = ''listaarchivo'' [CÓDIGO BASE = ''URL de código base''] [NOMBRE = ''nombreObjeto''] [VERSIÓN = ''versión''] > [lista de argentos] </MLET>
Apoyo
JMX cuenta con soporte en varios niveles por parte de diferentes proveedores:
- JMX es compatible con servidores de aplicaciones Java como OpenCloud Rhino Application Server [1], JBoss , JOnAS, WebSphere Application Server , WebLogic , SAP NetWeaver Application Server , Oracle Application Server 10g y Sun Java System Application Server .
- JMX es compatible con el servidor de directorio UnboundID, el servidor proxy de directorio y el servidor de sincronización. [10]
- Las herramientas de gestión de sistemas que admiten el protocolo incluyen Empirix OneSight, GroundWork Monitor, Hyperic , HP OpenView , IBM Director , ITRS Geneos, Nimsoft NMS , OpenNMS , [11] Zabbix , Zenoss Core y Zyrion, SolarWinds , Uptime Infrastructure Monitor y LogicMonitor. [12]
- JMX también es compatible con contenedores de servlets como Apache Tomcat . [13] y Jetty (servidor web)
- 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.
Véase también
Referencias
- ^ "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): prácticas recomendadas
- ^ "MLet (Java 2 Platform SE 5.0)". Sun Microsystems . 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
- 20 de octubre
- 20 de noviembre
- 29 de diciembre
- JMX/JBoss – El diseño del microkernel
- "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
Enlaces externos
- JMX 1.4 (JMX 1.4, parte de Java 6)
- JMX en JBoss.com
- JMX en www.oracle.com
- JSR 255 (JMX 2.0)
- JSR 3 (JMX 1.0, 1.1 y 1.2)