我用 JMX 编写了 JVM 监控。我将 MBean 服务器连接与以下 url
service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi
它使用localhost工作,但我想连接其他机器 JVM,我也使用了它;
service:jmx:rmi:///jndi/rmi://OTHER_SERVER_PORT:9999/jmxrmi
它不起作用。我对此进行了研究,并且一些示例告诉将以下 JVM 选项添加到目标机器 JVM。
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
那么在哪里添加上面的 JVM 选项呢?以及如何使用 JMX 服务 url 连接其他机器 JVM?这是我的示例类
public class JMXRemote {
public static void main(String[] args) throws Exception {
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://OTHER_PC_PORT:9999/jmxrmi");
JMXConnector c = JMXConnectorFactory.connect(url);
MBeanServerConnection mbsc = c.getMBeanServerConnection();
Object o = mbsc.getAttribute(new ObjectName("java.lang:type=Memory"),
"HeapMemoryUsage");
CompositeData cd = (CompositeData) o;
System.out.println(cd.get("committed"));
}
}