标签:
最近的项目中用到了hessian调用服务,做一下总结。
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
接触到了两种方式实现hessian,纯servlet方式和spring方式。说白了就是需要一个提供service的服务器,还有一个client通过访问service的URL来调用那个service。
创建服务端,首先要导入hessian的jar包,之后就是关键的配置web.xml。
1 <servlet> 2 <servlet-name>HessianServlet</servlet-name> 3 <!-- servlet-class中指定的类是固定的,统一使用 com.caucho.hessian.server.HessianServlet --> 4 <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> 5 <init-param> 6 <!-- 服务接口,使用全路径 --> 7 <param-name>home-api</param-name> 8 <param-value>cn.com.hwxt.ly.service.i.EfileService</param-value> 9 </init-param> 10 <init-param> 11 <!-- 服务实现类,使用全路径 --> 12 <param-name>home-class</param-name> 13 <param-value>cn.com.hwxt.ly.service.impl.EfileServiceImpl</param-value> 14 </init-param> 15 </servlet>
接下来写service接口和实现类,直接用一个servlet来继承接口,方便客户端调用,我就简单的写个打印语句表示一下。
public class TestServlet implements TestService{ public void hello() { System.out.println("hello hessian"); }
服务端就算完成了。
client也是一样,导入jar包,之后就是写一个Test来调用了。
这里的关键点是,要有相同的service接口在,还有相同的package。
1 public class CallHessianServlet { 2 //调用hessian自己的servlet的方法 3 public static void main(String[] args) { 4 //URL就是服务的地址 5 String url="http://localhost:8080/项目名/TestServlet"; 6 HessianProxyFactory factory=new HessianProxyFactory(); 7 factory.setOverloadEnabled(true); 8 try { 9 TestService remote =(TestService) factory.create(TestService.class, url); 10 System.out.println(remote.hello()); 11 } catch (MalformedURLException e) { 12 e.printStackTrace(); 13 } 14 } 15 }
client这里其实就是利用HessianProxyFactory调用远程接口,还有反射机制,没有什么难点。就先写这么多吧,spring的hessian还需要学习,有机会再更。
标签:
原文地址:http://www.cnblogs.com/chaoslane/p/4896498.html