2010-11-20 93 views
2

我是Java和RMI的新手,但我嘗試以很多客戶端連接到單個服務器的方式編寫我的應用程序。到目前爲止,這麼好....使用RMI檢測服務器崩潰

但是,當我關閉服務器(模擬崩潰或通信問題),我的客戶端仍然不知道,直到我下一個電話到服務器。這是一項要求,即我的客戶繼續在沒有服務器的情況下以「離線模式」工作,並且越早知道我離線越好,用戶體驗就越好。

是否有一個活動連接保持打開,客戶端可以檢測到問題或類似的問題 - 或者我只需等待下一次呼叫失敗?我想我可以有一個'健康檢查'ping服務器,但它似乎可能不是最好的方法。

感謝所有幫助

回答

1

其實我只是想更多地瞭解RMI和CORBA,但我並不遙遠的你。我所知道的是,這些系統的構建也更便宜,而據我所知,主動連接是一件昂貴的事情。

我建議你使用多播地址,你的服務器以某種方式發送「我還在這裏」但不使用TCP連接,UDP應該足以達到這個目的,並且效率更高。

1

我在編寫RMI應用程序(uni任務)時着眼於此,但沒有遇到任何內置功能來測試遠程系統是否存在。我只是使用UDP心跳機制來做到這一點。

1

(未測試)。重複向服務器反覆分配RMI調用(只是「等待X秒」然後返回),應該告訴服務器關閉時執行失敗。