java RMI

背景:

        分佈式系統要求運行在不同的地址空間、不同的主機,並且能夠通信。java提供了sockets來提供最基本的通信,作爲最基本的通信機制,它是靈活的、足夠的。然而sockets要求client和server工作在應用層協議上,通過編解碼消息來通信,而且設計協議弄不好還容易出錯。

        Remote Procedure Call (RPC)是sockets的一種替代方案,它將通信接口抽象成過程調用,參數被打包發送到被調用的遠程目標上執行。RPC系統使用外部數據表示如XDR來編碼參數和返回值。

        然而,在分佈式對象系統上RPC並不是很好。不同的地址空間程序級對象之間通信是必要的。爲了滿足對象的調用,分佈式系統要求遠程方法調用或者稱之爲RMI,在這樣的系統中,一個本地的代理(stub)管理着對遠程對象的調用。

        java‘RMI能充分的利用java語言的面向對象的特性。


簡介:

           RMI,全拼Remote Method Invocation。通過RMI的這種機制可以實現一個Java虛擬機上的對象來調用另一個Java虛擬機上對象的方法,雖然前者並沒有實現該方法。任何以這種調用方式的對象都必須實現Remote接口,雖然Remote接口中沒有定義任何方法。當某個對象被遠程調用時,它的參數會被編列(marshalled)並從調用的jvm發送到被調用的jvm,在別調用的jvm上參數又會被解編列(unmarshalled)。當方法執行完成時,執行結果被編列並從被調用的jvm上發送到調用該方法的jvm上。如果方發執行結果出了異常,異常會被髮給調用者。取代了直接去操作sockets,使得有一種調用本地程序的錯覺


分佈式對象應用程序:

         RMI程序通常分爲兩部分:server和client。server構造一些遠程對象,使它們的引用能被訪問,等待client調用它們的方法。client得到一些server上遠程對象的引用,調用它們的方法。

          應用程序要求:

          a。定位遠程對象

         b。和遠程對象通信。

          c。加載類字節碼(要被作爲參數的對象或得到的對象類型的返回值)


發佈了62 篇原創文章 · 獲贊 149 · 訪問量 65萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章