1. 程式人生 > >java RMI 筆記

java RMI 筆記

註冊 接收 object 邏輯 proc 端口 地方 cto 應用調用

一、java RMI介紹
java RMI用於不同虛擬機之間的通信,實現不同虛擬機之間對象方法調用。RMI要解決的問題,是讓客戶端對遠程方法的調用可以相當於對本地方法的調用而屏蔽其中關於遠程通信的內容,即使在遠程上,也和在本地上是一樣的。
二、java RMI核心
是遠程對象(remote object)。通俗理解是只要在一臺虛擬機A上創建了遠程對象(remote object),其它虛擬機X就可以訪問虛擬機A中遠程對象(remote object)中的方法。每個遠程對象(remote object)都要實現一個或者多個遠程接口來標識自己,聲明了可以被外部系統(其它虛擬機)或者應用調用的方法(當然也有一些方法是不想讓人訪問的)。
三、java RMI通信模型
技術分享圖片

客戶端調用Stub對象中的本地方法,Stub對象是一個本地對象,它實現了遠程對象向外暴露的接口,也就是說它的方法和遠程對象暴露的方法的簽名是相同的。客戶端認為它是調用遠程對象的方法,實際上是調用Stub對象中的方法。Stub對象可以理解為是遠程對象在本地的一個代理,當客戶端調用方法的時候,Stub對象會將調用通過網絡傳遞給遠程對象。
從邏輯上來看,數據是在Client和Server之間橫向流動的,但是實際上是從Client到Stub,然後從Skeleton到Server這樣縱向流動的。
四、Stub對象調用準備
4.1怎麽發現遠程對象?
在調用遠程對象的方法之前需要一個遠程對象的引用,如何獲得這個遠程對象的引用在RMI中是一個關鍵的問題。在RMI中通過遠程對象的標識符引用,客戶端通過提供遠程對象的標識符訪問註冊表,來得到遠程對象的引用。這個標識符是類似URL地址格式的,它要滿足的規範如下:rmi://host:port/name,host指明註冊表運行的註解,port表明接收調用的端口,name是一個標識該對象的簡單名稱。主機和端口都是可選的,如果省略主機,則默認運行在本地;如果端口也省略,則默認端口是1099。

4.2
五、java RM的常用類
java.rmi:提供客戶端需要的類、接口和異常;
java.rmi.server:提供服務端需要的類、接口和異常;
java.rmi.registry:提供註冊表的創建以及查找和命名遠程對象的類、接口和異常;

java RMI 筆記