您的位置:首页 > 编程语言 > Java开发

Spring整合RMI

2015-06-26 15:17 411 查看
Spring整合RMI的原理

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

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



 

服务端暴露远程服务

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



 

服务端程序:

1 IHelloWorld.java POJO的接口

[java]
view plaincopy

public interface IHelloWorld {  
    public String helloWorld();  
  
    public String sayHelloToSomeBody(String someBodyName);  
}  

 

2 HelloWorld.java POJO的实现

[java]
view plaincopy

public class HelloWorld implements IHelloWorld {  
  
    @Override  
    public String helloWorld() {  
        return "Hello World!";  
    }  
  
    @Override  
    public String sayHelloToSomeBody(String someBodyName) {  
        return "Hello World!" + someBodyName;  
    }  
  
}  

 

3 spring配置文件rmi_server_context.xml

[xhtml]
view plaincopy

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   http://www.springframework.org/schema/aop   http://www.springframework.org/schema/aop/spring-aop-2.0.xsd   http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">     
    <bean id="helloWorld" class="springapp.rmi.rmi.HelloWorld" />  
  
    <bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">  
        <property name="service" ref="helloWorld" />  
        <!-- 定义服务名 -->  
        <property name="serviceName" value="hello" />  
        <property name="serviceInterface" value="springapp.rmi.rmi.IHelloWorld" />  
        <property name="registryPort" value="8088" />  
    </bean>  
  
</beans>  

 

4  服务端启动RMI的代码HelloHost.java

[java]
view plaincopy

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

 

 

客户端

1 配置文件rmi_client_context.xml

[java]
view plaincopy

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

 

2 客户端代码 HelloClient.java

[java]
view plaincopy

public class HelloClient {  
  
    public static void main(String[] args) throws RemoteException {  
        ApplicationContext ctx = new ClassPathXmlApplicationContext(  
                "rmi_client_context.xml");  
        IHelloWorld hs = (IHelloWorld) ctx.getBean("helloWorld");  
        System.out.println(hs.helloWorld());  
        System.out.println(hs.sayHelloToSomeBody("Lavasoft"));  
    }  
  


原文地址:http://blog.csdn.net/arkblue/article/details/6237380
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: