hessian是一种远程通讯协议,由于最近工作上用到了hessian进行数据传输,所以将自己这段时间对hessian的理解分享出来,首先给大家来个入门案例吧,原理解析和源码分析后续会补上。
hessian分为三个板块,一个是hessian api,用于存放接口,工具类等其他辅助类,hessian client,hessian server都要依赖hessian api,然后由hessian client进行发送请求,hessian server接受请求并处理返回结果,目录结构如下:
在hessian api中我写了一个接口,如下
package com.hessian.service;
public interface HelloHessian {
public void sayHello(String hello);
}
而后在hessian web中实现了这个接口,如下:
public class HelloHessianImpl implements HelloHessian {
@Override
public void sayHello(String hello) {
System.out.println("hello");
}
}
别忘了需要引入hessian的jar包
然后再hessian web中配置web.xml文件
这里写代码片<servlet>
<servlet-name>hessian</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.hessian.service.impl.HelloHessianImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.hessian.service.HelloHessian</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hessian</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>
最后来看hessian client,我预先将hessian的源码导入进来,只是为了下篇文章讲解源码的时候便于调试,如下是我的hessian client的目录结构:
![这里写图片描述](https://img-blog.csdn.net/20171101205624112?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVpeW9uZ196aG91/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
对了,引入hessian的源码会报错,可能需要依赖tomcat中的servlet-api.jar等v其他jar包,自己到时候碰到了解决下就行,还有,启动hessian web的时候需要依赖hessian api项目,解决项目之间的依赖问题可以看我的http://blog.csdn.net/huiyong_zhou/article/details/78316367这篇博客
最后贴上hessian client客户端的代码
package com.test;
import java.net.MalformedURLException;
import com.caucho.hessian.client.HessianProxyFactory;
import com.hessian.service.HelloHessian;
public class HelloHessianTest {
public static void main(String[] args) {
HessianProxyFactory factory = new HessianProxyFactory();
try {
HelloHessian helloHessian = (HelloHessian) factory.create(HelloHessian.class, "http://localhost:8080/hessian_web/hessian");
helloHessian.sayHello("hi~~~~~~");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
启动hessian web,在启动hessian client就可以看到输出hi~~~~~~了