`

spring远程调用

 
阅读更多

一、Spring 远程调用概览

1、把一个应用的某些可用功能发布为远程服务并提供给其他应用来使用,我们需要将这个应用接口的基本功能发布为远程服务。

 

2、spring 支持几种不同的RPC模型 包括

rmi,不考虑网络限制时,访问/发布基于java的服务(很难穿越防火墙,这是因为rmi使用任意端口来交互)

hessian,burlap, 考虑网络限制时,通过http访问/发布基于java的服务

http invoker,考虑网络限制,并希望使用基于xml 或专有的java序列化机制时,访问/发布基于spring的服务

jax-rpc 和 jax-ws 访问/发布平台中立的,基于soap的web服务。

 

3、所有的模型中,远程服务被代理,所以他们能够像其他spring bean 一样被装配到客户端代码中。远程调用会抛出remoteAccessException 异常。

 

二、使用RMI

(1)配置RMI服务: RmiServiceExporter 可以将任意一个Spring管理的Bean发布为RMI服务。RmiServiceExporter通过将一个bean 包装到服务适配中,并将服务适配器绑定到RMI注册表中。从而将POJO转换为RMI服务。

<bean class = "org.springframework.remoting.rmi.RmiSeriviceExporter"

p:service-ref = "spitterService"

p:serviceName = "SpitterService"

p:serviceInterface = "接口全命名"

p:registryHost = “rmi.spitter.com”

p:registryPort = "1199" />

 

(2) 装配RMI 

Spring的RmiProxyFactoryBean是一个工厂bean,该bean可以为rmi服务创建代理。使用RmiProxyFactoryBean引用一个SpitterService的RMI服务是非常简单的

<bean id = "spitterService" class = "org.springframework.remoting.rmi.RmiProxyFactoryBean" p:serviceUrl = "rmi://localhost/spitterService" 

p:serviceInterface = "com.habuma.spitter.service.SpitterService"> 

 

三、使用hessian 和 burlap 发布远程服务 : 是基于http的轻量级远程服务解决方案。hession的消息是二进制的,而burlap的消息是xml。

 

四、使用spring的httpinvoker ,由于rmi使用java标准的对象序列化机制,但是很难穿透防火墙。而hession和burlap能很好地穿透防火墙,但是使用私有的对象序列化机制。

1、把bean导出为http invoker服务,我们需要使用httpinvokerserivceExporter

<bean id=httpInvokerSpitterService class = "org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"

p:service-ref = "spitterService"

p:serviceInterface="com.habuma.spitter.service.SpitterService">

 

2、httpinvokerserivceeExporter 是一个Spring MVC控制器,它通过DispatcherServlet接收来自于客户端的请求,并将这些请求转换成对实现服务的pojo的方法调用。所以我们需要建立一个url处理器。映射http url到对应的服务器上。

<bean id = "urlMapping" class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

   <property name = "mappings">

      <value>

       /spitter.service = httpInvokerSpitterService

      </value>

    </property>

</bean>

 

五、发布和使用Web服务(使用spring对JAX-WS的支持来把Spitter服务发布为web服务并使用此web服务),使用jax-ws 服务导出器创建一个web服务,spring提供一个jax-ws服务导出器

1: 在spring 中 自动装配 jax-ws 端点

jax-ws编程模型使用注解将类和类的方法声明为web服务的操作。使用@webservice 注解所标注的类被认为web服务的端点,而使用@webmethod注解所标注的方法。但必须继承springbeanautowiringsupport

 

2: 导出独立的jax-ws 端点 : 

 

3: 在客户端代理jax-ws服务 :

使用spring发布的web服务与我们使用rmi,hessian,buralp和http invoker 发布服务是完全不同的。

但使用spring 访问web 服务所涉及的客户端代理的工作方式与基于spring的客户端使用其他远程调用技术是相同的。

 

使用JaxWsPortProxyFactoryBean , 我们可以在spring中装配spitter web 服务, 就像其他bean一样。 jaxwsportproxyfactorybean 是一个spring 工厂bean 。 它生成一个与soap web 进行交互的代理。

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    spring远程调用简单实例

    首先,我们要明确Spring远程调用(Remoting)的基本概念。远程调用是指应用程序的不同组件或服务之间,通过网络进行通信的一种方式。Spring支持多种远程调用协议,如RMI(Remote Method Invocation)、Hessian、 ...

    Spring远程调用使用http方式

    首先,我们需要理解什么是Spring远程调用。Spring Remote提供了一种机制,使得应用程序能够跨越网络边界调用其他服务的方法,仿佛它们是在同一进程中执行一样。HTTP远程调用是Spring Remote的一种实现方式,通过HTTP...

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

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

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

    本示例聚焦于一个具体的场景:使用C#客户端远程调用基于Spring框架的Java Web服务。以下将详细阐述涉及的技术点。 首先,Spring框架是Java领域的一个核心组件,尤其在企业级应用开发中广泛使用。它提供了一个全面的...

    spring远程调用和xfire aegis 源代码上传

    标题 "spring远程调用和xfire aegis 源代码上传" 涉及到的是在Java开发中使用Spring框架进行远程过程调用(RPC)以及整合XFire和Aegis库来实现服务间的通信。这一主题是分布式系统设计中的一个重要组成部分,特别是...

    struts2.3.4+spring3.2.0+hibernate4+hibernate_generic_dao 全注释+远程调用

    struts2.3.4+spring3.2.0+hibernate4+hibernate_generic_dao struts hibernate spring最大化使用注释 基于spring的远程调用

    spring cloud feign实现远程调用服务传输文件的方法

    Spring Cloud Feign 实现远程调用服务传输文件的方法 在微服务架构中,服务之间的调用和文件传输是非常常见的场景。Spring Cloud Feign 是一个基于 Java 的声明式 RESTful 客户端,提供了一种简单、可靠的方式来...

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

    本主题聚焦于"基于Spring Boot的两个项目之间的远程调用",这是一个常见的需求,特别是在分布式系统中。远程调用允许不同服务之间相互通信,实现数据共享和功能协同。 1. **什么是远程调用** 远程调用(Remote ...

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

    在提供的压缩包文件中,"三种方式(原始方式_spring_jndi)实现java远程调用(rmi)"包含了相关的示例代码,帮助开发者理解并实践这三种RMI实现方法。在MyEclipse或其他Java开发环境中导入这些代码,可以进行调试和...

    远程调用服务框架

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

    Sprig 提供的远程调用 -HTTP调用

    在Spring框架中,远程调用是一项关键功能,它允许应用程序组件通过网络与其他应用程序组件进行通信。 Sprig(可能是指Spring的拼写错误)在这里可能是指Spring框架,它提供了多种方式来实现远程调用,其中HTTP调用是...

    spring RMI 远程接口调用

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

    Spring Cloud OpenFeign 远程调用

    OpenFeign 和 Dubbo一样是一个RPC远程调用框架,目的是使的我们调用接口和调用本地方法一样简单,开发者无需关心和远程的交互细节( 即不需要通过常规的 Http Client 构建请求再解析返回数据,让开发者在调用远程接口...

    【云原生】Spring Cloud Alibaba 之 Feign 远程调用 实战 【源码】

    在云原生架构中,微服务间的通信是一个关键问题,Spring Cloud Alibaba 提供了一套解决方案,其中Feign是实现服务间远程调用的一种重要组件。本文将深入探讨如何使用Spring Cloud Alibaba的Feign进行实战应用,并...

    Spring+Hibernate+Xfire实现远程分布式调用

    同时,配置AOP代理(如JDK动态代理或CGLIB代理)来处理远程调用。 2. **配置Hibernate**:配置Hibernate的session factory,定义实体类与数据库表的映射,并配置数据源。使用SessionFactory创建Session实例,进行...

    java spring+rmi 的远程调用例子

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

    JMS远程调用

    描述中提到,Spring在处理JMS远程调用时,会在同一个非事务Session中并发地发送和接收消息,这意味着调用是异步的,提高了系统的响应性和可扩展性。但这也意味着服务的调用者不能立即得到返回结果,而是需要等待...

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

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

Global site tag (gtag.js) - Google Analytics