有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以通过编程方式启用远程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"  );

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


共 (1) 个答案

  1. # 1 楼答案

    在调用代码时,您已经错过了配置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();
    }