Spring整合RMI的原理
客户端的核心是RmiProxyFactoryBean,包含serviceURL属性和serviceInterface属性。
通过JRMP访问服务。JRMP JRMP:java remote method protocol,Java特有的,基于流的协议。
服务端暴露远程服务
RmiServiceExporter把任何Spring管理的Bean输出成一个RMI服务。通过把Bean包装在一个适配器类中工作。适配器类被绑定到RMI注册表中,并且将请求代理给服务类。
服务端程序:
1 IHelloWorld.java POJO的接口
1. public interface IHelloWorld {
2. public String helloWorld();
3.
4. public String sayHelloToSomeBody(String someBodyName);
5. }
2 HelloWorld.java POJO的实现
1. public class HelloWorld implements IHelloWorld {
2.
3. @Override
4. public String helloWorld() {
5. return "Hello World!";
6. }
7.
8. @Override
9. public String sayHelloToSomeBody(String someBodyName) {
10. return "Hello World!" + someBodyName;
11. }
12.
13. }
3 spring配置文件rmi_server_context.xml
1. <?xml version="1.0" encoding="UTF-8"?>
2. <beans xmlns="http://www.springframework.org/schema/beans"
3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
4. xmlns:tx="http://www.springframework.org/schema/tx"
5. xsi:schemaLocation="http://www.springframework.org/schema/beans
6. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
7. http://www.springframework.org/schema/aop
8. http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
9. http://www.springframework.org/schema/tx
10. http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
11.
12. <bean id="helloWorld" class="springapp.rmi.rmi.HelloWorld" />
13.
14. <bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">
15. <property name="service" ref="helloWorld" />
16. <!-- 定义服务名 -->
17. <property name="serviceName" value="hello" />
18. <property name="serviceInterface" value="springapp.rmi.rmi.IHelloWorld" />
19. <property name="registryPort" value="8088" />
20. </bean>
21.
22. </beans>
4 服务端启动RMI的代码HelloHost.java
1. public class HelloHost {
2. public static void main(String[] args) {
3. new ClassPathXmlApplicationContext(
4. "rmi_server_context.xml");
5. "RMI服务伴随Spring的启动而启动了.....");
6. }
7. }
客户端
1 配置文件rmi_client_context.xml
1. <?xml version="1.0" encoding="UTF-8"?>
2. <beans xmlns="http://www.springframework.org/schema/beans"
3. "http://www.w3.org/2001/XMLSchema-instance"
4. "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
5. "helloWorld" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
6. "serviceUrl" value="rmi://10.87.40.141:8088/hello" />
7. "serviceInterface" value="springapp.rmi.rmi.IHelloWorld" />
8. </bean>
9. </beans>
2 客户端代码 HelloClient.java
1. public class HelloClient {
2.
3. public static void main(String[] args) throws RemoteException {
4. new ClassPathXmlApplicationContext(
5. "rmi_client_context.xml");
6. "helloWorld");
7. System.out.println(hs.helloWorld());
8. "Lavasoft"));
9. }
10.
标签:rmi,java,String,Spring,HelloWorld,helloWorld,RMI,public From: https://blog.51cto.com/u_809530/8255927