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,亲自整合成功
随机推荐
- 8-1 binpacking uva1149(贪心)
题意:给定N个物品的重量Li 背包的容量M 同时要求每个背包最多装两个物品 求至少要多少个背包才能装下所有物品 简单贪心 注意输出: #include<bits/stdc++.h> u ...
- 46:求1+2+...+n
/** * 面试题46:求1+2+...+n * 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). */ ...
- java I/O流类概述
java I/O流类概述
- python修改文件的属性
1.执行attrib系统命令 ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I] [drive:][path][filename] [/ ...
- 将已有的项目提交到GitHub
1.目的: 将已有的项目提交到GitHub 2.准备工作 2.1 此教程建立在对git有初步的理解上 2.2 此教程之前需准备工作 a.熟悉git的一些基本命令和原理. b.已注册有GitHub账号. ...
- openstack policy 鉴权过程分析
转:http://blog.chinaunix.net/uid-20940095-id-4144300.html 1. openstack 鉴权简单介绍 众所周知,openstack通过k ...
- python opencv3 特征提取与描述 DoG SIFT hessian surf
git:https://github.com/linyi0604/Computer-Vision DoG和SIFT特征提取与描述 # coding:utf-8 import cv2 # 读取图片 im ...
- 4040 EZ系列之奖金
4040 EZ系列之奖金 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 由于无敌的WRN在2015年世界英俊帅气男总决选中 ...
- CF961E Tufurama 主席树
对原问题进行转化 考虑对每个$i$,询问在$j \in [i + 1, a[i]]$中满足$a[j] \geqslant i$的个数 这样子可以做到不重不漏 个数满足差分的性质,使用主席树来维护即可 ...
- 【转载】利用一个堆溢出漏洞实现 VMware 虚拟机逃逸
1. 介绍 2017年3月,长亭安全研究实验室(Chaitin Security Research Lab)参加了 Pwn2Own 黑客大赛,我作为团队的一员,一直专注于 VMware Worksta ...