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

5
当Java应用程序启用JMX并将端口设置为0时,将动态分配一个端口。
-Dcom.sun.management.jmxremote.port=0

如何最好地查找已分配的端口?我在Solaris上使用ps和pfiles找到了它,希望能有更简单的方法查找(以编程方式)。

另外,是否有更好的方法为同一台计算机上的Java应用程序分配动态JMX端口并跟踪它们?


你是在谈论远程还是本地?我认为没有办法远程知道分配了哪个端口。你是在JVM内部还是在同一操作系统上但来自另一个程序? - Gray
1个回答

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接