为啥要使用Hessian

1、为啥要使用Hessian?

  有需求就有市场,挨踢界也是一样,想要实现远程调用,Hessian就应运而生。

  场景:有一个后台系统,基本上所有的用户管理都在这个系统里操作,其中有一个方法是添加用户的方法,再有一个前台系统,要实现添加用户的方法,现在有一个办法,就是把后台系统中的添加用户的方法原原本本的拷贝一份过来,酱紫有一个很大的弊病就是以后要同时维护两个地方,作为一名程序猿,这种情况是要绝对杜绝的。

  终极解决方法:使用Hessian来实现远程通信的功能,通过简单的配置就可以实现客户端(前台)直接调用服务端(后台)的方法(添加用户),看起来高大上有木有!!!

2、什么是Hessian?

  Hessian:hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能,相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用了二进制协议,所以它很适合于发送二进制数据,Hessian主要作面向对象的消息通信。Hessian的初衷就是支持动态类型,格式紧凑,跨语言Hessian是使用自己的序列化机制实现的编组和反编组,其支持的数据类型是有限制的,不支持复杂的对象,可以穿透防火墙,在这里不得不说一下RMI:RMI是一组用户开发分布式应用程序的API。他使用的是java序列化机制实现调用及返回值的编组于反编组。它使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。他可以被看做是RPC的Java版本,因为传统的RPC并不能很好的应用于分布式对象系统。而Java RMI则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。他也有它的缺点,他只能通过RMI协议来进行访问无法通过HTTP协议访问,无法穿透防火墙。

3、写一个Hessian需要注意的问题

  1、JAVA服务器端必须具备以下几点:
        包含Hessian的jar包
        设计一个接口,用来给客户端调用
        实现该接口的动能
        配置web.xml,配置相应的servlet
        对象必须实现Serializable接口
        对于复杂对象可以使用Map的方法传递
     2、客户端必须具备以下几点:
        java客户端包含Hessian.jar包
        具有和服务器端结构一样的接口和实体类。包括命名空间都最好一样(实验证明可以不一样,但是为啥要整成不一样的呢,有些地方创新是好事,但是在这里就没必要了,这叫奇葩)。利用HessianProxyFactory调用

为啥要使用Hessian

时间: 2024-10-11 11:10:02

为啥要使用Hessian的相关文章

服务之间的调用为啥不直接用 HTTP 而用 RPC?

什么是 RPC?RPC原理是什么? 什么是 RPC? RPC(Remote Procedure Call)-远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.比如两个不同的服务 A.B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好. RPC 的出现就是为了解决这个问题. RPC原理是什么? 服务消费方(client)调用以本地调用方式调用服务: cl

js 小数计算为啥和想象中不一样!

今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){...}.我可能等一下午都等不到大括号中的内容被执行. 为啥呢?因为在js中0.1+0.2=0.30000000000000004.说起来你可能不信,又或者去验证一下.结果为啥是这样?在我查找资料之后豁然开朗.对于浮点型数据,大多语言计算都会丢失精度.但是像c++/java这种厉害的语言都有自己封装的一套方法

hessian与spring的结合

对于EJB将被取代的说法已经比比皆是了,虽然我不认同吧,但是实话实说对于大多数的项目来说使用企业级的java bean还真的是没什么必要,因为太重量级了,上篇博客不是说了一下简单的hessian吗,这里就来说说hessian和spring的结合. 1.引入jar包 需要的jar包有: 2.配置remote-servlet.xml文件(在src目录下) <?xml version="1.0" encoding="UTF-8"?> <beans xml

基于梯度场和Hessian特征值分别获得图像的方向场

一.?我们想要求的方向场的定义为: 对于任意一点(x,y),该点的方向可以定义为其所在脊线(或谷线)位置的切线方向与水平轴之间的夹角: 将一条直线顺时针或逆时针旋转 180°,直线的方向保持不变. 因此,指纹方向场的取值范围一般定义为[0,π)或[-π/2, π/2),前闭后开区间的意义在于保证方向场取值的唯一性. 二.基于梯度场计算方向场 论文 <Analyzing Oriented Patterns> 网址:https://wenku.baidu.com/view/f741d931cc17

Hessian序列化的一个潜在问题

一. 最近的用rpc框架的时候,当用hessian序列化对象是一个对象继承另外一个对象的时候,当一个属性在子类和有一个相同属性的时候,反序列化后子类属性总是为null. 二. 示例代码: DTO对象 public class User implements Serializable { private String username ; private String password; private Integer age; } public class UserInfo extends Us

hessian序列化

1.什么是序列化 (1)序列化,是一种把对像流化的机制,即把对像写入二进制数组(byte[]),传输到另一个地方,将其读 出来之后,进行反序列化,得到对象含状态(状态就是属性的值) (2)为什么要序列化.方便在网络间进行传输,并且可以把对象持久化到数据库或者文件中. 2.什么是hessian Hessian是一个序列化协议.它的优点在于,比java原生的序列化更快,序列化出来的数据更小. (为什么比java快,体积小?)

OpenCV 为啥勾搭上 OpenGL

OpenCV 为啥勾搭上 OpenGL? Vinjn张静· 2 年前 如果读者留意 OpenCV 2.3 之后的版本,那么会发现 cv::ogl namespace,ogl 自然是 OpenGL了.一个三维计算机图形库为何出现在计算机视觉中,传统的 CV 开发者是否需要学习它,这些问题待我一一来回答. 问题一:为何引入 OpenGL? 在 2.3 之前 OpenCV 的渲染部分都是由 CPU 来实现的,不论是画线还是把图片显示到屏幕上.这有两个问题,速度慢,同时没法画三维物体.引入 OpenGL

Hessian原理分析

一.      远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . tcp . udp 等等, http . tcp . udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协议,网络 IO ,主要有 bio . nio . aio 三种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言通常都会提供一些更为贴近应用易用的应用层协议. 二.      应

Java实现 Hessian接口测试

Hessian接口测试简单单例 Hessian是基于Binary –RPC(二进制远程过程调用协议)进行通讯. Hessian就是把Java对象转变成字节序列,然后通过Http传输到目标服务器上(主机),主机收到这个字节序列后,按照一定的协议标准进行反序列,提交给对应的服务处理.处理完成以后以同样的方式返回数据. 环境准备: Eclipse Hessian.jar 所测接口的API包 接口请求地址(含端口号) 接口文档说明 接口服务端开启 一.             参数设置 根据接口文档定义