【发布时间】:2012-10-08 10:00:15
【问题描述】:
我编写了一个应由 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
似乎尚未考虑该选项。
有什么帮助吗?
【问题讨论】:
-
如果您省略该选项,会有什么行为?根据文档,默认值为
true,仅允许本地连接,因此一开始就不需要该选项。 -
我认为设置端口可能会触发'远程'操作
-
同意@DaDaDom,这个选项的默认值应该是
true,见oracle.com/technetwork/java/javase/compatibility-417013.html -
@BrianAgnew 根据docs.oracle.com/javase/1.5.0/docs/guide/management/… 你是对的:
... setting this property publishes an additional RMI connector in a private read-only registry at the specified port using a well known name, "jmxrmi". -
@BrianAgnew 我必须设置端口,因为我想看到 JMX 注册表暴露在一个众所周知的端口上。