2010-05-06 12 views
7

He seguido las instrucciones en el siguiente enlace para crear mi propio registro RMI y servidor jmx en un solo puerto dentro de tomcat. De acuerdo con los comentarios, necesito establecer -Djava.rmi.server.hostname = localhost. Una vez que hago eso, puedo conectarme a mi servidor a través de jconsole usando el reenvío de puertos ssh.Cómo conectarme de forma remota a jmx en tomcat usando tunneling ssh y no romper ehcache

http://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx

Sin embargo, he encontrado que tiene un lado muy mal afecta a la replicación de romper nuestra ehcache que utiliza RMI. No responde que no puede arrancar desde un servidor local par remoto. Supongo que todos los pares tienen su nombre de host del servidor de rmi configurado en localhost desde la configuración de -Djava.rmi.server.hostname = localhost.

¿Alguien tiene una posible solución a este problema?

Respuesta

1

Acabo de encontrarme con el problema. El problema es que la propiedad java.rmi.servername.hostname es global. Para hacer que ehcache y el servidor jmx funcionen en armonía, debe realizar algunos hacks en la máquina desde la que ejecuta VisualVM.

Esto es lo que necesita hacer. Esto se basa en usar una Mac para el cliente, así que modifique los comandos según sea necesario.

  1. Eliminar el -Djava.rmi.server.hostname = localhost.

  2. Escriba una aplicación de prueba que le dará el valor de InetAddress.getLocalHost(). GetHostAddress() en el equipo servidor que desea crear. Esto debería darte la ip local (privada si no es nativa). Tendrá que consultar esta IP en su máquina local. Use esta dirección IP donde los comandos a continuación dicen IP.

  3. Ahora, esta es la parte divertida: agregue la IP interna a su interfaz loopback en su máquina. (ifconfig lo0 máscara de red IP 255.255.255.0 arriba)

  4. Pruebe que esto en realidad dirigirá el tráfico al bucle invertido. Debería devolver el loopback. (route get IP)

  5. Iniciar el túnel SSH: ssh -C -L IP: PUERTO: localhost: PORT -L IP: OTHER_PORT: localhost: OTHER_PORT user @ host.

Observe que las IP para el túnel ssh en realidad son las que ahora están vinculadas al bucle invertido. Ya no se refiere a localhost, sino a la IP de la máquina para todo. También deberá modificar su URL JMX para referirse a esta IP en lugar de localhost.

1

Si busca una alternativa fácil de usar, amigable con firewall JMX remoto, puede valer la pena probar jmx4perl. Es un enfoque basado en agentes, que exporta JMX MBeans a través de HTTP/Rest.

Aunque su enfoque principal está dirigido para su uso en un entorno de programación (es decir, Perl) para propósitos de monitoreo, para la versión programada 0.70 se ha añadido una biblioteca cliente Java (calidad beta)

Cuestiones relacionadas