2012-04-26 12 views
33

Ich verwende eine Java-Anwendung auf Java 6 VM auf einem Remote-Windows XP, auf dem ich jvisualvm.exe ausführen kann, um automatisch eine Verbindung zur laufenden Anwendung herzustellen.Wie finde ich die Standard-JMX-Portnummer?

Jetzt muss ich diese Anwendung von meinem lokalen Computer verbinden, aber ich kenne die JMX-Port-Nummer des Remote-Computers nicht. Wo kann ich es finden? Oder muss ich diese Anwendung mit einigen VM-Parametern neu starten, um die Portnummer anzugeben?

Nach der Frage How to find the JMX port in a server Lesen, ausgeführt ich den Befehl auf dem Remote-Computer

netstat -apn 

bekam aber nichts.

+0

möglich Duplikat von [Wie JMX für den Zugriff mit jconsole auf meine JVM aktivieren?] (Http://stackoverflow.com/questions/856881/how-to-activate-jmx-on-my-jvm-for-access -with-jconsole) – artbristol

Antwort

44

standardmäßig JMX veröffentlichen nicht auf einem Port, wenn Sie die Argumente auf dieser Seite angeben: 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 

Wenn Sie Sie ausführen sollten eine dieser Systemeigenschaften zugreifen können, um zu sehen, wenn sie gesetzt:

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)); 
    } 
} 

Als Nebenwirkung, mein SimpleJMX package können Sie definieren, sowohl die JMX server und die RMI port oder sie beide auf den gleichen Port eingestellt. Der obige mit com.sun.management.jmxremote.port definierte Port ist eigentlich der RMI-Port. Dies teilt dem Client mit, auf welchem ​​Port der JMX-Server läuft.

+4

Sie haben '-Dcom.sun.management.jmxremote.ssl = false' und '-Djava.rmi.server.hostname = ' – Claudio

+0

verpasst. Keine davon ist @Claudio bis mindestens Java 7 erforderlich. – Gray

+2

Nicht in meiner Erfahrung. Ich benutze Java 7 auf Linux CentOS 6. Ich habe deine Antwort gefunden und es hat nicht funktioniert. Zum Glück haben Sie auch den Link zu der ursprünglichen Antwort bereitgestellt und die Flaggen hinzugefügt, mit denen sie angefangen hat zu arbeiten. Keine Ahnung, welche tatsächlich benötigt wurde und warum. – Claudio