2011-04-14 131 views

回答

24

本質上,RMI註冊表是服務器註冊它提供的服務的地方,也是客戶查詢這些服務的場所。見Introduction to Java RMI。摘錄:

圖1顯示了客戶端在使用RMI時所做的連接。首先,客戶端必須聯繫RMI註冊中心,並請求服務的名稱。開發人員B不會知道RMI服務的確切位置,但他知道足以聯繫開發人員A的註冊表。這將指向他想要調用的服務的方向。

+1

這裏也是一個有趣的地方瞭解更多關於Java RMI:http://docs.oracle.com/javase/tutorial/rmi/index.html – LuckyLuc 2013-10-26 20:05:01

+0

@LuckyLuc同意。不僅是一個有趣的地方,而且是一個更好的地方。任何互聯網垃圾不應該在官方引用之前引用,當然也不要超過RMI規範等規範引用。 – EJP 2015-09-12 10:06:56

+0

因此,每個程序只有一個RMI註冊表,但可以有多個服務器。那是對的嗎? – CodyBugstein 2015-10-01 03:46:41

8

RMI註冊表作爲RMI服務器和客戶端之間的代理。服務器將其服務註冊到註冊表中 - 因此RMI註冊表可以充當許多服務器/服務的「目錄」。客戶端不需要知道單個服務器的位置,並且可以在RMI註冊表中查找它所需的服務。註冊表是一個命名目錄,它向客戶端返回適當的句柄以調用其上的方法。

谷歌周圍,有很多關於RMI的信息可用。

2

Java的遠程方法調用(RMI)註冊本質上是一個目錄服務。

遠程對象註冊表是引導程序命名服務,由同一主機上的RMI服務器用來將遠程對象綁定到名稱。本地和遠程主機上的客戶端可以查找遠程對象並進行遠程方法調用。(Documentation

您可以使用RMI或JNDI使用rmi註冊表遠程綁定和查找對象。

這是一個衆所周知的代理設計模式的用例。 RMI服務器在RMI註冊表上註冊對象(基本上是存根)。遠程客戶端查找這些存根並調用其上的方法。在場景的後面調用方法,它的參數被序列化併發送到具有實現的實際RMI服務器。 RMI服務器(骨架代碼)反序列化請求調用實際方法,收集結果,將其反序列化並將其發送回客戶端(存根)。存根反序列化結果並將其返回給調用此方法的代碼。