遠程JMX訪問拒絕:Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested


java.net.ConnectException: Connection refused: connect  
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:   
    java.net.ConnectException: Connection refused: connect  
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)  
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)  
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)  
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)  
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)  
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)  
    at $Proxy0.getAllSections(Unknown Source)  
    at ccg.boccrawler.rmi.TestClient.main(TestClient.java:21) 

網上常見的解決如下:但是我都不推薦

  • 方案1 :/etc/hosts 里的 127.0.0.1 修改為實際的 IP 地址(這種方法可能會導致有些應用不能用,不推薦)

原因:JMX的connector server的stub會用'hostname -i'的IP地址作為connector sesrver的IP地址,所以在linux上,如果hosts中的地址設置不正確,用'hostname -i'得到的是IP '127.0.0.1'時,遠程JMX連接就會失敗。
在機器A上執行 hostname –i ,結果是 機器A的IP地址
在機器B上執行hostname –i ,結果是 127.0.0.1

修改機器B的/etc/hosts文件, 把127.0.0.1 hostnameB 修改為
機器B的IP地址 hostnameB

這樣導致我activemq起不來

  • 方法2:先在 /etc/hosts 里添加一行,然后修改 /etc/sysconfig/network 文件里面的 HOSTNAME

如你的 hosts 文件原來內容

[root@test132 /]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

機器的實際 IP 為192.168.134.132,則可以添加以下內容

192.168.134.132 test132 localhost

然后修改 /etc/sysconfig/network 文件的 HOSTNAME=test,則可以訪問成功。

[root@test132 /]# vim /etc/sysconfig/network

# Created by anaconda
HOSTNAME=test132

然后查閱資料 推薦這種。

ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.144"

再后面加上ip,就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM