<bean id="messageRMIService"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName">
<value>messageService</value>
</property>
<property name="service">
<ref bean="messageService" />
</property>
<property name="serviceInterface">
<value>com.sms.sgip.service.MessageService</value>
</property>
<property name="registryPort">
<value>1200</value>
</property>
<property name="servicePort">
<value>1200</value>
</property>
</bean>
linux下启用RMI服务,需要配置servicePort端口才容易穿过防火墙。不然客户端会连接不上。
如果客户端连接出现异常:
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is
需要在程序中设置:System.setProperty("java.rmi.server.hostname", "121.14.XX.XX"); //121.14.XX.XX为出口IP
或启动时加上系统参数:
java -Djava.rmi.server.hostname=121.14.XX.XX Test
说明:linux系统使用/etc/hosts文件中localhost解析ip为127.0.0.1,当客户端向服务器Lookup时,服务端就会把解析出来的地址发给客户端,让客户端再根据这个地址去连接,客户端收到127.0.0.1这个地址,也使用/etc/hosts文件中localhost解析ip去连接,实际连接的是自己本身,当然也就不行了。所以RMI绑定需要指定出口IP。