Spring RMI 支持

原创 2006年06月10日 12:04:00

RMI是从JDK 1.1开始就出现的API功能,它让客户端在使用远程对象所提供的服务时,就如何使用本地对象一样,然而RMI在使用时必须一连串繁复的手续,像是服务介 面在定义时必须继承java.rmi.Remote接口、服务Server在实作时必须继承java.rmi.UnicastRemoteObject 别、必须使用rmic产生stubskeleton等等。

透过org.springframework.remoting.rmi.RmiServiceExporterSpring 简化了这些手续,来实际看看例子,了解SpringRMI上的使用与简化,首先定义服务对象的接口:

  •  

    ISomeService.java
package onlyfun.caterpillar;

public interface ISomeService {
    public String doSomeService(String some);
    public void doOtherService(int other);
}

可以看到服务对象的接口不用继承java.rmi.Remote界面,而在实作时也不用继承java.rmi.UnicastRemoteObject,例如:

  • SomeServiceImpl.java
package onlyfun.caterpillar;

public class SomeServiceImpl implements ISomeService {
    public String doSomeService(String some) {
        return some + " is processed";
    }
   
    public void doOtherService(int other) {
        // bla.. bla
    }
}

接下来在伺服端,您只要在Bean定义档中定义,让Spring管理、生成Bean,即可注册、启动RMI服务,例如:

  • 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="someService" class="onlyfun.caterpillar.SomeServiceImpl"/>

    <bean id="serviceExporter"
class="org.springframework.remoting.rmi.RmiServiceExporter">
        <property name="service">
            <ref bean="someService"/>
        </property>
        <property name="serviceName">
            <value>SomeService</value>
        </property>
        <property name="serviceInterface">
            <value>onlyfun.caterpillar.ISomeService</value>
        </property>       
    </bean>
   
</beans>

很简单,只要告诉org.springframework.remoting.rmi.RmiServiceExporter服务对象、名称与要代理的接口,之后Spring读取完定义文件并生成Bean实例后,RMI服务就会启动。

接下来看看客户端要如何实作,只要透过org.springframework.remoting.rmi.RmiProxyFactoryBean,并告知服务的URL、代理的接口即可,就好像在使用本地端管理的服务一样,例如Bean定义档可以如下撰写:

  • 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>
<bean id="someServiceProxy"
class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://localhost/SomeService</value>
</property>
<property name="serviceInterface">
<value>onlyfun.caterpillar.ISomeService</value>
</property>
</bean>
</beans>

以下是个简单的客户端呼叫远程服务的例子:

....
        ApplicationContext context =
                new FileSystemXmlApplicationContext("rmi-client.xml");

        ISomeService service = (ISomeService) context.getBean("someServiceProxy");

        String result = service.doSomeService("Some request");
        System.out.println(result);
....











Spring对RMI的支持

1.使用RMI暴露服务 使用Spring的RMI支持,你可以通过RMI基础设施透明的暴露你的服务。设置好Spring的RMI支持后,你会看到一个和远程EJB接口类似的配置,只是没有对安全上下文传...

spring对RMI支持

今天在网上看到一篇关于RMI介绍的文章,感觉不错,连我这个没用过RMI的人都看懂了,因此摘抄过来笔记,分享 RMI全称是Remote Method Invocation-远程方法调用。支持存储于不同地...

Spring对RMI的支持

java、rmi
  • fqf_520
  • fqf_520
  • 2015年09月06日 14:43
  • 217

Spring对RMI支持的实际应用实例

java、rmi
  • fqf_520
  • fqf_520
  • 2015年09月06日 14:46
  • 228

如何在Spring框架中使用RMI技术.zip

  • 2015年01月25日 10:08
  • 4.2MB
  • 下载

spring rmi使用心得

  • 2014年02月07日 12:15
  • 2.25MB
  • 下载

Spring整合Rmi总结

在Spring整合Rmi中: 服务端使用了org.springframework.remoting.rmi.RmiServiceExporter RmiServiceExporter把任何Spring...
  • cuiran
  • cuiran
  • 2012年08月08日 11:54
  • 7201

spring+rmi非本地实现

  • 2016年03月07日 23:42
  • 42KB
  • 下载

spring中使用RMI

  • 2013年04月16日 14:32
  • 2.25MB
  • 下载

RMI@Spring的常见问题解决

原文地址: http://yangwencan2002.iteye.com/blog/284249RMI 问题 1 背景: 用 ./shutdown.sh 关闭 rmi 服务器的 tomcat ,然后...
  • Model_CZ
  • Model_CZ
  • 2011年06月03日 16:12
  • 11460
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring RMI 支持
举报原因:
原因补充:

(最多只允许输入30个字)