2011-04-17 172 views
0

我想實現的是通過中央服務器連接的客戶端,與其他客戶,使他們能夠交換信息和文件的簡單的聊天應用程序。我還需要實施通知框架。例如,如果用戶簽名成功,或者他的好友登錄,他會收到通知。 現在在世界RMI這是怎麼實現的? 我想有一個遠程對象「連接類」,客戶端調用它的方法,如「登入」,「斷開連接」等...... 至於通知框架類他們也必須是遠程?或者他們可以躺在服務器上? 謝謝Java RMI的概念

回答

1

遠程系統之間的事件消息傳遞有點棘手。以下是發生的情況:

  • 客戶端必須註冊對服務器端觸發事件的興趣。要註冊,客戶端必須遠程可用於事件源對象。

  • 爲了能夠註冊,客戶端必須首先找到服務器,因此服務器對象必須遠程可用於客戶端。

伊克,對不對?這就是實現遠程事件處理的簡單的pattern。 幾個星期前,我開始一個教程,是heade沿着這條道路 - 這是在這裏,而且我希望本週結束前添加一些內容。唉,使租金的需求已經干擾,我不能夠以最快的速度,因爲我想給它添加。 如果您不能等待,然而,這是關鍵:雙方必須是遠程可用的郵件系統一起工作。

服務器以及客戶端必須是遠程對象。

讓所有客戶端都實現遠程接口。

RemoteClientIfc extends Remote { 
    void inform(); 
} 

//have a remote method register() on the *Server* object which accepts RemoteClientIfc. 
//c'd be something like this... 
register(RemoteClientIfc client){ 
    arrayListofClients.add(client); 
} 

//So client will do a look up on the remote server object and register itself. 
remoteObj.register(clientInstance); 

//In the remote server you 
//can probably have another method to send notifications to the client. 
//Run through the ArrayList and call 
//inform() on each of them. 
//Thus the client will receive notification. 
tellClients(){ 
    Iterator i = .... 
    while (i.hasNext()){ 
     ((RemoteClientIfc).i.next()).inform(); 
    } 
}