我目前正在使用com.sun.management.jmxremote.*属性启动我的Java VM,以便我可以通过JConsole连接到它以进行管理和监视.不幸的是,它会侦听机器上的所有接口(IP地址).
在我们的环境中,通常情况下,同时在一台机器上运行多个Java VM.虽然可以告诉JMX监听不同的TCP端口(使用com.sun.management.jmxremote.port),但最好让JMX使用标准的JMX端口并绑定到特定的IP地址(而不是所有的IP地址).
这样可以更容易地找出我们通过JConsole连接到哪个VM(因为每个VM有效地"拥有"自己的IP地址).有没有人想出如何让JMX监听单个IP地址或主机名?
我编写了一个应该由JMX客户端控制的批处理Java 7应用程序.JMX服务已启动并正在运行,我可以使用我机器上的jConsole连接到它.
我设置选项-Dcom.sun.management.jmxremote.local.only = true以避免除127.0.0.1之外的任何传入连接.
但是......当我尝试从另一台计算机连接时,我的连接没有被过滤掉,我能够远程访问JMX.
这是java调用:
java -Dcom.sun.management.jmxremote ^
-Dcom.sun.management.jmxremote.port=7000 ^
-Dcom.sun.management.jmxremote.local.only=true ^
-Dcom.sun.management.jmxremote.authenticate=false ^
-Dcom.sun.management.jmxremote.ssl=false ^
-cp lib/*;hns-consumer.jar it.andrearota.com.Main %1
Run Code Online (Sandbox Code Playgroud)
看起来没有考虑该选项.
有帮助吗?