2016-09-06 92 views
10

啓動時使用這些選項的Java應用程序:當使用帶有臨時端口的JMX服務器時,如何獲取服務器端口號?

-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使用臨時端口,這是爲了避免衝突是非常有用的。

是否可以從應用程序中以編程方式獲取實際的端口(或連接URL)?

回答

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

這將打印URL像

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