java - 是否可以通过编程方式启用远程 jmx 监控?

标签 java multiprocessing monitoring jmx

我需要以编程方式启动一个新的 java 进程并动态设置 JMX 端口。 所以不要这样做

-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=9995 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

我想做以下事情

System.setProperty("java.rmi.server.hostname", "127.0.0.1" );
System.setProperty("com.sun.management.jmxremote", "true" );
System.setProperty("com.sun.management.jmxremote.authenticate", "false" );
System.setProperty("com.sun.management.jmxremote.ssl", "false" );
System.setProperty("com.sun.management.jmxremote.port", "9995"  );

但它不起作用。知道为什么吗?

最佳答案

当您的代码被调用时,您已经错过了配置 jmxremote 连接器的机会。

您需要做的是创建您自己的 rmi 注册表和一个 JMXConnectorServer 来监听 rmi 调用并将它们传递给 MBeanServer。

private void createJmxConnectorServer() throws IOException {
    LocateRegistry.createRegistry(1234);
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://localhost/jndi/rmi://localhost:1234/jmxrmi");
    JMXConnectorServer svr = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
    svr.start();
}

关于java - 是否可以通过编程方式启用远程 jmx 监控?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27508185/

相关文章:

Java监视器实现

Java/抽象语法树到 XML 表示

java - Apache commons-csv 错误(带引号)

java - 使用动态引用调用方法

python 3 : does Pool keep the original order of data passed to map?

Python 多处理 : sharing data between processes

Java同步以避免ConcurrentModificationExceptions?

c - "if (pid = fork() > 0)"- 为什么 fork() 返回 pid 1 (systemd)?

java:有哪些库可以管理/监控进程?

java - 有什么方法可以监控 Java 应用程序的功能流程吗?