java-ee jmx java

java ee - Diferencia entre JMX y RMI



java-ee (3)

"Llamada a procedimiento remoto" es un concepto de computación distribuida en el que un proceso que se ejecuta en un host puede llamar a un procedimiento en otro host remoto. RMI en Java es una implementación de este concepto.

Los MBeans son clases de beans que se pueden registrar con un bus JMX para escuchar los eventos que llegan al bus o para enviar eventos en el bus o para recopilar varios tipos de datos de los otros Mbeans participantes, etc. servidores de aplicaciones, etc. Puede verificar el número de conexiones activas, la cantidad de memoria libre y muchas otras estadísticas a un motor de análisis. Y sí, se pueden invocar de forma remota mediante un mecanismo RPC. Esto es vital para su funcionamiento como recopiladores de datos, ya que en un grupo de servidores de aplicaciones, los datos deben obtenerse de todos los recopiladores y recopilarse en un solo lugar para su análisis.

¿Cuál es el propósito de JMX y para qué se utiliza? He estado escaneando algunos de los tutoriales en JMX y todo lo que hacen es registrar algunos Mbeans e invocar esos Mbeans desde jconsole. Si ese es su propósito, ¿cuál es la diferencia entre JMX y RMI (llamada a procedimiento remoto)?

¡Gracias por adelantado!


JMX es una API genérica para publicar una interfaz para monitorear los aspectos internos de una aplicación Java (una versión Java de SNMP).

RMI es para la Invocación a un Método Remoto, una implementación específica de Java de una interfaz de Llamada a Procedimiento Remoto, no están relacionados en absoluto.


Sí, en JMX registramos nuestros objetos en el servidor mbean usando ObjectName y objectReference . Entonces podemos cambiar los atributos o invocar métodos de forma remota.

Un conector hace que un servidor MBean de tecnología Java Management Extensions (JMX) sea accesible para clientes remotos basados ​​en tecnología Java. Muchas implementaciones diferentes de conectores son posibles. En particular, hay muchas posibilidades para el protocolo utilizado para comunicarse a través de una conexión entre el cliente y el servidor. Algunos de los conectores definidos por la especificación de API remota de JMX son

  • " Conector RMI ": este protocolo estándar de Invocación de método remoto (RMI) debe ser compatible con todas las implementaciones que cumplan con el estándar de API remota de JMX.
  • " Conector genérico ": el estándar de API remota de JMX también define un protocolo opcional basado directamente en sockets TCP, denominado Protocolo de mensajería JMX (JMXMP). Una implementación del estándar puede omitir el conector JMXMP, pero no debe omitir el conector RMI. La plataforma Java SE no incluye el conector JMXMP opcional.
  • " Protocolos definidos por el usuario ": un conector también puede implementar un protocolo que no está definido en la tecnología JMX.

Si observa la arquitectura anterior, un conector proporciona acceso remoto completo a la API de MBeanServer utilizando varios marcos de comunicación ( RMI, IIOP, JMS, WS-* … ), mientras que un adaptador adapta la API a otro protocolo (SNMP, …) o a GUI basada en web (HTML/HTTP, WML/HTTP, …).

En general, usamos conectores JMX para conectar al servidor MBean, pero también podemos elegir otros conectores.

Para resumir, JMX es una tecnología java y RMI es para la Invocación a Método Remoto una implementación específica de Java de una interfaz de Llamada a Procedimiento Remoto que se puede usar en el JMX para comunicarse de forma remota.