Hessian
Spring
使用Hessian 調用遠端服務
2017/12/23 23:04:04
0
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 程式,並印出四種方法回傳的結果
