`

Spring.Remote远程调用

 
阅读更多
转载他人的

Spring2 针对远程访问服务,提供的一个remote包。其的的是提供一套统一的远程服务发布功能。
先来看一下Spring2支持那些远程服务功能:
    1. RMI服务 
    2. Hessian或者Burlap通过HTTP远程调用服务 
    3. HTTP调用器暴露服务 

下面用一个例子,来看一下Spring2 是怎样对这些服务进行统一的封装和管理。

先看一下服务器端的源代码

public interface IBookService {

    Book getById(String id);

}

public class Book {

    
public String name;
    
public String id;
    
public String author;

}
    
public class BookService implements IBookService {

    
public Book getById(String id) {
        
return BookStore.getById(id);
    }

}    


客户端源代码

public class BookQueryService {
  
private IBookService bookService;
  
public void setAccountService(IBookService bookService) {
    
this.bookService = bookService;
  }
  
  
public Book getBookById(String id) {
      
return bookService.getById(id);
  }
}

//客户端调用示例

public static void main(String[] args) {

  ClassPathXmlApplicationContext context;
    context 
= new  ClassPathXmlApplicationContext("applicationContext.xml");
    BookQueryService bookQueryService 
= (BookQueryService) context.getBean("bookQueryService");
    Book book 
= bookQueryService.getBookById("1");
}


使用Spring2 发布 RMI服务示例

服务器端配置:
<bean id="bookService" class="com.xmatthew.spring.remote.BookService">
</bean>

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
    
<!-- does not necessarily have to be the same name as the bean to be exported -->
    
<property name="serviceName" value="bookService"/>
    
<property name="service" ref="bookService"/>
    
<property name="serviceInterface" value="com.xmatthew.spring.remote.IBookService"/>
    
<property name="registryPort" value="1800"/>
</bean>

客户端配置:

<bean class="com.xmatthew.spring.remote.client.BookQueryService">
    
<property name="bookService" ref="bookService"/>
</bean>

<bean id="bookService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
    
<property name="serviceUrl" value="rmi://localhost:1800/bookService"/>
    
<property name="serviceInterface" value="com.xmatthew.spring.remote.IBookService"/>
</bean>


 使用Spring2 发布 基于Http的Hessian服务示例
 注: Hessian提供一种基于HTTP的二进制远程协议。它是由Caucho创建的,可以在 http://www.caucho.com 找到更多有关Hessian的信息。
 
 首为使用Hessian,需要为其配置Spring 的 DispatcherServlet
 把下面的配置加入到web.xml中

 <servlet>
    
<servlet-name>remoting</servlet-name>
    
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    
<servlet-name>remoting</servlet-name>
    
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>

 

服务器端配置:
<bean id="bookService" class="com.xmatthew.spring.remote.BookService">
</bean>

<bean name="/bookService" class="org.springframework.remoting.caucho.HessianServiceExporter">
  
<property name="service" ref="bookService"/>
  
<property name="serviceInterface" value="com.xmatthew.spring.remote.IBookService"/>
</bean>

客户端配置:

<bean class="com.xmatthew.spring.remote.client.BookQueryService">
    
<property name="bookService" ref="bookService"/>
</bean>

<bean id="bookService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
    
<property name="serviceUrl" value="http://localhost:8080/bookService"/>
    
<property name="serviceInterface" value="com.xmatthew.spring.remote.IBookService"/>
</bean>


使用Spring2 发布 基于Http的Burlap服务示例

 Burlap,它是一个基于XML的Hessian替代方案。它的配置方法和上述Hessian的一样。只要把 Hessian 换成 Burlap 就行了。
 服务器端使用:
     org.springframework.remoting.caucho.BurlapServiceExporter 发布服务
 客户端使用:
     org.springframework.remoting.caucho.BurlapProxyFactoryBean

使用Spring2 发布 基于HTTP调用器暴露服务

和使用自身序列化机制的轻量级协议Burlap和Hessian相反,Spring HTTP调用器使用标准Java序列化机制来通过HTTP暴露业务.
但其配置与Burlap和Hessian很相近

服务器端配置:
<bean id="bookService" class="com.xmatthew.spring.remote.BookService">
</bean>

<bean name="/bookService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
  
<property name="service" ref="bookService"/>
  
<property name="serviceInterface" value="com.xmatthew.spring.remote.IBookService"/>
</bean>

客户端配置:

<bean class="com.xmatthew.spring.remote.client.BookQueryService">
    
<property name="bookService" ref="bookService"/>
</bean>

<bean id="bookService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
    
<property name="serviceUrl" value="http://localhost:8080/bookService"/>
    
<property name="serviceInterface" value="com.xmatthew.spring.remote.IBookService"/>
</bean>
分享到:
评论

相关推荐

    spring远程调用简单实例

    Spring支持多种远程调用协议,如RMI(Remote Method Invocation)、Hessian、 Burlap以及HTTP Invoker等。这些协议允许我们跨越网络边界,像调用本地方法一样调用远程服务。 在本实例中,我们关注的是HTTP Invoker...

    使用spring远程调用服务端接口实现WebService功能

    这就是Spring框架实现远程调用服务端接口以实现WebService功能的基本流程。由于HttpInvoker基于HTTP,它天生具备良好的网络穿透能力,适合于分布式系统中的跨网络通信。同时,由于使用了Java序列化,它的性能相对较...

    Spring远程调用使用http方式

    HTTP远程调用是Spring Remote的一种实现方式,通过HTTP协议来传输数据,具有良好的可伸缩性和跨平台性。 要实现Spring的HTTP远程调用,我们主要涉及两个关键部分:服务端(Server)和客户端(Client)。服务端通常...

    flex 和java 一起开发.实验远程调用.

    本实验旨在探讨如何实现Flex与Java之间的远程调用,以便前端Flex应用可以与后端Java服务进行通信。 首先,Flex与Java的通信通常依赖于AMF(Action Message Format)协议,这是一种高效的二进制数据交换格式,使得...

    spring RMI 远程接口调用

    Spring RMI(Remote Method Invocation)远程接口调用是Spring框架提供的一个特性,它允许你在分布式环境中调用对象的方法,使得应用程序能够跨越网络边界操作远程对象。这个技术在大型企业级应用中尤其有用,因为它...

    spring远程调用

    在分布式系统中,远程调用是一个常见需求,Spring为此提供了一种轻量级的解决方案——HttpInvoker。本文将详细讲解如何利用Spring的HttpInvoker进行远程方法调用。 首先,我们需要理解什么是Spring HttpInvoker。...

    三种方式实现java远程调用(rmi),绝对可用

    Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...

    Spring 实现远程访问详解——rmi

    1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...

    基于springboot的两个项目之间的远程调用

    远程调用(Remote Procedure Call, RPC)是一种计算机通信协议,它允许程序在一台机器上通过网络调用另一台机器上的程序,就像调用本地函数一样。在Spring Boot中,我们可以利用各种RPC框架实现这一功能,如RabbitMQ...

    java spring+rmi 的远程调用例子

    这个压缩包文件“Spring+RMI”很可能包含了实现这样一个远程调用示例的所有必要组成部分,包括配置文件、接口定义、服务器端实现以及客户端调用代码。 首先,我们来理解一下Java RMI。RMI是Java提供的一种原生的...

    远程调用服务框架

    本篇文章将深入探讨“远程调用服务框架”,包括其原理、实现方式以及Spring框架如何封装各种远程调用技术。 首先,Spring框架以其模块化和灵活性而著名,它提供了一个统一的编程模型,使得开发者能够轻松地集成不同...

    Spring 远程调用 -- C# 访问java WEB 服务

    标题中的"Spring 远程调用"指的是Spring的远程服务访问(Remote Service Access,RSA)。RSA允许服务提供者创建远程服务,而服务消费者可以跨网络调用这些服务。在Web服务上下文中,Spring提供了WebServiceTemplate...

    RMI远程调用DEMO....

    1. 远程接口(Remote Interface):这是定义远程方法的接口,它声明了可以在远程对象上调用的操作。这些接口必须继承自java.rmi.Remote接口,这样Java编译器才能识别它们为远程方法。 2. 远程实现(Remote ...

    RMI远程调用

    **RMI远程调用详解** 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种机制,它允许一个Java对象调用另一个在不同Java虚拟机(JVM)上的对象的方法。RMI是Java分布式计算的核心技术,主要...

    rpc远程调用使用说明&源码

    3. **服务消费者(ServiceConsumer)**:从服务注册中心获取服务接口的引用,实现远程调用。 4. **代理类(Proxy Class)**:动态生成的类,实现了服务接口,内部调用RPC框架的调用逻辑。 5. **调用处理(Invocation...

    Hessian远程调用框架学习一

    Hessian远程调用框架是基于Java的轻量级RPC(Remote Procedure Call)解决方案,它允许开发者在分布式系统中实现高效、便捷的跨网络对象方法调用。本教程将引导你入门Hessian,通过一个简单的JAVA demo来理解其工作...

    Java Spring1.2 Remote Invoke HTTP Invoker

    总的来说,Java Spring 1.2 Remote Invoke HTTP Invoker是一个强大的远程调用解决方案,它结合了HTTP协议的灵活性和Spring框架的便利性,使开发者能够轻松地构建分布式应用程序。尽管在某些场景下,现代的RPC框架如...

    spring-remote-service-example:一个示例项目,用于展示如何使用 JSON 反序列化通过 HTTP 在隔离的 Spring 容器之间进行(远程)服务调用

    5. **服务接口与实现**:定义一个公共的服务接口,该接口声明了可供远程调用的方法。服务实现则在相应的Spring容器中,处理来自其他服务的请求。 6. **客户端调用**:客户端通过HTTP发送POST请求到服务端,请求体...

    Spring-RMI.rar_spring rmi

    4.3 错误处理:远程调用可能会遇到网络中断、超时等问题,应适当地处理异常。 总结,Spring整合RMI提供了一种方便、灵活的方式来实现分布式系统中的远程方法调用。通过"SpringRMIClient"和"SpringRMIServer"示例,...

Global site tag (gtag.js) - Google Analytics