2012-04-26 16 views
33

Używam aplikacji Java na maszynie Java 6 VM na zdalnym systemie Windows XP, na którym mogę uruchomić plik jvisualvm.exe, aby automatycznie połączyć się z działającą aplikacją.Jak znaleźć domyślny numer portu JMX?

Teraz potrzebuję połączyć tę aplikację z mojego komputera lokalnego, ale nie wiem numer portu JMX na komputerze zdalnym. Gdzie mogę to znaleźć? Lub czy muszę ponownie uruchomić tę aplikację z niektórymi parametrami VM, aby określić numer portu?

Po przeczytaniu pytanie How to find the JMX port in a server, wykonałem polecenie na komputerze zdalnym

netstat -apn 

ale nie ma nic.

+0

możliwy duplikat [Jak aktywować JMX na mojej maszynie JVM w celu uzyskania dostępu za pomocą jconsole?] (Http://stackoverflow.com/questions/856881/how-to-activate-jmx-on-my-jvm-for-access -with-jconsole) – artbristol

Odpowiedz

44

Domyślnie JMX nie publikuje na porcie, chyba że podasz argumenty z tej strony: 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 

jeśli używasz powinny być w stanie uzyskać dostęp do którejkolwiek z tych właściwości systemu, aby zobaczyć, czy mają ustalono:

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

Tak na marginesie, mój SimpleJMX package pozwala definiować zarówno JMX server i RMI port lub ustawić ich obu do tego samego portu. Powyższy port zdefiniowany pod numerem com.sun.management.jmxremote.port jest w rzeczywistości portem RMI. To powie klientowi, z jakiego portu działa serwer JMX.

+4

Tęskniłeś za '-Dcom.sun.management.jmxremote.ssl = false' i' -Djava.rmi.server.hostname = ' – Claudio

+0

Żadne z nich nie jest wymagane co najmniej @Claudio do wersji Java 7. – Gray

+2

Nie z mojego doświadczenia. Używam Java 7 na Linux CentOS 6. Znalazłem twoją odpowiedź i nie zadziałało. Na szczęście dostałeś również link do oryginalnej odpowiedzi i dodano te flagi, które zaczęły działać. Nie mam pojęcia, która z nich była rzeczywiście potrzebna i dlaczego. – Claudio