Hessian开发

Hessian的简单 介绍:
Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library。
1、是基于什么协议实现的?
基于Binary-RPC协议实现。
2、怎么发起请求?
需通过Hessian本身提供的API来发起请求。
3、怎么将请求转化为符合协议的格式的?
Hessian通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。
4、使用什么传输协议传输?
Hessian基于Http协议进行传输。
5、响应端基于什么机制来接收请求?
响应端根据Hessian提供的API来接收请求。
6、怎么将流还原为传输格式的?
Hessian根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。
7、处理完毕后怎么回应?
处理完毕后直接返回,hessian将结果对象进行序列化,传输至调用端。

 

 

声明一个远程过程调用的服务如下:

很简单的一个POJO的接口

Java代码  收藏代码
  1. package com.easyway.caucho.hessian.ws;  
  2.   
  3. import java.util.List;  
  4. /** 
  5.  * 声明服务端相关的服务 
  6.  * @author longgangbai 
  7.  * 
  8.  */  
  9. public interface IHessianService {  
  10.       
  11.     public String getUserName();  
  12.       
  13.     public List<String> getList();  
  14.       
  15.     public void setGreeting(String greeting);  
  16.       
  17.     public String hello();  
  18.   
  19. }  

 

远程过程调用的服务的实现如下:

 

 其实很简单只需要实现一个简单的类继承HessianServlet实现相关的服务接口。

 

 

Java代码  收藏代码
  1. package com.easyway.caucho.hessian.ws;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import com.caucho.hessian.server.HessianServlet;  
  7. /** 
  8.  *  
  9.  * 在Hessian中服务端的必须继承HessianServlet类同时实现相关的服务的接口 
  10.  *  
  11.  * @author longgangbai 
  12.  * 
  13.  */  
  14. public class HessianWS  extends HessianServlet implements IHessianService{  
  15.     private String _greeting = "Hello, world";  
  16.     /** 
  17.      *  
  18.      */  
  19.       public void setGreeting(String greeting)  
  20.       {  
  21.         _greeting = greeting;  
  22.       }  
  23.     /** 
  24.      *  
  25.      */  
  26.       public String hello()  
  27.       {  
  28.         return _greeting;  
  29.       }  
  30.       /** 
  31.        *  
  32.        */  
  33.     public List<String> getList() {  
  34.        List<String> strList=new ArrayList<String>();  
  35.        strList.add("a"); strList.add("c");   
  36.        strList.add("b"); strList.add("d");   
  37.        strList.add("e"); strList.add("g");   
  38.        strList.add("h"); strList.add("j");  
  39.        strList.add("k"); strList.add("l");  
  40.        strList.add("q");  
  41.         return strList;  
  42.     }  
  43.     /** 
  44.      *  
  45.      */  
  46.     public String getUserName() {  
  47.         return _greeting;  
  48.     }  
  49.   
  50. }  

 

 

客户端调用过程:

如下:

Java代码  收藏代码
  1. package com.easyway.caucho.hessian.ws;  
  2.   
  3. import java.net.MalformedURLException;  
  4.   
  5. import com.caucho.hessian.client.HessianProxyFactory;  
  6. /** 
  7.  * Hessian客户端测试代码 
  8.  * @author longgangbai 
  9.  * 
  10.  */  
  11. public class HessianServiceWSClient {  
  12.     public static void main(String[] args) {  
  13.         String url = "http://localhost:8080/BurlapWS/remoting/hessianWs";  
  14.   
  15.         HessianProxyFactory factory = new HessianProxyFactory();  
  16.         IHessianService basic;  
  17.         try {  
  18.             basic = (IHessianService) factory.create(IHessianService.class, url);  
  19.   
  20.             System.out.println("hello(): " + basic.getUserName());  
  21.             System.out.println("getList(): " + basic.getUserName());  
  22.               
  23.         } catch (MalformedURLException e) {  
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace();  
  26.         }  
  27.     }  
  28.   
  29. }  

 备注:HessianServlet是一个Servlet,实现Servlet相关的协议和类,所以需要在Web.xml配置如下:

一下摘自源代码:

Java代码  收藏代码
  1. public class HessianServlet extends GenericServlet {  
  2.   private Logger _log = Logger.getLogger(HessianServlet.class.getName());  
  3.     
  4.   private Class _homeAPI;  
  5.   private Object _homeImpl;  
  6.     
  7.   private Class _objectAPI;  
  8.   private Object _objectImpl;  
  9.     
  10.   private HessianSkeleton _homeSkeleton;  
  11.   private HessianSkeleton _objectSkeleton;  
  12.   
  13.   private SerializerFactory _serializerFactory;  

 web.xml配置如下:

Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.     <servlet>  
  8.         <servlet-name>hessianWs</servlet-name>  
  9.         <servlet-class>com.easyway.caucho.hessian.ws.HessianWS</servlet-class>  
  10.     </servlet>  
  11.     <servlet-mapping>  
  12.         <servlet-name>hessianWs</servlet-name>  
  13.         <url-pattern>/remoting/hessianWs</url-pattern>  
  14.     </servlet-mapping>  
  15.   <welcome-file-list>  
  16.     <welcome-file>index.jsp</welcome-file>  
  17.   </welcome-file-list>  
  18. </web-app>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章