组长说要大家一起学习下Hessian,于是开始各个网站搜寻相关信息,然后组织了一遍。
个人觉得这个东西会用就行,它的原理对我们好像没什么太大的价值。^_^ Hessian介绍: Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据 【百度百科】 下面几种常用通讯协议的比较: http://www.360doc.com/content/08/1123/11/56145_1984046.shtml Hessian的优点: 二进制传输,速度快 易用性:编码简单 基于http协议,可以穿透防火墙 Hessian原理: 客户端: 客户端主要是通过 HessianProxyFactory 的 create 方法就是创建接口的代理类,该类实现了接口, JDK 的 proxy 类会自动用 InvocationHandler 的实现类(该类在 Hessian 中表现为 HessianProxy )的 invoke 方法体来填充所生成代理类的方法体。 服务端: Hessian的server端通过HessianServlet处理客户端发送过来的请求,匹配到相应的Hessian服务进行处理。 Hessian的使用方式: 1. 不使用其他框架配合,纯的Hessian.jar的调用 2. Hessian与Spring整合【现在大多数都使用这个组合】 Hessian通过HessianServlet提供远程服务,纯的使用Hessian时可在web.xml配置相应的映射到Hessian服务。如果与spring整合,则Spring的DispatcherServlet可将匹配模式的请求转发到Hessian服务,web.xml只是定义了请求转发器,该转发器将匹配相应模式的请求截获,转发给context的bean处理。而HessianServiceExporter提供bean服务。 1:通过DispatcherServlet来拦截URL请求。 2:HessianServiceExporter提供bean服务,Spring使用HessianServiceExporter,将一个常规bean导出成Hessian服务 Hessian编程: Hessian的远程调用,完全使用动态代理实现,推荐使用面向接口的编程,所有的服务以接口的形式提供给客户端,这样在大部分情况下,当服务端的具体实现有变化时,无需重新分发jar包给客户端,我们只需要把服务端进行修正发布即可,这样当有多个客户端对当前服务端有远程调用时,实用性更明显。