鍍金池/ 教程/ Java/ Java RMI介紹
Java RMI圖形界面應(yīng)用程序
Java RMI應(yīng)用程序
Java RMI介紹
Java RMI數(shù)據(jù)庫(kù)應(yīng)用程序
Java RMI遠(yuǎn)程方法調(diào)用教程

Java RMI介紹

RMI代表遠(yuǎn)程方法調(diào)用。 這是一種允許位于在一個(gè)系統(tǒng)(JVM)中的對(duì)象訪問(wèn)/調(diào)用在另一個(gè)JVM上運(yùn)行的對(duì)象的機(jī)制。

RMI用于構(gòu)建分布式應(yīng)用程序; 它提供Java程序之間的遠(yuǎn)程通信。 它在java.rmi包中提供。

RMI應(yīng)用程序的體系結(jié)構(gòu)

RMI應(yīng)用程序中,我們編寫(xiě)了兩個(gè)程序,一個(gè)服務(wù)器程序(位于服務(wù)器上)和一個(gè)客戶(hù)機(jī)程序(位于客戶(hù)端上)。

  • 在服務(wù)器程序中,創(chuàng)建一個(gè)遠(yuǎn)程對(duì)象,該對(duì)象的引用可被客戶(hù)端(使用注冊(cè)表)使用。
  • 客戶(hù)端程序請(qǐng)求服務(wù)器上的遠(yuǎn)程對(duì)象,并嘗試調(diào)用其方法。

下圖顯示了RMI應(yīng)用程序的體系結(jié)構(gòu)。

下面我們來(lái)討論這個(gè)架構(gòu)的組件。

  • 傳輸層(Transport Layer) - 此層連接客戶(hù)端和服務(wù)器。它管理現(xiàn)有的連接,并設(shè)置新的連接。
  • 存根(Stub) - 存根是客戶(hù)端上的遠(yuǎn)程對(duì)象的表示(代理)。 它位于客戶(hù)端系統(tǒng)中; 它作為客戶(hù)端程序的網(wǎng)關(guān)。
  • 骨架(Skeleton) - 它位于服務(wù)器端的對(duì)象。 存根與此骨架通信以將請(qǐng)求傳遞給遠(yuǎn)程對(duì)象。
  • RRL(遠(yuǎn)程參考層) - 它是管理客戶(hù)端對(duì)遠(yuǎn)程對(duì)象的引用的層。

RMI應(yīng)用程序的工作

以下幾點(diǎn)總結(jié)了RMI應(yīng)用程序的工作原理 -

  • 當(dāng)客戶(hù)端調(diào)用遠(yuǎn)程對(duì)象時(shí),它被存根最終傳遞給RRL。
  • 當(dāng)客戶(hù)端RRL接收到請(qǐng)求時(shí),它會(huì)調(diào)用對(duì)象remoteRef的一個(gè)名為invoke()的方法。 它將請(qǐng)求傳遞到服務(wù)器端的RRL。
  • 服務(wù)器端的RRL將請(qǐng)求傳遞到服務(wù)器上的最后調(diào)用所需對(duì)象的Skeleton(服務(wù)器上的代理)。
  • 結(jié)果一直傳遞給客戶(hù)端。

編組和解組

每當(dāng)客戶(hù)端調(diào)用接受遠(yuǎn)程對(duì)象上的參數(shù)的方法時(shí),在通過(guò)網(wǎng)絡(luò)發(fā)送之前,將參數(shù)捆綁到消息中。 這些參數(shù)可能是原始類(lèi)型或?qū)ο蟆?在原始類(lèi)型的情況下,將參數(shù)放在一起并附加標(biāo)題。 如果參數(shù)是對(duì)象,那么它們被序列化。 這個(gè)過(guò)程被稱(chēng)為編組。

在服務(wù)器端,打包參數(shù)是未分組的,然后調(diào)用所需的方法。這個(gè)過(guò)程被稱(chēng)為解組。

RMI注冊(cè)表

RMI注冊(cè)表是放置所有服務(wù)器對(duì)象的命名空間。 每次服務(wù)器創(chuàng)建一個(gè)對(duì)象時(shí),它會(huì)使用RMIregistry(使用bind()reBind()方法)注冊(cè)此對(duì)象。 這些使用叫作綁定名稱(chēng)(bind name)的唯一名稱(chēng)進(jìn)行注冊(cè)。

要調(diào)用遠(yuǎn)程對(duì)象,客戶(hù)端需要該對(duì)象的引用??蛻?hù)端使用其綁定名稱(chēng)(使用lookup()方法)從注冊(cè)表中獲取對(duì)象。

下圖說(shuō)明了整個(gè)過(guò)程 -

RMI目標(biāo)

以下是RMI的目標(biāo) -

  • 最小化應(yīng)用程序的復(fù)雜性。
  • 保護(hù)類(lèi)型安全。
  • 分布式垃圾收集。
  • 最小化使用本地和遠(yuǎn)程對(duì)象之間的區(qū)別。