一、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远程调用使用http方式,将server和client直接部署后,进入http://localhost/HttpClientSpringRMIClient/即可
spirng远程调用可运行简单实例。包含所需所有jar spring-*-3.*.RELEASE.jar aopalliance.jar等。
适合有spring框架的javaEE平台,出自spring的HttpInvokerServiceExporter导出器,依赖Spring.jar
Spring 远程调用 -- C# 访问java WEB 服务,之前写的Demo,希望对大家有所帮帮助!
struts2.3.4+spring3.2.0+hibernate4+hibernate_generic_dao struts hibernate spring最大化使用注释 基于spring的远程调用
NULL 博文链接:https://gatusso52.iteye.com/blog/482239
主要介绍了spring cloud feign实现远程调用服务传输文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
spring RMI 远程接口调用 包含服务端客户端程序,可完整运行
SpringCloud Alibaba Nacos集群+ Feign 实现远程调用案例
OpenFeign 和 Dubbo一样是一个RPC远程调用框架,目的是使的我们调用接口和调用本地方法一样简单,开发者无需关心和远程的交互细节( 即不需要通过常规的 Http Client 构建请求再解析返回数据,让开发者在调用远程接口...
三种方式实现java远程调用(rmi) 方式一:原始方式 方式二:spring 方式三:jndi 解压,放到myeclipse上可用
基于springboot的两个项目之间的远程调用,有问题请提出
Sprig 提供的远程调用 -HTTP调用,之前做的Demo,希望对大家有所帮助!
给予spring的框架。 封装了xfire、rmi、hessian、httpinvoker 客户端可以统一调用,省略了远程调用的编码。 服务通过服务ID和服务接口来调用。
一个基于Spring的rmi实现,测试成功,可以远程调用。
1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...
6.1 Spring远程调用概览 6.2 与RMI一起工作 6.2.1 连接RMI服务 6.2.2 输出RMI服务 6.3 使用Hessian和Burlap的远程调用 6.3.1 访问Hessian/Burlap服务 6.3.2 用Hessian或Burlap公开Bean的...
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的...Transparent authentication context propagation for Remote Method Invocation and HttpInvoker (一个Spring远程调用协议)
主要介绍了使用Spring Cloud Feign远程调用的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧