个人博客: 戳我,戳我
前言
由于工作的原因,接触到了hessain,项目需要做hessain和xml之间的报文转换。但是对于hessian是个什么东西一头雾水。于是接下来的时间了解了hessain协议的序列化规则以及hessian协议进行通信的方式。这篇文章是在完成了这个模块之后很长一段时间(大概3个月)才记录的。一来这个时候没什么事,二来当时就一直打算记录下学习的过程,后来搁置了。故本文对hessain协议做一个简单介绍,然后搭建了一个Java版的hessian客户端和服务端,实现了hessian通信。
什么是Hessian
什么是rpc?
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RMI是J2EE中标准的RPC服务,RPC的完美封装是的将业务逻辑可以进行分布式部署,将运算密集型的工作进行分流(但请求还是同步的),在使用过程中间封装起实现可以实现在客户端调用的时候完全透明(需要在RMI客户端调用方式进行封装)。
什么是hessian?
Hessian是一个轻量级的,自定义描述的二进制RPC协议。Hessian主要用作面向对象的消息通信。
hessian序列化规则
hessian序列化方式目前有两个版本1.0和2.0,具体可以查看官网http://hessian.caucho.com/doc/hessian-serialization.html。另外我在我的七牛空间上传了hessian协议2.0中文版,有需要的话可以下载,防止官网全英文看不懂。另外hessian官网上提供了各种版本的hessian协议的实现,包括java,c++,c#,Python,.NET,Ruby等,上面其实有比较详细的demo。可以参考,当时我也是参考过的。
Hessian通信案列(java)
环境准备
Eclipse && Tomcat.
资源下载
下载java版的hessian类库: hessian-4.0.37.jar
hessian 服务端
Eclipse中新建Dynamic Web Project
此处可以看到需要选择Target runtime,需要首先安装Tomcat。导入下载的hessian-4.0-37.jar,右键build path->Add to Build path
导入完成如图:开发步骤
hessian服务端的开发涉及到3个部分。定义接口&&接口实现&&web.xml
- 定义接口
新建IBasic.java,随便命名。
package test;
public interface IBasic {
public String hello();
}
此处做演示,只定义了一个最简单的hello函数,实际情况可以在此文件中增加你的接口函数。接口函数就是服务端暴露出来的服务,可以为客户服务的实际内容。故此接口文件也需要在客户端的开发中用到。
- 接口实现
新建BasicService.java,随便命名。
<