(1)定义接口:
- package com.logcd.spring.rmi;
- public interface HelloService {
- public String doHello(String name);
- }
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;
- }
- }
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>
<?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>
<?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"));
- }
- }