国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

分布式系統開發工具包 —— 基于Hessian的HTTP RPC調用技術

浠ラ箍 / 3258人閱讀

摘要:官網是二進制協議。處理大量數據分布式應用需要發送大量二進制數據時,使用會更加有效率,因為它避免了分配大量數組。方法參數中只有最后一個參數可能是,因為數據是在調用過程中讀的。文件下載文件下載實現原文發布于

Hessian官網:http://hessian.caucho.com/

hessian是二進制web service協議。

Hessian介紹

創建Hessian服務包括四個步驟:

創建Java接口,用于提供公開服務

使用HessianProxyFactory創建客戶端

創建服務實現類

在servlet引擎中配置服務

HelloWorld服務
public interface BasicAPI {
  public String hello();
}
服務實現
public class BasicService extends HessianServlet implements BasicAPI {
  private String _greeting = "Hello, world";

  public void setGreeting(String greeting)
  {
    _greeting = greeting;
  }

  public String hello()
  {
    return _greeting;
  }
}
客戶端實現
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

  
   hello
   com.caucho.hessian.server.HessianServlet
    
      home-class
      example.BasicService
    
    
      home-api
      example.Basic
    
  

  
    /hello
    hello
  
Hessian序列化

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對象,務必確保對象實現了java.io.Serializable接口。

Hessian處理大量數據

分布式應用需要發送大量二進制數據時,使用InputStream會更加有效率,因為它避免了分配大量byte數組。方法
參數中只有最后一個參數可能是InputStream,因為數據是在調用過程中讀的。

下面是一個上傳文件的API的例子

package example;

public interface Upload {
  public void upload(String filename, InputStream data);
}

如果返回結果是InputStream,客戶端必須在finally塊中調用InputStream.close()方法,因為Hessian不會關閉
底層HTTP流,直到所有數據被讀取并且input stream被關閉。

文件下載API:
package example;

public interface Download {
  public InputStream download(String filename, InputStream data);
}

文件下載實現:
InputStream is = fileProxy.download("test.xml");

try {
  ... // read data here
} finally {
  is.close();
}

原文發布于:http://www.yesdata.net/2018/03/11/hessian/

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68815.html

相關文章

  • 后端必備——數據通信知識(RPC、消息隊列)一站式總結

    摘要:具體可以參考消息隊列之具體可以參考實戰之快速入門十分鐘入門阿里中間件團隊博客是一個分布式的可分區的可復制的基于發布訂閱的消息系統主要用于大數據領域當然在分布式系統中也有應用。目前市面上流行的消息隊列就是阿里借鑒的原理用開發而得。 我自己總結的Java學習的系統知識點以及面試問題,目前已經開源,會一直完善下去,歡迎建議和指導歡迎Star: https://github.com/Snail...

    Kahn 評論0 收藏0
  • 布式服務框架之遠程通訊技術及原理分析

    摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...

    sorra 評論0 收藏0
  • 布式服務框架之遠程通訊技術及原理分析

    摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...

    0xE7A38A 評論0 收藏0
  • Java 遠程通訊技術及原理分析

    摘要:對于與而言,則可以看做是消息傳遞技術的一種衍生或封裝。在生產者通知消費者時,傳遞的往往是消息或事件,而非生產者自身。通過消息路由,我們可以配置路由規則指定消息傳遞的路徑,以及指定具體的消費者消費對應的生產者。采用和來進行遠程對象的通訊。 消息模式 歸根結底,企業應用系統就是對數據的處理,而對于一個擁有多個子系統的企業應用系統而言,它的基礎支撐無疑就是對消息的處理。與對象不同,消息本質上...

    rozbo 評論0 收藏0
  • PowerDotNet平臺化軟件架構設計與實現系列(04):服務治理平臺

    摘要:的服務治理平臺發源于早期的個人項目。客戶端發現模式要求客戶端負責查詢注冊中心,獲取服務提供者的列表信息,使用負載均衡算法選擇一個合適的服務提供者,發起接口調用請求。系統和系統之間,少不了數據的互聯互通。隨著微服務的流行,一個系統內的不同應用進行互聯互通也是常態。 PowerDotNet的服務治理平臺發源于早期的個人項目Power.Apix。這個項目借鑒了工作過的公司的服務治理方案,站在...

    reclay 評論0 收藏0

發表評論

0條評論

浠ラ箍

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<