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技术

如何在Spring框架中使用RMI技术
  • wangshuxuncom
  • wangshuxuncom
  • 2015年01月25日 05:50
  • 2593

Spring RMI配置多个服务

在使用Spring RMI时可能会遇到发布多个服务的需求,假设一个服务要操作文件,另一个服务要往屏幕上打印“hello world”。难道要把这两个风马牛不相及的服务写在一个接口里吗!如果真这样那结构...
  • u013614451
  • u013614451
  • 2014年09月18日 23:40
  • 2115

Spring-remoting实现rmi调用及集群化方法

rmi远程过程调用,以及rmi集群化的方式、均衡原理。
  • BuquTianya
  • BuquTianya
  • 2016年03月04日 23:53
  • 1769

RMI简单实例与Spring集成RMI

rmi远程方法调用,用于服务器端和kehuduan
  • undergrowth
  • undergrowth
  • 2014年05月03日 13:18
  • 2324

spring RMI 解析

1.Spring除了使用基于HTTP协议的远程调用方案,还为开发者提供了基于RMI机制的远程调用方法,RMI远程调用网络通信实现是基于TCP/IP协议完成的,而不是通过HTTP协议。 在Spring...
  • sivyer123
  • sivyer123
  • 2014年03月05日 18:35
  • 2917

Java RMI实现以及Spring封装RMI实现小结

最近应用到了Java RMI技术,所以总结一下RMI的使用,另外EJB的实现也是以Java RMI为基础核心的。RMI远程方法调用,可以跨机器通过网络调用,不过Java RMI只支持两边都是Java程...
  • zmx729618
  • zmx729618
  • 2016年08月05日 16:53
  • 7166

spring整合rmi 如何使用安全策略

spring整合rmi 后,想要使用安全策略,之后是自己写一个rmi.policy文件,里面写着授权哪些IP有哪些权限,但是我要怎么导入到spring中呢? 这个问题真的木有人会吗? 我要限制连接R...
  • WANTAWAY314
  • WANTAWAY314
  • 2016年12月30日 10:01
  • 18371

使用Spring RMI调用远程方法

Spring有多种调用远程的方式,今天学习了一下远程方法调用(RMI)。 RMI需要服务端和客户端 我们先从服务器开始 我的代码结构 package rmi; ...
  • junshuaizhang
  • junshuaizhang
  • 2014年05月28日 19:01
  • 5018

Spring整合Rmi总结

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

Spring RMI接口超时自动重连的配置

最近整理资料,发现关于Spring
  • suigaopeng
  • suigaopeng
  • 2014年08月20日 10:35
  • 1279
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring RMI 支持
举报原因:
原因补充:

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