Java知识整理——远程方法调用
生活随笔
收集整理的這篇文章主要介紹了
Java知识整理——远程方法调用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java遠程方法調用(RMI)是一個Java API,它執行的面向對象的等價遠程過程調用(RPC)的方法,包括了直接傳輸序列化的Java類和分布式垃圾收集的支持。 遠程方法調用(RMI),也可以看作是一個遠程運行的對象上激活的方法的過程。RMI提供位置透明性,因為用戶認為一個方法是在本地運行的對象上執行。 RMI Tips here.
RMI的架構最重要的原則是將行為的定義和行為的實施分別對待。 RMI允許定義的行為和實現行為保持獨立,并在獨立的JVM中運行的代碼。
RMI的結構主要分為以下幾層:
樁(Stub)和框架(Skeleton)層:該層位于開發者視圖的下面。該層是負責攔截客戶端請求接口的方法并重定向這些請求到遠程RMI服務上。
遠程引用層:架構的第二層是處理從客戶端到服務器的遠程對象引用的解析。該層解析并管理從客戶端到遠程服務對象的引用。該連接是一對一(單播)連接的。
傳輸層:該層主要負責連接參與服務的兩個JVM。它基于通過網絡連接的機子的TCP/IP,提供了基本的連通性,以及一些防火墻的滲透策略。
遠程接口用于識別那些不是來自本地機子接口但可以被調用的方法。所有對象都是必須直接或間接實現該接口的遠程對象。實現該遠程接口之前應該聲明其遠程接口,為每個遠程對象定義構造方法,并在所有遠程接口中為每個遠程方法提供實現。
java.rmi.Naming類提供了存儲和獲取已注冊的遠程對象. Naming類中的每個方法都需要一個URL格式的String作為參數的名稱.
綁定是關聯或注冊一個遠程對象的名字的過程, 這個名字可以在以后用到, 用于查找與它綁定的遠程對象. 遠程對象可以通過Naming類中的bind或rebind方法與一個名字相關聯.
bind方法的綁定主要用于將特定的名字綁定到一個遠程對象, 但rebind方法的綁定用于將特定的名字重新綁定到一個新的遠程對象. 如果這個名字已經綁定過了, 使用rebind這個綁定會被替換.
為了使RMI程序正常運行需要以下步驟:
編譯所有源文件.
用rmic生成stub.
啟動rmiregistry.
啟動RMIServer.
運行客戶端程序.
遠程對象的stub作為遠程對象在本地程序中的表示或代理. 調用者調用本地stub的一個方法, 這個方法會在遠程對象上執行.當一個stub的方法被調用時, 它經歷了以下步驟:
初始化與運行遠程對象的遠程JVM的連接.
將參數編碼并傳遞給遠程JVM.
等待方法調用與執行的結果.
解碼返回值或異常(如果執行失敗).
將返回值返回給調用者.
DGC代表的是分布式垃圾收集。遠程方法調用(RMI)使用的是DGC自動垃圾收集機制。由于RMI涉及到跨JVM的遠程引用,垃圾回收就會相當困難。DGC使用相關的計數算法為遠程對象提供自動存儲管理。
在RMI應用程序中可以使用RMISecurityManager提供安全管理器來下載代碼。如果安全管理器沒有設置好,RMI的類加載器不會從遠程端下載任何類。
當一個應用程序要通過網絡來傳送內存對象到另一臺主機,或者保留它到存儲器,內存表達法會將其轉換到合適的格式。這個過程就叫做編組,而恢復操作就叫解組。
Java提供了一個機制,是指一個對象可以被表示為字節序列,包括對象的數據,以及對象類型的信息和存儲在對象中的數據類型。因此,序列化可以看做是平面化對象為了存儲到磁盤中,方便后面讀取和重新配置的一種方式。反序列化是一種從平面化狀態到活躍狀態的一種轉換對象的逆過程。
總結
以上是生活随笔為你收集整理的Java知识整理——远程方法调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java知识整理——JDBC
- 下一篇: Java对象克隆方法(浅克隆、深克隆)