java.rmi.ConnectException: Connection refused to host: 127.0.0.1

java.rmi.ConnectException: Connection refused to host: 127.0.0.1  

 

最近用了java的rmi还是不错的,遇到的问题参考网上的文章解决的,做个记录

引自 http://hi.baidu.com/wangdefu/blog/item/4e1e041f8d5bdacaa7866987.html

可以参考Sun的资料去理解rmi http://java.sun.com/developer/onlineTraining/rmi/RMI.html

写一个rmi客户端程序,你可能会收到如标题这样的异常。这个问题其实是由rmi服务器端程序造成的。

客户端程序向服务端请求一个对象的时候,返回的stub对象里面包含了服务器的hostname,客户端的后续操作根据这个hostname来连接服务器端。要想知道这个hostname具体是什么值可以在服务器端bash中打入指令:
hostname -i

如果返回的是127.0.0.1,那么你的客户端肯定会抛如标题的异常了。

解决这个问题有两个方式:
1 修改/etc/hosts
找到127.0.0.1       hostxxxxx这样的字样。把127.0.0.1改成真实的,可供其他机器连接的ip。

这样客户端就能得到真实的ip了。

2 在rmi服务器端程序启动脚本中加上两行,显式指定hostname。我的脚本:
hostname=`hostname`

java -cp $CLASSPATH -Djava.rmi.server.codebase=$codebase -Djava.security.policy=$PROJECT_HOME/se_server/conf/se_server.policy -Djava.rmi.server.hostname=$hostname com.abc.server.StartServer > $PROJECT_HOME/se_server/logs/init.log 2>&1 &