remote example java jmx connect jconsole

java - example - La depuración de la conexión JConsole falló



jconsole windows (7)

Asegúrese de que está ejecutando su aplicación con el siguiente conjunto de propiedades java

-Dcom.sun.management.jmxremote.port=9005 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

Intenta conectarte ahora. Si desea depurar esto, puede ejecutar jconsole con el siguiente comando

jconsole -J-Djava.util.logging.config.file=path_to_logging.properties_for_jconsole

A continuación se muestra el contenido del archivo logging.properties

Logging.properties handlers = java.util.logging.ConsoleHandler .level = INFO java.util.logging.ConsoleHandler.level = FINEST java.util.logging.ConsoleHandler.formatter = / java.util.logging.SimpleFormatter // Use FINER or FINEST for javax.management.remote.level - FINEST is // very verbose... javax.management.level = FINEST javax.management.remote.level = FINER

Una vez que ejecute jconsole , aparecerá una ventana separada que mostrará los registros.

Tengo una aplicación web implementada en un servidor de resina remoto y tiene JMX activado.

Puedo telnet al servidor remoto es decir

franz@see:/tmp$ telnet <remote-ip> 5555 Trying <remote-ip>... Connected to <remote-ip>. Escape character is ''^]''. ��sr5javax.management.remote.message.HandshakeBeginMessage�,���6profilestLjava/lang/String;Lversionq~xppt1.0^] telnet> q Connection closed.

Pero no puedo conectarme usando mi JConsole

$JAVA_HOME/bin/java -cp $JAVA_HOME/lib/jconsole.jar:$JAVA_HOME/lib/tools.jar:pm-common/lib/jmxremote_optional-1_0_1_3.jar sun.tools.jconsole.JConsole service:jmx:jmxmp://<remote-ip>:5555

He intentado esto con las siguientes versiones de Java, pero me sale un ''Error de conexión'' en ambos casos.

## where JAVA_HOME=/opt/java/64/jdk1.5.0_22 java version "1.5.0_22" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03) Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode) ## where JAVA_HOME=/opt/java/64/jdk1.6.0_17 java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

¿Tienen alguna idea de cómo depurar esto (es decir, averiguar qué es lo que está mal)?


Encontré el mismo problema al iniciar el proceso Java a través de cygwin. JConsole no puede conectarse. Comenzó a través de win7-cmd todo funciona como se esperaba.


Estaba teniendo un problema similar de que la máquina remota estaba detrás del firewall y el firewall estaba bloqueando los puertos definidos por -Dcom.sun.management.jmxremote.port y RMI 46924 . Después de permitirme conectarme a estos puertos, me conecté con éxito.


Esto finalmente lo hizo funcionar para mí: Dando esta opción extra: -Djava.rmi.server.hostname=<ip addres where jvm is running

Por lo tanto, todos los argumentos de vm utilizados para abrir jconsole desde una máquina remota, el jvm en la máquina remota debe iniciarse con

-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=<port> -Dcom.sun.management.jmxremote -com.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<ip address>

El proceso completo está listado here


No sé si esto es útil, pero tal vez debería usar el binario jconsole en el directorio bin de JDK en lugar de usar las clases sun no documentadas (y sujetas a cambios) para iniciar la consola


Si su aplicación se ejecuta en JDK 1.6, entonces debería poder conectarlo. Si utiliza JDK antes de la versión 1.6 , ejecútelo especificando el siguiente argumento de JVM

-Dcom.sun.management.jmxremote