2016-09-06 4 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); 

これは

service:jmx:rmi:///jndi/rmi://hostname:57025/jmxrmi 
のようなURLを出力します