摘要:官網是二進制協(xié)議。處理大量數(shù)據(jù)分布式應用需要發(fā)送大量二進制數(shù)據(jù)時,使用會更加有效率,因為它避免了分配大量數(shù)組。方法參數(shù)中只有最后一個參數(shù)可能是,因為數(shù)據(jù)是在調用過程中讀的。文件下載文件下載實現(xiàn)原文發(fā)布于
Hessian官網:http://hessian.caucho.com/
hessian是二進制web service協(xié)議。
Hessian介紹創(chuàng)建Hessian服務包括四個步驟:
創(chuàng)建Java接口,用于提供公開服務
使用HessianProxyFactory創(chuàng)建客戶端
創(chuàng)建服務實現(xiàn)類
在servlet引擎中配置服務
HelloWorld服務public interface BasicAPI { public String hello(); }服務實現(xiàn)
public class BasicService extends HessianServlet implements BasicAPI { private String _greeting = "Hello, world"; public void setGreeting(String greeting) { _greeting = greeting; } public String hello() { return _greeting; } }客戶端實現(xiàn)
String url = "http://hessian.caucho.com/test/test"; HessianProxyFactory factory = new HessianProxyFactory(); BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url); System.out.println("hello(): " + basic.hello());部署標準web.xml
Hessian序列化hello com.caucho.hessian.server.HessianServlet home-class example.BasicService home-api example.Basic /hello hello
Hessian類可以用來做序列化與反序列化
序列化Object obj = ...; OutputStream os = new FileOutputStream("test.xml"); Hessian2Output out = new Hessian2Output(os); out.writeObject(obj); os.close();反序列化
InputStream is = new FileInputStream("test.xml"); Hessian2Input in = new Hessian2Input(is); Object obj = in.readObject(null); is.close();
如果要序列化比基礎類型或String類型更加復雜的java對象,務必確保對象實現(xiàn)了java.io.Serializable接口。
Hessian處理大量數(shù)據(jù)分布式應用需要發(fā)送大量二進制數(shù)據(jù)時,使用InputStream會更加有效率,因為它避免了分配大量byte數(shù)組。方法
參數(shù)中只有最后一個參數(shù)可能是InputStream,因為數(shù)據(jù)是在調用過程中讀的。
下面是一個上傳文件的API的例子
package example; public interface Upload { public void upload(String filename, InputStream data); }
如果返回結果是InputStream,客戶端必須在finally塊中調用InputStream.close()方法,因為Hessian不會關閉
底層HTTP流,直到所有數(shù)據(jù)被讀取并且input stream被關閉。
文件下載API: package example; public interface Download { public InputStream download(String filename, InputStream data); } 文件下載實現(xiàn): InputStream is = fileProxy.download("test.xml"); try { ... // read data here } finally { is.close(); }
原文發(fā)布于:http://www.yesdata.net/2018/03/11/hessian/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/68815.html
摘要:具體可以參考消息隊列之具體可以參考實戰(zhàn)之快速入門十分鐘入門阿里中間件團隊博客是一個分布式的可分區(qū)的可復制的基于發(fā)布訂閱的消息系統(tǒng)主要用于大數(shù)據(jù)領域當然在分布式系統(tǒng)中也有應用。目前市面上流行的消息隊列就是阿里借鑒的原理用開發(fā)而得。 我自己總結的Java學習的系統(tǒng)知識點以及面試問題,目前已經開源,會一直完善下去,歡迎建議和指導歡迎Star: https://github.com/Snail...
摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發(fā)事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現(xiàn)這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現(xiàn)遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...
摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發(fā)事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現(xiàn)這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現(xiàn)遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...
摘要:對于與而言,則可以看做是消息傳遞技術的一種衍生或封裝。在生產者通知消費者時,傳遞的往往是消息或事件,而非生產者自身。通過消息路由,我們可以配置路由規(guī)則指定消息傳遞的路徑,以及指定具體的消費者消費對應的生產者。采用和來進行遠程對象的通訊。 消息模式 歸根結底,企業(yè)應用系統(tǒng)就是對數(shù)據(jù)的處理,而對于一個擁有多個子系統(tǒng)的企業(yè)應用系統(tǒng)而言,它的基礎支撐無疑就是對消息的處理。與對象不同,消息本質上...
摘要:的服務治理平臺發(fā)源于早期的個人項目??蛻舳税l(fā)現(xiàn)模式要求客戶端負責查詢注冊中心,獲取服務提供者的列表信息,使用負載均衡算法選擇一個合適的服務提供者,發(fā)起接口調用請求。系統(tǒng)和系統(tǒng)之間,少不了數(shù)據(jù)的互聯(lián)互通。隨著微服務的流行,一個系統(tǒng)內的不同應用進行互聯(lián)互通也是常態(tài)。 PowerDotNet的服務治理平臺發(fā)源于早期的個人項目Power.Apix。這個項目借鑒了工作過的公司的服務治理方案,站在...
閱讀 1283·2021-10-11 10:57
閱讀 2054·2021-09-02 15:15
閱讀 1614·2019-08-30 15:56
閱讀 1206·2019-08-30 15:55
閱讀 1164·2019-08-30 15:44
閱讀 989·2019-08-29 12:20
閱讀 1335·2019-08-29 11:12
閱讀 1074·2019-08-28 18:29