Spring的RMI连接问题
RMI 问题 1 背景:
??? < bean id = "rmiService" class = "org.springframework.remoting.rmi.RmiServiceExporter" >
??????? < property name = "serviceName" value = "IncomingService" />
??????? < property name = "service" ref = "incomingService" />
??????? < property name = "serviceInterface" value = "com.ffcs.ieiemp.ieie.rmi.Incoming" />
??????? < property name = "registryPort" value = "1099" />
</ bean >
替换为:
??? <bean id="registry" value="1099"/>
??? </bean>
??? < bean id = "incomingService" class = "com.ffcs.ieiemp.ieie.rmi.IncomingService" />
??? < bean id = "rmiService" class = "org.springframework.remoting.rmi.RmiServiceExporter" >
??????? < property name = "serviceName" value = "IncomingService" />
??????? < property name = "service" ref = "incomingService" />
??????? < property name = "serviceInterface" value = "com.ffcs.ieiemp.ieie.rmi.Incoming" />
??????? <!-- <property name="registryPort" value="1099"/> -->
??????? <property name="registry" ref="registry"/>
</ bean >
?
RMI 问题 2 背景:
这就是典型的服务器有多个 ip 引起的 rmi 连接问题。
RMI 问题 3 解决:
???????? 解决方法有三:
1.?????? 服务器端添加代码: System.setProperty("java.rmi.server.hostname" ,?"192.168.39.11" );
可写在全局监听器里成为全局变量。
2.? 在 RMI 服务器上 root 身份登录,输入 Vi /etc/hosts ,在第一行添加 192.168.39.11 ? ? ieie
3.? 若是用 spring, 则在 RmiServiceExporter 中添加属性 <property?name="registryHost" ?value="192.168.39.11" />
总结 :RMI固然好用,但得慎用,以上问题困扰甚久,终得解决:)