本文共 917 字,大约阅读时间需要 3 分钟。
最近用了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 & 不过该方式有个局限,其他机器肯定能识别ip,但是可能无法识别hostname。 当然,你也可以直接写死这个hostname,比如:-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx。 这样最省力,就是少点灵活性. |
转载地址:http://npgmb.baihongyu.com/