Spring整合 RMI

Spring整合RMI的原理

客户端的核心是RmiProxyFactoryBean,包含serviceURL属性和serviceInterface属性。

通过JRMP访问服务。JRMP JRMP:java remote method protocol,Java特有的,基于流的协议。



 

 

服务端暴露远程服务

RmiServiceExporter把任何Spring管理的Bean输出成一个RMI服务。通过把Bean包装在一个适配器类中工作。适配器类被绑定到RMI注册表中,并且将请求代理给服务类。

 




 
 

服务端程序:

1 IHelloWorld.java POJO的接口

01.public interface IHelloWorld {  
02.    public String helloWorld();  
03.  
04.    public String sayHelloToSomeBody(String someBodyName);  
05.} 

 

2 HelloWorld.java POJO的实现

01.public class HelloWorld implements IHelloWorld {  
02.  
03.    @Override  
04.    public String helloWorld() {  
05.        return "Hello World!";  
06.    }  
07.  
08.    @Override  
09.    public String sayHelloToSomeBody(String someBodyName) {  
10.        return "Hello World!" + someBodyName;  
11.    }  
12.  
13.}

 

3 spring配置文件rmi_server_context.xml

01.<?xml version="1.0" encoding="UTF-8"?>  
02.<beans xmlns="http://www.springframework.org/schema/beans"  
03.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
04.    xmlns:tx="http://www.springframework.org/schema/tx"  
05.    xsi:schemaLocation="http://www.springframework.org/schema/beans  
06.http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
07.http://www.springframework.org/schema/aop  
08.http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
09.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

01.public class HelloHost {  
02.    public static void main(String[] args) {  
03.        ApplicationContext ctx = new ClassPathXmlApplicationContext(  
04.                "rmi_server_context.xml");  
05.        System.out.println("RMI服务伴随Spring的启动而启动了.....");  
06.    }  
07.}  

 

客户端

1 配置文件rmi_client_context.xml

01.<?xml version="1.0" encoding="UTF-8"?>  
02.<beans xmlns="http://www.springframework.org/schema/beans"  
03.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
04.    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
05.    <bean id="helloWorld" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">  
06.        <property name="serviceUrl" value="rmi://10.87.40.141:8088/hello" />  
07.        <property name="serviceInterface" value="springapp.rmi.rmi.IHelloWorld" />  
08.    </bean>  
09.</beans>  

 

2 客户端代码 HelloClient.java

01.public class HelloClient {  
02.  
03.    public static void main(String[] args) throws RemoteException {  
04.        ApplicationContext ctx = new ClassPathXmlApplicationContext(  
05.                "rmi_client_context.xml");  
06.        IHelloWorld hs = (IHelloWorld) ctx.getBean("helloWorld");  
07.        System.out.println(hs.helloWorld());  
08.        System.out.println(hs.sayHelloToSomeBody("Lavasoft"));  
09.    }  
10.  
11.}  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值