Hessian Spring

使用Hessian 調用遠端服務

江直穎 2017/12/23 23:04:04
1106

使用Hessian 調用遠端服務


簡介

介紹Spring如何整合Hessian套件 實現binary webservice來調用遠端服務 並透過簡單範例初步了解其使用方式

作者

江直穎


1.   簡介

Hessian是一種高效簡潔的遠端調用框架,類似於WebService,但不使用SOAP協議,它採用的是二進制RPC協議(Binary),把協議內文封裝到http封包中,並通過HTTP傳輸,相比webservice而言更簡單、快捷並具有輕量、傳輸量小、支援多語言平台的特點。

以Java為例,實作的Hessian通過servlet來提供遠程服務,完全使用動態代理來實現,不需要透過SOAP xml,而是透過代理進而直接操作對象,相較webService來說也省去了許多資料轉換步驟。

 
2.        目的
1.初步介紹 Hessian  使用方式、簡單架設 Hessian Server 並提供服務
2.建立 Client 程式透過serviceProxy取得服務接口,取得該服務回傳的資料內容
 
3.        開始前準備
本架構建立於以下版本的環境:
 

l   JDK 8

l   Hessian 4.0.51

l   Spring 4.1.6

l   IDE使用 Eclipse Mars.1 Release (4.5.1)

 

4.        程式範例
4.1、 首先建構一個HessianServer部分實作,本範例使用Eclipse建立專案:
          建立Dynamic Web Project
             
4.2、 因為本範例需引用Spring與Hessian相關Library,所以我們在這轉換成Maven專案
             
4.3、 定義pom.xml檔案,這邊Hessian Library使用最新版本,請參考下方maven 下載路徑
 
4.4   定義web.xml內hessian服務相關context
                 使用 Spring 的 DispatcherServlet 實作 hessianService的入口
                 將所有 url 網址內.service的請求轉跳至相關的對應服務
 
 
4.5   新增server-config.xml 檔案
             透過使用 Spring 的org.springframework.remoting.caucho.HessianServiceExporter 來發佈服務
             定義屬性serviceInterface &service 為本次服務的介面、以及介面內容的實作
 
4.6   新增一個JAVA Interface  TestService
          設計4個簡單的方法來回傳不同資料的結果
 
 
4.7   新增一個JAVA class  TestServiceIpml 來實作  TestService 介面的方法
 
4.8   依照上述步驟將 testService 配置完成後,即可啟動Tomcat Server 服務。
             於下圖紅框處發現一個名為 "hessianService"的dispatcherServlet被啟動
              而一個 "/test.service"的URL也被註冊並建立Mapping
 
 
4.9   接著建立 Client 程式來驗證測試的HessianServer服務是否啟用
             首先在本專案新增一個 hessian-client.xml 設定檔
             其中使用需透過Spring 整合的HessianProxyFactoryBean類別建立一個 spring bean : testServiceProxy
             並透過兩個屬性:serviceUrl & serviceInterface ,將Server 服務的網址與服務的介面資訊定義在此設定檔中
 
 
4.10   接著建立 HessianClient 類別
             首先使用Spring FileSystemXmlApplicationContext 物件取得 hessian-client.xml 的本文內容
             透過 testServiceProxy 這個Spring bean 實例,使用proxy方式取得TestService介面實作後的物件
             進而操作此物件的方法取得遠端服務的回傳資訊,並使用相對應的資料型別來做接收
 
 
4.11   接著最後執行 HessianClient 程式,並印出四種方法回傳的結果
江直穎