遠端方法呼叫(RMI)
RMI 需要 3 個元件:客戶端,伺服器和共享遠端介面。共享遠端介面通過指定伺服器必須實現的方法來定義客戶端 - 伺服器合同。介面必須對伺服器可見,以便它可以實現方法; 介面必須對客戶端可見,以便它知道伺服器提供哪些方法(服務)。
實現遠端介面的任何物件都註定要扮演伺服器的角色。因此,伺服器也可以呼叫客戶端中的方法的客戶端 - 伺服器關係實際上是伺服器 - 伺服器關係。這稱為*回撥,*因為伺服器可以回叫客戶端。考慮到這一點,可以使用指定客戶端來實現這樣的伺服器。
共享遠端介面是任何擴充套件 Remote
的介面。充當伺服器的物件經歷以下操作:
- 通過擴充套件實現
Remote
的UnicastRemoteObject
,顯式或隱式實現共享遠端介面。 - 匯出,如果它擴充套件
UnicastRemoteObject
,或者通過傳遞給UnicastRemoteObject#exportObject
顯式匯出。 - 在登錄檔中繫結,可以直接通過
Registry
或間接通過Naming
。這只是建立初始通訊所必需的,因為可以通過 RMI 直接傳遞更多存根。
在專案設定中,客戶端和伺服器專案完全不相關,但每個專案都在其構建路徑中指定共享專案。共享專案包含遠端介面。