当端口为0时如何查找动态分配的JMX端口

use*_*066 5 java jmx

对于启用jmx并且端口设置为0的Java应用程序,将动态分配端口:

-Dcom.sun.management.jmxremote.port=0
Run Code Online (Sandbox Code Playgroud)

找出分配哪个端口的最佳方法是什么?我设法在Solaris上使用ps和pfiles找到了它,希望有一个更简单的原因来找到它(以编程方式)

还有没有更好的方法将动态jmx端口分配给同一框上的java应用程序并跟踪它们?

Nik*_*ski 1

这个问题在这里得到了回答

String url = sun.management.ConnectorAddressLink.importRemoteFrom(0)
        .get("sun.management.JMXConnectorServer.0.remoteAddress");
String portStr = url.substring(url.lastIndexOf(":") + 1, url.lastIndexOf("/jmxrmi"));      
int port = Integer.valueOf(portStr);
System.out.println(port);
Run Code Online (Sandbox Code Playgroud)