2011-07-26 15 views
5

Al ejecutar varias JVM en una sola máquina (también una sola dirección IP), la incorporación de JMX en cada JVM requiere un puerto diferente. Por razones que no entraré en los puertos configurados, tengo una prima en este entorno, así que me gustaría tener un solo proxy JMX en cada máquina que sea capaz de proporcionar acceso a cada una de las JVM locales y sus datos JMX. Esto sería similar a un daemon SNMP local con agentes que se ejecutan en cada proceso por separado.¿Cómo tener un solo proxy JMX para múltiples JVM?

Los puertos efímeros están bien, sin embargo, ya que están fuera del rango impugnado de puertos a los que tengo acceso para configurar JMX explícitamente.

Sé que productos como Oracle Coherence hacen esto internamente, pero ¿hay alguna solución general para hacer esto?

Respuesta

4

OpenDMK es compatible con MBeanServer Cascading que lógicamente es lo que quiere lograr, que expone múltiples MBeanServers bajo la fachada de un MBeanServer. El problema es que no existe una forma "libre de puerto" de comunicación remota JMM JMX, incluso para JVM en el mismo host, por lo que cada JVM aún necesitará vincularse a al menos 1 puerto, incluso si solo se accede a él en localhost. . (El uso de JMXMP es su mejor opción para minimizar el uso del puerto, ya que es una solución de un solo socket en lugar de RMI, que es ..... no determinista). Si puede vivir con esto, entonces la conexión en cascada realmente funciona bastante bien y el protocolo se implementa en la especificación de JMX remoto contemporáneo estándar.

La única otra forma en que puedo pensar para permitir muchos más servidores JVM/JMX que puertos reales en un host sería desarrollar un proveedor de servicios JMX Connector "sin TCP" o multidifusión.

+0

Sí, eso es justo lo que estaba buscando. De hecho, lo había encontrado de forma independiente: http://weblogs.java.net/blog/emcmanus/archive/2007/08/combining_casca.html y parece funcionar bien. Debido a que está usando puertos efímeros y no configurados, realmente funciona para mí. –

+1

Cool. También puede usar la API de conexión para buscar JVM, activar y conectarse al agente de administración (servidor JMX) en cada JVM que encuentre. Las dos API son bastante complementarias para lo que quieres hacer. Advertencia: la API adjunta no funcionará si el "buscador" no tiene privilegios del sistema operativo para señalar otra JVM) – Nicholas

+0

Sí, la API adjunta es perfecta para esto. Además, solo funciona para Sun JVMs también. –

Cuestiones relacionadas