(1)定义接口:
(2)接口实现:
(3)rmi-server.xml
(4)rmi-client.xml
(5)测试
- packagecom.logcd.spring.rmi;
- publicinterfaceHelloService{
- publicStringdoHello(Stringname);
- }
package com.logcd.spring.rmi;
public interface HelloService {
public String doHello(String name);
}
(2)接口实现:
- packagecom.logcd.spring.rmi;
- publicclassHelloServiceImplimplementsHelloService{
- publicStringdoHello(Stringname){
- 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
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEbeansPUBLIC"-//SPRING/DTDBEAN/EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <beanid="helloService"class="com.logcd.spring.rmi.HelloServiceImpl"/>
- <!--RmiServiceExporter显示地支持使用RMI调用器暴露任何非RMI服务-->
- <beanid="serviceExporter"
- class="org.springframework.remoting.rmi.RmiServiceExporter">
- <propertyname="service"ref="helloService"/>
- <propertyname="serviceInterface"
- value="com.logcd.spring.rmi.HelloService"/>
- <!--定义要暴露的服务名可以与输出的bean不同名,客户端通过这个名字来调用服务-->
- <propertyname="serviceName"value="HelloService"/>
- <!--覆盖RMI注册端口号(1099),通常应用服务器也会维护RMI注册,最好不要冲突-->
- <propertyname="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
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEbeansPUBLIC"-//SPRING/DTDBEAN/EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <!--使用RmiProxyFactoryBean连接服务端-->
- <beanid="serviceProxy"
- class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
- <propertyname="serviceUrl"
- value="rmi://localhost:1199/HelloService"/>
- <propertyname="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)测试
- packagecom.logcd.spring.rmi;
- importorg.springframework.context.ApplicationContext;
- importorg.springframework.context.support.ClassPathXmlApplicationContext;
- publicclassTestSpringRMI{
- publicstaticvoidmain(Stringargs[]){
- ApplicationContextcontext=newClassPathXmlApplicationContext(
- newString[]{"rmi-server.xml","rmi-client.xml"});
- HelloServiceservice=(HelloService)context.getBean("serviceProxy");
- System.out.println(service.doHello("logcd"));
- }
- }
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"));
}
}
转自:http://log-cd.iteye.com/blog/213908
本文展示了如何使用Java RMI(Remote Method Invocation)进行远程方法调用,包括定义接口、接口实现、配置RMI服务和客户端连接过程。



2644

被折叠的 条评论
为什么被折叠?



