2012-04-26 24 views
33

Estoy ejecutando una aplicación Java en Java 6 VM en un Windows XP remoto, en el que puedo ejecutar jvisualvm.exe para conectarme a la aplicación en ejecución automáticamente.¿Cómo encontrar el número de puerto JMX predeterminado?

Ahora necesito conectar esa aplicación desde mi computadora local, pero no conozco el número de puerto JMX de la computadora remota. ¿Dónde puedo encontrarlo? O, ¿debo reiniciar esa aplicación con algunos parámetros de VM para especificar el número de puerto?

Después de leer la pregunta How to find the JMX port in a server, ejecuté el comando en el equipo remoto

netstat -apn 

pero no tengo nada.

+0

posible duplicado de [¿Cómo activar JMX en mi JVM para acceder con jconsole?] (Http://stackoverflow.com/questions/856881/how-to-activate-jmx-on-my-jvm-for-access -with-jconsole) – artbristol

Respuesta

44

Por defecto JMX no publica en un puerto a menos que especifique los argumentos de esta página: How to activate JMX...

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9010 
-Dcom.sun.management.jmxremote.local.only=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Si está ejecutando debe ser capaz de acceder a cualquiera de esas propiedades del sistema para ver si tienen ha establecido:

if (System.getProperty("com.sun.management.jmxremote") == null) { 
    System.out.println("JMX remote is disabled"); 
} else [ 
    String portString = System.getProperty("com.sun.management.jmxremote.port"); 
    if (portString != null) { 
     System.out.println("JMX running on port " 
      + Integer.parseInt(portString)); 
    } 
} 

Como acotación al margen, mi SimpleJMX package le permite definir tanto el JMX server y la RMI port o configurar los dos al mismo puerto. El puerto anterior definido con com.sun.management.jmxremote.port es realmente el puerto RMI. Esto le dice al cliente en qué puerto se está ejecutando el servidor JMX.

+4

Ha fallado '-Dcom.sun.management.jmxremote.ssl = false' y' -Djava.rmi.server.hostname = ' – Claudio

+0

Ninguno de estos son necesarios @Claudio hasta Java 7 como mínimo. – Gray

+2

No en mi experiencia. Estoy ejecutando Java 7 en Linux CentOS 6. Encontré tu respuesta, y no funcionó. Afortunadamente, también proporcionó el enlace a la respuesta original y agregó esas banderas que comenzó a funcionar. No tenía idea de cuál era realmente necesario y por qué. – Claudio

Cuestiones relacionadas