我已经设置了一个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
什么导致身份验证拒绝我的连接?
答案 0 :(得分:0)
可能原因是您的密码文件未受到保护。它需要使得只有用户才能读取其内容。人们可以通过以下方式实现这一目标:
chmod 600 pwd.file.name
或在你的情况下
chmod 600 jmxremote.access
如果您尝试使用未受保护的文件运行应用程序并且
,您实际上应该能够看到此错误打印到命令行 com.sun.management.jmxremote.authenticate=true
但请注意,在某些情况下,将密码文件发送到远程位置(例如推送到git遥控器)时,您分配的访问权限可能会被重置,因此您可能需要远程设置它们。