2011-12-21 13 views
-1

什麼是繼電器RMI?我一直在搜索通話序列,但沒有得到任何滿意的結果。我無法理解一個存根客戶端和服務器上的角色,這是什麼後,我在服務器機器啓動RMI系統登錄嗎?當該主服務器的代碼如下所示:RMI中的繼電器是什麼?

import java.net.*; 
import java.rmi.*; 

public class AddServer { // when is this code executed 
    public static void main(String args[]) { 
    try { 
     AddServerImpl addServerImpl = new AddServerImpl(); 
     Naming.rebind("AddServer",addServerImpl); // what is it doing ? 
    } catch(Exception exc) { 
     System.out.println("Exception : " + exc); 
     } 
    } 
} 

執行?

RMI中的骨骼是什麼?

我看到維基百科下面的圖片 image 但不明白怎麼做到的功能,什麼是存根和骨架,當被調用接口的實現?

誰調用實際調用的服務器機器上的遠程方法?

+0

RMI中沒有「繼電器」。您問題的其餘部分是轉貼。 – EJP 2011-12-23 02:57:04

回答

0

我不確定你的問題,你知道什麼,你不清楚。

很簡單:

1)RMI是一種技術,它允許網絡上的不同的Java進程相互通信。

2)代替顯式地發送網絡消息(例如,直接地讀出和寫入插座),RMI使得它使得它看起來像一個標準的方法調用RMI程序。

RMI處理來自客戶端的包裝「方法參數」,然後再將它們在網絡上,以及在接收端拆包他們,使服務器能夠處理它們的細節的細節。

這一切都發生「在幕後」,透明的客戶端和服務器程序都。

3)客戶端「底下」是「存根」; 「封底」的服務器端是客戶端。 RMI註冊表只是讓客戶端「找到」服務器,並將正確的存根與正確的骨架相匹配。

4)服務器的RMI運行時始終「聽」(客戶機請求),但個別服務器對象僅在需要時調用。

5)你舉一個畫面:但這裏的完整解釋(含圖片):

http://en.wikipedia.org/wiki/Java_remote_method_invocation

6)如果你還「不明白」,這裏是另一個鏈接,可能會幫助:

http://docs.oracle.com/javase/tutorial/rmi/overview.html

---附錄12/21/2011 ---

問:能否請您解釋骨架

問:是Naming.rebind(...)被調用時的方法?

問:在服務器端又有什麼功能?

從最優秀Just Java 2慷慨報價,由彼得·凡·德·林登

1)「RMI」(遠程方法調用)是指在一個系統中的對象可以在其他地方上調用方法的對象系統。

2)您的客戶端對象與「存根」進行對話。它看起來像是一個對客戶端的對象調用,但實際上該存根負責獲取傳入的參數並將它們傳送給服務器機器上的夥伴。

3)客戶端如何找到它是服務器機器上的好友?客戶端調用「java.rmi.Naming.Lookup()」。

4)服務器機器知道關於您的RMI服務器類? Java服務器TOLD註冊表通過調用「java.rmi.Naming.bind()」。

5)服務器類如何知道獲取客戶端的遠程調用?有幾種方法,但希望你通過從java.rmi.server.UnicastRemoteObject派生服務器類來簡化自己的生活。

6)什麼是「骨架」?這是客戶端「存根」的服務器端模擬。這只是一個簡單的骨頭例程,除了解包客戶端存根通過網絡傳輸的數據外什麼也不做。

如果還不清楚,只需鍵入一個示例並觀察其行爲。

從命令行運行它,並在服務器命令行中指定「java -Djava.rmi.server.logCalls = true ...」,以查看正在進行的RMI調用。

'希望有幫助!

+0

你能解釋_skeleton_和什麼時候調用'Naming.rebind(...)'方法嗎?另外_stub_在服務器端做什麼? – 2011-12-21 07:03:26

+0

「下」的服務器端是客戶端? – EJP 2011-12-23 08:59:50