Hessian简要入门

Hessian简要入门nbsp 原本系统之间通信采用 Restful nbsp WebService 但其中没有考虑安全性问题 因此决定使用稍微复杂点的二进制协议 Hessian 服务 nbsp Hessian 是一个轻量级的 Remoting nbsp OnHTTP 工具 使用简单的方法提供了 RMI 的功能 相比 WebService Hessian 更简单 快捷 采用的是二进制 RPC 协议 nbsp Hessian 处理过程的简要流程 nbsp 客

 
原本系统之间通信采用Restful Web Service,但其中没有考虑安全性问题,因此决定使用稍微复杂点的二进制协议,Hessian服务。
 
Hessian是一个轻量级的Remoting On HTTP工具,使用简单的方法提供了RMI的功能,相比Web Service,Hessian更简单,快捷,采用的是二进制RPC协议。
 
Hessian处理过程的简要流程:
 
客户端 - 序列化写到输出流 - 远程方法(服务器端) - 序列化写到输出流 - 客户端读取输入流 - 输出结果
 
Hessian通过Servlet提供远程服务,需要将匹配某个模式的请求映射到Hessian服务。如果集成到Spring中,可以通过DispatcherServlet完成此功能,DispatcherServlet可以将匹配模式的请求转发到Hessian服务。
 
 
    
    
      spring-mvc 
     
    
      org.springframework.web.servlet.DispatcherServlet 
     
     
     
       contextConfigLocation 
      
     
       /WEB-INF/config/springmvc.xml 
      
     
    
      1 
     
    
    
    
      spring-mvc 
     
    
      / 
     
   

 

 
配置web.xml,将任意请求都映射到该Dispatcher中。
 
首先,使用SimpleUrlHandlerMapping,制定对应的service URL,和对应的服务接口,服务实现:
 
 
    
     
     
      
        
     
    
    
     
     
    
   

 

 
在客户端和服务端之间,需要共享服务接口对象以及接口中使用的对象,注意自定义的对象由于要进行二进制传输,必须要实现java.io.Serializable接口。比较好的方式使用一个公用的maven私服,这样就可以避免接口改动造成的频繁jar包传输。
 
在客户端中,需要知道Hessian服务对应的Url,这个是通过上面所说的service url以及服务器地址,端口得到的。
 
客户端方面的方法也比较简单,通过Url得到对应的服务代理,来进行下一步操作:
 
 
HessianProxyFactory factory = new HessianProxyFactory(); try { String url = "http://127.0.0.1:8888/remote/xxxService"; IXXXTaskService xxxTaskService = (IXXXTaskService) factory.create(IXXXTaskService.class, url); XXXResultStatus status = xxxTaskService.submitTask("211", contentBuilder.toString()); System.out.println(status); } catch (MalformedURLException e) { e.printStackTrace(); } 

 

 
如果服务已经启动,那么该服务肯定执行成功。
 
在Spring中调用Hessian服务也非常简单和容易,只需要在任务中新建一个HessianProxyFactoryBean,并指定对应的服务url和服务接口即可。
 
 
 
    
     
     
   

 

 
Hessian 是由 caucho 提供的一个基于 binary-RPC 实现的远程通讯 library,基于 Binary-RPC 协议实现,需通过 Hessian 本身提供的 API 来发起请求,Hessian 通过其自定义的串行化机制将请求信息进行序列化,产生二进制流,Hessian 基于 Http 协议进行传输,响应端根据 Hessian 提供的 API 来接收请求,Hessian 根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了,处理完毕后直接返回, hessian 将结果对象进行序列化,传输至调用端。
 
 
 
 
 
 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225853.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:24
下一篇 2026年3月17日 上午8:24


相关推荐

  • PS2手柄移植到STM32上面的小笔记[通俗易懂]

    PS2手柄移植到STM32上面的小笔记[通俗易懂]一、硬件准备:战舰开发板、PS2手柄接收器、PS2手柄、连接线二、硬件连接:PS2手柄接收器有六个引脚,和单片机连接IO口连接,如下图:接收器信号单片机IOGNDGNDVCC3.3VDI/DATPB12DO/CMDPB13CSPB14CLKPB15三、PS2通信简介通讯时序如下,感觉和SPI很像,也是四线DI与DO是一对同时传输的8bit串行数据,传输的时候需要CS为低电平,CLK由高变低。DO是单片机发送给接收器的信号。

    2022年6月11日
    57
  • C/C++编程学习 – 第5周 ④ 石头剪刀布「建议收藏」

    C/C++编程学习 – 第5周 ④ 石头剪刀布「建议收藏」题目描述石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?输入格式输入包含三行。第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。0

    2022年7月24日
    22
  • 一致性哈希算法的原理(一致性哈希与哈希的异同)

    (1)一致性哈希算法将整个哈希值空间按照顺时针方向组织成一个虚拟的圆环,称为Hash环;(2)接着将各个服务器使用Hash函数进行哈希,具体可以选择服务器的IP或主机名作为关键字进行哈希,从而确定每台机器在哈希环上的位置;(3)最后使用算法定位数据访问到相应服务器:将数据key使用相同的函数Hash计算出哈希值,并确定此数据在环上的位置,从此位置沿环顺时针寻找,第一台遇到的服务器就是其应该定位到的服务器

    2022年4月14日
    62
  • openclaw系列教程

    openclaw系列教程

    2026年3月13日
    2
  • 最全CSS3实现水平垂直居中的10种方案

    最全CSS3实现水平垂直居中的10种方案最全的实现水平垂直居中方案

    2026年3月19日
    2
  • Pytest(1)安装与入门「建议收藏」

    Pytest(1)安装与入门「建议收藏」pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月31日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号