<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
RMI是从JDK 1.1开始就出现的API功能,它让客户端在使用远程对象所提供的服务时,就如何使用本地对象一样,然而RMI在使用时必须一连串繁复的手续,像是服务介 面在定义时必须继承java.rmi.Remote接口、服务Server在实作时必须继承java.rmi.UnicastRemoteObject类 别、必须使用rmic产生stub与skeleton等等。
透过org.springframework.remoting.rmi.RmiServiceExporter,Spring 简化了这些手续,来实际看看例子,了解Spring在RMI上的使用与简化,首先定义服务对象的接口:
package onlyfun.caterpillar;
public interface ISomeService {
public String doSomeService(String some);
public void doOtherService(int other);
}
可以看到服务对象的接口不用继承java.rmi.Remote界面,而在实作时也不用继承java.rmi.UnicastRemoteObject,例如:
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服务,例如:
<?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定义档可以如下撰写:
<?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的依赖注入和AOP功能,提高代码的可维护性和可测试性。在实际应用中,还可能需要考虑安全性、性能...
spring 与rmi 的整合 1.首先编写接口 interface : 这里的接口要继承Remote, 它是一个标识接口 2.编写实现类 3.编写main方法用于启动 service 4 配置spring文件 编写客户端测试类
Spring框架提供了对RMI的支持,使得在Spring应用中集成RMI变得更加简单和灵活。本篇将深入探讨Spring如何与RMI结合,以及客户端和服务器端的实现细节。 ### 一、Spring RMI 服务器端集成 1. **定义远程接口**:...
当我们谈论“RMI与Spring整合实例”时,我们通常是指将RMI技术与Spring框架结合使用,以便构建可扩展的、分布式的Java应用程序。下面将详细解释这两个概念以及如何将它们整合在一起。 1. RMI基础: - RMI的核心...
一、Spring整合RMI基础 1.1 RMI原理:RMI的核心在于Java的`java.rmi`包,它定义了接口和类来创建远程对象并进行调用。远程对象需继承`java.rmi.Remote`接口,并声明所有远程方法抛出`java.rmi.RemoteException`。 ...
这个“spring和RMI分布式整合源码”可能包含了一个实际项目中如何将这两种技术融合的实例。现在,我们将深入探讨Spring框架和RMI,以及它们在分布式环境中的整合应用。 首先,Spring是一个开源的Java应用程序框架,...
在Spring中集成RMI,可以轻松地创建和管理远程服务,提升系统的可扩展性和灵活性。 ### 1. Spring RMI基本概念 Spring RMI是Spring框架对Java RMI的封装,它简化了RMI服务的配置和管理过程。RMI的核心概念包括: ...
本文将深入探讨Spring整合RMI的相关知识点。 首先,理解RMI的基本概念是关键。RMI允许一个Java对象调用在另一个JVM中的对象的方法,仿佛它们在同一台机器上。这一过程涉及了三个主要步骤:导出远程接口、注册远程...
在这个“spring+rmi非本地实现”的项目中,我们有两个主要部分:客户端(client)和服务端(rmiserver)。让我们深入探讨一下这两个部分以及它们如何协同工作。 1. **服务端(rmiserver)**: - **创建RMI接口**:...
Spring框架提供了一种优雅的方式来集成RMI,简化了配置和管理过程。 首先,让我们了解RMI的基本概念。RMI系统包括三个主要组件:远程接口、远程实现和RMIServer。远程接口定义了可以在远程对象上调用的方法,这些...
本项目提供了一个入门级的源代码示例,帮助开发者理解如何在 Spring 环境下集成 RMI 技术。以下是关于这两个技术及其整合的详细知识点: **Spring 框架** 1. **Spring 概述**:Spring 是一个开源的 Java 应用开发...
Spring通过提供RMI集成,简化了RMI服务的创建和调用。以下是一些关键点: 1. **服务接口定义**:首先,你需要定义一个远程服务接口,这个接口将包含你希望在远程进程中执行的方法。 2. **服务实现**:接着,创建该...
**Spring整合RMI**主要是为了简化RMI应用的配置和管理。具体步骤包括: 1. **定义接口**:创建一个接口,定义你希望在远程环境中暴露的方法。 2. **实现接口**:实现接口中的所有方法,通常是在一个Spring Bean中...
在本文中,我们将深入探讨Spring框架如何集成RMI,以及如何创建和使用RMI客户端。 首先,让我们了解RMI的基本概念。RMI是一种机制,它允许一个对象在一台计算机上执行的方法可以在另一台计算机上执行,就好像这些...
Java Spring与RMI(Remote Method Invocation)的整合是企业级应用中常见的远程服务交互方式。Spring框架提供了对RMI的支持,使得开发者能够方便地在分布式环境中进行服务的调用。这个压缩包文件“Spring+RMI”很...
在实际应用中,Spring MVC或者Spring Boot可以用来构建Web服务端,它们可以很好地与RMI整合,提供RESTful API或者其他Web服务接口,从而让客户端通过HTTP/HTTPS调用。 总结,"spring+rmi实现非本地部署"涉及了...
Spring RMI整合了RMI机制,提供了一种更加灵活和易于管理的方式,让开发者可以在Spring容器中定义远程服务,并通过Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)特性来增强这些服务。...
Spring框架是Java开发中广泛应用的轻量级框架,它提供了丰富的功能来简化应用程序的构建,包括依赖注入、AOP(面向切面编程)以及多种集成技术。RMI(Remote Method Invocation,远程方法调用)是Java平台上的一个...