我在一台机器上运行了16个具有相同主方法和参数的Java进程。我希望通过JConsole远程监视这些进程。
硬编码端口号,如-Dcom.sun.management.jmxremote.port=5000
是行不通的,因为这些进程使用相同的配置,无法使用相同的端口。
JVM是否可以动态地为这16个进程中的每一个选择不同的端口?
我在一台机器上运行了16个具有相同主方法和参数的Java进程。我希望通过JConsole远程监视这些进程。
硬编码端口号,如-Dcom.sun.management.jmxremote.port=5000
是行不通的,因为这些进程使用相同的配置,无法使用相同的端口。
JVM是否可以动态地为这16个进程中的每一个选择不同的端口?
使用RMI连接器可能是一种方式,因为您可以指定代理的URL。
如果需要,您可以使用以下方法编程创建RMI注册表:
java.rmi.registry.LocateRegistry.createRegistry(port);
您可能会发现以下不相关的示例有用:使用JMX穿越防火墙进行连接
我认为Oracle JVM不支持这样的功能。唯一可能起作用的是使用端口“0”,它在某些RMI相关的内容中启用了“动态”端口选择。