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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章