当Java应用程序启用JMX并将端口设置为0时,将动态分配一个端口。
-Dcom.sun.management.jmxremote.port=0
如何最好地查找已分配的端口?我在Solaris上使用ps和pfiles找到了它,希望能有更简单的方法查找(以编程方式)。
另外,是否有更好的方法为同一台计算机上的Java应用程序分配动态JMX端口并跟踪它们?
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);