Spring RMI 多网卡问题

今天在发布线上版本的时候发现一个rmi的异常,开始一看以为是客户端配置出错,但检查配置后发现配置无异常.


很奇怪为什么会去连接127.0.0.1,因为配置中就没有配置这一项.

找到org.springframework.remoting.rmi.RmiServiceExporter源码,找到关键导出类UnicastRemoteObject,我们做了如下测试,

这表明对象在没有注册出去的时候其IP就已经决定,当绑定以后客户端就按照此IP去查找.

这里有几个解决方案

  1. 在java Main中增加参数,即改为,java -Djava.rmi.server.hostname=192.168.1.101 Main
  2. 在初始化时增加如下代码,System.setProperty(“java.rmi.server.hostname” , “192.168.1.101” );
  3. 使用tomcat时,需要在catalina.sh最前面加入如下脚本,JAVA_OPTS=”-Djava.rmi.server.hostname=ip”

rmi在使用过程中确实很便利,但在可用性和高并发下还是有劣势,使用时候仍需要注意.

发表评论(沙发空缺中,还不快抢~)

设置头像

*