?Hessian是一个简单的连接Web服务的二进制协议。
?????? Hessian概述:
一.客户端和服务端不依赖于其他任何jar,比起webService 它显得轻量许多,比如使用xfire包含核心库和客户端的jar,大小达到了10M,而最新的hessian-4.0.7? jar大小也只有不到400K.
????? 二.更适合二进制的传输,比起webService.Hessian的 传输速度要高于webService.
????? 三.支持Java,c#,Flex(actionscrpit)
?
一.? 添加Hessian的jar于Web-Inf下.? 这里使用的是hessian-4.0.7,下载地址: http://download.csdn.net/source/3159260
二.? 定制供客户端调用的接口:
[java]
view plain
copy
print
?
- package?com.wtang.isay;??
- ??
- public?interface?Isay?{??
- ????public?String?sayHello(String?arg1,String?arg2);??
- }??
?
三.? 接口具体实现(如果使用了pojo类,pojo类必须实现序列化)
[java]
view plain
copy
print
?
- package?com.wtang.isay;??
- ??
- public?class?IsayImpl?implements?Isay?{??
- ??
- ????public?String?sayHello(String?arg1,?String?arg2)?{??
- ????????return?"Hello:"?+?arg1?+?arg2;??
- ????}??
- }??
?
四.? 配置Hessian的Servlet[类似于配置webService的service.xml]
?
[java]
view plain
copy
print
?
- <servlet>??
- ????<servlet-name>hello</servlet-name>??
- ????<!--?配置Hessian的Servlet?-->??
- ????<servletclass>com.caucho.hessian.server.HessianServlet</servlet-class>??
- ????<init-param>??
- ????????<param-name>service-class</param-name>??
- ????????<param-value>com.wtang.isay.IsayImpl</param-value>??
- ????</init-param>??
- </servlet>??
- ??
- <servlet-mapping>??
- ????<servlet-name>hello</servlet-name>??
- ????<url-pattern>/hello</url-pattern>??
- </servlet-mapping>??
?
?
?
五.? 书写服务端的测试jsp页面[HessianProxyFactory类似于xifre的XFireProxyFactory]??
?
[java]
view plain
copy
print
?
- <%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??
- <%@?page?import="com.caucho.hessian.client.HessianProxyFactory"%>??
- <%@?page?import="com.wtang.isay.Isay"%>??
- ??
- <%??
- ????//Hessian代理工厂 ??
- ????HessianProxyFactory?factory?=?new?HessianProxyFactory();??
- ????//获得访问配置的Servlet路径 ??
- ????String?url=("http://"+request.getServerName()+":"+request.getServerPort()??
- ????+request.getContextPath()+"/hello");??
- ??????
- ????System.out.println(url);??
- ??????
- ????//使用Hessian工厂获得接口的具体实现类 ??
- ????Isay?i?=?(Isay)factory.create(Isay.class,url);??
- ??????
- ????out.println("<h2>"+i.sayHello("chen","weitang")+"<h2>");??
- %>??
?
输出Hello:cheweitang