Hessian是一個輕量級的remoting onhttp工具,使用簡單的方法提供了RMI的功能。 相比WebService,Hessian更簡單、快捷。採用的是二進制RPC協議,因爲採用的是二進制協議,所以它很適合於發送二進制數據
.
這兩天有空把hessian接口也學習一下。由於學習是爲了以後測試工作而進行的,所以對於hessian和soap機制孰優孰劣就沒有深入的研究,這些問題還是留給我們架構師來研究吧。根據網上的文獻:Hessian是採用二進制流進行通訊的,所以我想性能應該會好一些,既然通過二進制流傳遞,是不是對複雜對象的傳遞有問題呢,我想可能會有些難度,畢竟傳遞過程中沒有象soap這樣保留了對象的結構的。這個問題有待以後考證。今天我想把我第一次學習hessian的經歷分享一下。
和ICE,WebService一樣,既然作爲服務類那麼必須有文檔公佈它的接口形式,客戶端用戶在通過這個文檔來生成代理類。ICE是通過.Ice文件,WebService是通過wsdl,但是hessian沒有這個類型的文檔,hessian的代理類是直接通過factrory去生成的。所以在做hessian客戶端代碼之前,需要拿到接口文件interface。下面我們通過一個完整的例子看看hessian服務器端代碼和客戶端代碼如何實現。
服務器端代碼和配置:
1. 去http://hessian.caucho.com/#Java 下載hessian jar包。
2. 新建服務器端工程(web工程:hessian),新增接口聲明文件new->interface。代碼如下:
package com.ems.hessian.service;public interface IPrinter {
|
3. 新建服務器類實現代碼,new->class,代碼如下
package com.ems.hessian.service.impl;import com.ems.hessian.service.IPrinter;public class PrinterService implements IPrinter {
|
4. 修改服務器端web.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
|
上述代碼實現如下功能:
* 指定接口的url
* 指定API使用的inteface文件
* 指定服務器類實現的代碼
5. 導出工程爲hessian.war,部署到tomcat5的webapps目錄下。
6. 將hessian jar包拷貝到lib目錄下。
客戶端代碼:
1. 新建客戶端工程,新增測試類,代碼如下
package com.ems.client;import com.caucho.hessian.client.HessianProxyFactory;
|
運行客戶端代碼:可以看見:
Hessian: hello hessian demo.
|