简介
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
技术对比
谈到remoting,会想到RMI和webservice规范,这两种规范的实现也是非常之多的,这篇博客介绍的Hessian也是RMI的一种实现,而且是二进制协议的,所以这个就比webservice性能要高一些。并且hessian在生成二进制方面也是非常有优势的,生成的二进制相比其他远程技术会小一些。
实例
建立MAVEN项目,在pom.XML文件中引入
<dependency>
<groupId>com.cauchogroupId>
<artifactId>hessianartifactId>
<version>4.0.7version>
dependency>
在web.XML中配置一个servlet配置
<servlet>
<servlet-name>registerservlet-name>
<servlet-class>com.caucho.hessian.server.HessianServletservlet-class>
<init-param>
<param-name>service-classparam-name>
<param-value>com.hessian.hessiantest.service.imp.RegisterServiceImplparam-value>
init-param>
servlet>
<servlet-mapping>
<servlet-name>registerservlet-name>
<url-pattern>/registerurl-pattern>
servlet-mapping>
编写一个service实现
private String greeting = "Hello, world, 你已经注册成功啦";
@Override
public void setMsg(String greeting) {
this.greeting=greeting;
System.out.println("成功消息打印:"+greeting);
}
@Override
public String hello() {
return greeting;
}
配置jetty服务器,启动maven项目部署。
编写测试程序
String url ="http://127.0.0.1:8081/hessian/register"
HessianProxyFactory factory = new HessianProxyFactory()
IRegisterService registerService = (IRegisterService) factory.create(IRegisterService.class, url)
System.out.println("注册消息:" + registerService.hello())
registerService.setMsg("Hello!world")
System.out.println("欢迎消息:" + registerService.hello())
直接执行main方法,会出现下面堆栈信息,表明调用成功

其余优点
另外一个优点是hessian可以非常容易的与spring框架集成。有兴趣的童鞋可以自行研究一下。
总结
目前很多分布式系统都离不开远程方法调用,也许你在用ejb,也许你在用webservice,异或是在用其他的一些技术,选择合适的才是最重要的,所以有必要学习一下hessian,以备将来不时之需。