(1)定义接口:
(2)接口实现:
(3)rmi-server.xml
(4)rmi-client.xml
(5)测试
package com.logcd.spring.rmi;
public interface HelloService {
public String doHello(String name);
}
(2)接口实现:
package com.logcd.spring.rmi;
public class HelloServiceImpl implements HelloService{
public String doHello(String name) {
return "Hello , " + name;
}
}
(3)rmi-server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloService" class="com.logcd.spring.rmi.HelloServiceImpl"/>
<!--RmiServiceExporter显示地支持使用RMI调用器暴露任何非RMI服务-->
<bean id="serviceExporter"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="helloService"/>
<property name="serviceInterface"
value="com.logcd.spring.rmi.HelloService"/>
<!--定义要暴露的服务名可以与输出的bean不同名,客户端通过这个名字来调用服务-->
<property name="serviceName" value ="HelloService"/>
<!--覆盖RMI注册端口号(1099),通常应用服务器也会维护RMI注册,最好不要冲突-->
<property name="registryPort" value="1199"/>
</bean>
</beans>
(4)rmi-client.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--使用RmiProxyFactoryBean连接服务端-->
<bean id="serviceProxy"
class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl"
value="rmi://localhost:1199/HelloService"/>
<property name="serviceInterface"
value="com.logcd.spring.rmi.HelloService"/>
</bean>
</beans>
(5)测试
package com.logcd.spring.rmi;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestSpringRMI {
public static void main(String args[]){
ApplicationContext context= new ClassPathXmlApplicationContext(
new String[]{"rmi-server.xml","rmi-client.xml"});
HelloService service = (HelloService)context.getBean("serviceProxy");
System.out.println(service.doHello("logcd"));
}
}