【发布时间】:2014-01-16 09:04:55
【问题描述】:
当我导出我的 JMX 代理以进行远程管理,并将以下参数设置为 VM 参数时
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false
它工作正常,因为我的 JMX 客户端能够轻松地在端口 9999 与 MBean 建立连接。
现在,我想通过我的配置文件在运行时设置这些属性。
我尝试通过System.setProperty("com.sun.management.jmxremote.port","9999"); 和其他类似的属性进行设置,但无济于事。
JMX 代理不会以这种方式暴露给远程管理。
我什至尝试在端口 9999 上创建一个注册表,但似乎还不够。
private void init() {
try {
LocateRegistry.createRegistry(9999);
System.setProperty("com.sun.management.jmxremote", "true");
System.setProperty("com.sun.management.jmxremote.authenticate", "false");
System.setProperty("com.sun.management.jmxremote.port", "9999");
System.setProperty("com.sun.management.jmxremote.ssl", "false");
} catch (RemoteException e) {
e.printStackTrace();
}
}
我只是不明白为什么通过 VM 参数设置这些属性有效,而不是像我上面描述的那样以编程方式设置相同的属性。
【问题讨论】:
标签: java jmx jvm-arguments