Spring 远程服务
稍微看了一下Spring的远程服务章节,讲到了RMI,Hessian,Burlap,Http invoker以及JAX-WS
1.RMI
原理:
1)在Spring服务端使用RmiServiceExporter将一个Spring bean包装在RMI的适配器里,并将这个适配器注册到服务端的RMI服务的ip和端口上,注册RMI服务
2)在客户端则使用一个代理工厂生成一个代理对象负责与远程的RMI服务进行通信,这个代理对象当做本地pojo这样使用
缺点:
1)由于使用任意端口交互,难以穿越防火墙
2)RMI基于Java,它使用了Java的序列化机制,因此服务端和客户端之间传输的对象必须保证是相同版本
2.Hessian共和Burlap
Hessian和Burlap分别是基于二进制和XML的远程调用技术,因此他们可以移植到其他非Java语言中,包括PHP,Python,C++,C#
原理:
1)在服务端配置一个叫HesseianServiceExporter的Spring MVC控制器,它负责接收请求并将请求翻译成POJO的调用
2)在客户端上的配置跟RMI差不多
缺点:使用私有序列化机制,对Java的序列化机制支持不好
优点:基于HTTP,解决了防火墙渗透问题
3.Spring HttpInvoker
工作流程跟前者差不多
优点:基于Http,解决了防火墙渗透问题和Java对象序列化问题
缺点:他是Spring框架提供的解决方案,所以服务端和客户端必须都是Spring应用
4.JAX-WS
是一个基于SOAP的Web服务,看起来搭建和调用流程跟前者都差不多,原理上完全没搞懂...
总的来说以上四种解决方案似乎都跟Java耦合,他们都需要在客户端程序里配置远程调用接口的代理类,会造成的问题就是
1.异步请求当代理类还未从服务端返回数据时代理类的处理逻辑该怎么做
2.客户端的代理类接口来自服务端,那么就需要服务端发布这个代理类的具体接口标准,加入这个接口更新,两边还需要同步
Spring 远程服务的更多相关文章
- spring远程服务知识梳理
序:本文主要是总结和归纳spring的远程服务相关知识,可作为入门学习笔记.写博客目的也是为了进行知识梳理,便于以后查看.本文主要参考资料 spring 实战第三版 本文主要讨论内容如下: 远程调度概 ...
- Often Misused:Spring Remote Service 经常被误用:Spring远程服务
- 高性能页面加载技术--BigPipe设计原理及Java简单实现
1.技术背景 动态web网站的历史可以追溯到万维网初期,相比于静态网站,动态网站提供了强大的可交互功能.经过几十年的发展,动态网站在互动性和页面显示效果上有了很大的提升,但是对于网站动态网站的整体页面 ...
- ApacheCN JavaWeb 译文集 20211017 更新
使用 Spring5 构建 REST Web 服务 零.前言 一.一些基本知识 二.在 Spring5 中使用 Maven 构建 RESTfulWeb 服务 三.Spring 中的 Flux 和 Mo ...
- spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法
spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud ...
- spring cloud 之 Feign 使用HTTP请求远程服务
一.Feign 简介 在spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLCo ...
- Spring整合Hessian访问远程服务
声明:该文章转载自Spring整合Hessian访问远程服务,本人搬过来只是为了记录下学习Hessian的过程,忘此博主理解,在此感谢,等本人有能力了再学一些原创的东东,本人实践了下,hessianS ...
- dubbo使用Spring配置暴露服务和使用Spring配置引用远程服务
提供者: <!-- 1.指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) --> <dubbo:application name="user-servic ...
- spring的CXF远程服务
http://www.tuicool.com/articles/Rb2uUn //远程调用 spring的cxf,亲自整合成功
随机推荐
- Ionic Js十五:对话框
$ionicPopup ionic 对话框服务允许程序创建.显示弹出窗口. $ionicPopup 提供了3个方法:alert(), prompt(),以及 confirm() . 实例 HTML 代 ...
- javacript 实现两个数组的差集
<script type="text/javascript"> var array1 = [1,2,3,4,5,6,7,8,9]; var arra ...
- 说一说Servlet的生命周期
servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达. Se ...
- 解决mongo 端口占用问题
在打开mongod之后如果不用了就按ctrl + c ,就不会出现以下的问题了 执行mongod报错 mongod 2016-08-03T14:31:15.691+0800 I CONTROL [in ...
- springboot项目打war包部署到服务器(eclipse & gradle环境)
1.右键项目run as -> run configurations,打开Run configurations弹出框 2.右键Gradle Project -> New Configur ...
- [BZOJ5303][HAOI2018]反色游戏(Tarjan)
暴力做法是列异或方程组后高斯消元,答案为2^自由元个数,可以得60分.但这个算法已经到此为止了. 从图论的角度考虑这个问题,当原图是一棵树时,可以从叶子开始唯一确定每条边的选择情况,所以答案为1. 于 ...
- 关于void main()的误区
很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的.C/C++ 中从来没有定义过void main( ) .C++ 之父 Bjarne Stroustrup 在他的主页上的 ...
- 关于django Class-based views的理解
django是mvt模式,其中v就是这个显示逻辑部分,简单来讲,view函数可以说是接收request,然后处理,返回response的主体函数. 对于一些简单的逻辑关系,可以用直接用函数模式来进行处 ...
- Codeforces Round #287 (Div. 2) C. Guess Your Way Out! 水题
C. Guess Your Way Out! time limit per test 1 second memory limit per test 256 megabytes input standa ...
- .NET程序员提高效率的70多个开发工具
工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为各ASP.NET 开发者介绍一些高效实用的工具,涉及SQL 管理,VS插件,内存管理,诊断工具等,涉及开发过程的各个环节, ...