0

我已经设置了一个 Java 应用程序以启用 JMX

-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote

我还设置了必要的属性文件

java/jre/lib/management/management.properties

com.sun.management.jmxremote.port=9999
com.sun.management.jmxremote.authenticate=true
com.sun.management.jmxremote.ssl=false

jmxremote.access

monitorRole readonly
controlRole readwrite

jmxremote.password

monitorRole QED
controlRole R&D

在我启动应用程序并尝试连接后

jconsole localhost:9999

我收到消息:连接失败:连接被拒绝:连接当我重试时,输入凭据 monitorRole:QED,它给出了相同的消息。

如果我重复上述步骤,但关闭身份验证,我可以正常连接。

com.sun.management.jmxremote.authenticate=false

是什么导致身份验证拒绝我的连接?

4

1 回答 1

0

可能的原因是您的密码文件没有被读保护。它需要使只有用户能够阅读其内容。可以使用以下方法实现这一目标:

chmod 600 pwd.file.name

或者在你的情况下

chmod 600 jmxremote.access

如果您尝试使用未受读保护的文件运行应用程序并且

com.sun.management.jmxremote.authenticate=true

但是请注意,在某些情况下,当将密码文件发送到远程位置(例如推送到 git 远程)时,您为其分配的访问权限可能会被重置,因此您可能必须远程设置它们。

于 2015-01-28T07:20:20.667 回答