JConsole的JMX身份验证访问

时间:2013-10-17 17:47:00

标签: java authentication jmx

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

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

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

的java / JRE / LIB /管理/ 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

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

1 个答案:

答案 0 :(得分:0)

可能原因是您的密码文件未受到保护。它需要使得只有用户才能读取其内容。人们可以通过以下方式实现这一目标:

chmod 600 pwd.file.name

或在你的情况下

chmod 600 jmxremote.access

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

,您实际上应该能够看到此错误打印到命令行

com.sun.management.jmxremote.authenticate=true

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