2016-09-06 25 views
10

Podczas uruchamiania aplikacji Java z tych opcji:Podczas korzystania z serwera JMX z portem efemerycznym, jak uzyskać numer portu serwera?

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

Java używa efemeryczny portu, co jest bardzo przydatne, aby uniknąć kolizji.

Czy możliwe jest programowe pobranie rzeczywistego portu (lub adresu URL połączenia) z poziomu aplikacji?

Odpowiedz

5
String url = sun.management.ConnectorAddressLink.importRemoteFrom(0) 
      .get("sun.management.JMXConnectorServer.0.remoteAddress"); 
    System.out.println(url); 

ten wypisze URL jak

service:jmx:rmi:///jndi/rmi://hostname:57025/jmxrmi