2011-02-24 16 views
13

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

Respuesta

8

'Llamada a procedimiento remoto' es un concepto de computación distribuida donde 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.

MBeans son clases de beans que se pueden registrar con un bus JMX para escuchar eventos que llegan al bus o para enviar eventos en el bus o para recopilar diversos tipos de datos de los otros Mbeans participantes, etc. para monitorear la salud de los servidores de aplicaciones, etc. Puede verificar el número de conexiones activas, la cantidad de memoria libre y muchas otras estadísticas para un motor de análisis. Y sí, pueden invocarse de forma remota utilizando un mecanismo RPC. Esto es vital para su funcionamiento como recopiladores de datos, ya que en un conjunto de servidores de aplicaciones, los datos deben ser extraídos de todos los recopiladores y recopilados en un lugar para su análisis.

+0

Gracias por la respuesta.Una pregunta más relacionada, ¿no podemos usar RMI para el mismo propósito? – hnm

+2

@hnm: RMI se ocupa de llamar a un método de forma remota y nada más que eso. es decir, le da una clase stub que serializa los parámetros de entrada, codifica la llamada como datos, envía los datos a través del cable, donde una entidad del lado del servidor llamada el esqueleto obtiene los datos, decodifica para entender qué método debe invocarse clase en el proceso del lado del servidor y realiza la llamada. Una vez que se completa la llamada, los parámetros de salida o excepciones son serializados por el esqueleto y enviados de vuelta al talón, que una vez más lo deserializa para devolverlo al programa de llamada. Es solo un mecanismo para llamadas remotas. – rahulmohan

+0

@hnm: (continuación) Los MBeans son las clases especiales que interactúan con la aplicación que se está supervisando y proporcionan métodos para recuperar los datos. Esos métodos pueden llamarse teoríticamente usando RMI. Pero el mecanismo JMX proporciona una forma mucho más agradable de hacer lo mismo. – rahulmohan

5

JMX es una API genérica para la publicación de una interfaz para controlar el funcionamiento interno de una aplicación Java (una versión Java de SNMP).

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

14

JMX architecture.

Sí en JMX Registramos nuestros objetos en el servidor utilizando la mbean ObjectName y objectReference. A continuación, podemos cambiar los atributos o invocar métodos de forma remota.

Un conector hace que un servidor MBean la tecnología Java Management Extensions (JMX) accesible a Java a distancia basados ​​en la tecnología clients.Many diferentes implementaciones de conectores son posibles. En particular, hay muchas posibilidades de que el protocolo utilizado para comunicarse a través de una conexión entre el cliente y Conectores server.Some definido por la especificación API remota JMX son

  • "RMI Conector": Este estándar (Remote Method Invocation RMI) debe ser compatible con cada implementación que se ajuste al estándar JMX Remote API.
  • "Conector genérico": el estándar JMX Remote API también define un protocolo opcional basado directamente en sockets TCP, denominado JMX Messaging Protocol (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 nos fijamos en la arquitectura por encima de un conector proporciona acceso remoto completo a la API MBeanServer utilizando diversos marcos de comunicación (RMI, IIOP, JMS, WS-* …), mientras que un adaptador se adapta a la API a otro protocolo (SNMP, …) o basada en la Web GUI (HTML/HTTP, WML/HTTP, …).

en general, utilizamos conectores JMX para conectarse al servidor MBean pero podemos elegir otros conectores también.

En resumen, JMX es una tecnología Java y RMI es para Invocación de método remoto, una implementación específica de Java de una interfaz de llamada a procedimiento remoto que se puede utilizar en el JMX para comunicarse de forma remota.

+0

Esto es mucho mejor que la respuesta aceptada ... –