RMI代表遠端方法呼叫。 這是一種允許位於在一個系統(JVM)中的物件存取/呼叫在另一個JVM上執行的物件的機制。
RMI用於構建分散式應用程式; 它提供Java程式之間的遠端通訊。 它在java.rmi
包中提供。
在RMI應用程式中,我們編寫了兩個程式,一個伺服器程式(位於伺服器上)和一個客戶機程式(位於用戶端上)。
下圖顯示了RMI應用程式的體系結構。
下面我們來討論這個架構的元件。
以下幾點總結了RMI應用程式的工作原理 -
remoteRef
的一個名為invoke()
的方法。 它將請求傳遞到伺服器端的RRL。每當用戶端呼叫接受遠端物件上的引數的方法時,在通過網路傳送之前,將引數捆綁到訊息中。 這些引數可能是原始型別或物件。 在原始型別的情況下,將引數放在一起並附加標題。 如果引數是物件,那麼它們被序列化。 這個過程被稱為編組。
在伺服器端,打包引數是未分組的,然後呼叫所需的方法。這個過程被稱為解組。
RMI登錄檔是放置所有伺服器物件的名稱空間。 每次伺服器建立一個物件時,它會使用RMIregistry
(使用bind()
或reBind()
方法)註冊此物件。 這些使用叫作系結名稱(bind name)的唯一名稱進行註冊。
要呼叫遠端物件,用戶端需要該物件的參照。用戶端使用其系結名稱(使用lookup()
方法)從登錄檔中獲取物件。
下圖說明了整個過程 -
以下是RMI的目標 -