我正在尝试使用Oracle Java Mission控件来分析Java Spring应用程序。
我将JVM连接配置为:localhost:7091
我用java -Dcom.sun.management.jmxremote.rmi.port=7091 -jar app.jar
启动了应用程序。
当我尝试启动飞行记录仪时,我收到一条错误消息。
Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused: connect]
Could not connect to a JVM at service:jmx:rmi:///jndi/rmi://localhost:7091/jmxrmi. Make sure one is running and that you are using the correct protocol in the Service URL.
有谁知道这个错误的原因是什么?
答案 0 :(得分:2)
您可以尝试使用自动发现。然后连接将在JMC中自动显示
-Dcom.sun.management.jmxremote.autodiscovery =真
您也可以为连接命名,以便轻松识别。
-Dcom.sun.management.jdp.name =应用
并禁用安全性
-Dcom.sun.management.jmxremote.authenticate =假
-Dcom.sun.management.jmxremote.ssl =假
答案 1 :(得分:0)
我遇到了这个问题。我已经在Windows Server 2016上安装了JDK10。我希望使用JMC和JVM在同一服务器上进行监视。
上线时,我们将IP从临时IP切换到了实时IP。但是,JMC将localhost
解析为原始IP。同样,在指定服务器的当前IP时,JMC会将其解析为原始IP。
将-Djava.rmi.server.hostname=localhost
添加到我要监视的Java进程中,解决了该问题。
但是,我仍然想知道为什么JMC(或RMI)仍然无法正确解析。