2010-11-20 4 views
2

Я новичок в Java и RMI, но я пытаюсь написать свое приложение таким образом, что есть много клиентов, подключающихся к одному серверу. До сих пор, так хорошо ....Обнаружение сбоя сервера с RMI

Но когда я закрываю сервер (имитируя авария или проблему связи), мои клиенты остаются не в курсе, пока не сделаю свой следующий звонок на сервер. Это требование, чтобы мои клиенты продолжали работать без сервера в автономном режиме, и чем скорее я узнаю, что я в сети, тем лучше будет опыт пользователя.

Есть ли активное соединение, которое остается открытым, что клиент может обнаружить проблему с чем-то подобным - или мне просто нужно подождать, пока не завершится следующий вызов? Я полагал, что я мог бы «проверить здоровье» на сервере, но казалось, что это не лучший подход.

Спасибо за любую помощь

ответ

1

на самом деле я просто пытаюсь узнать больше о RMI и CORBA, но я не так далеко, как вы. все, что я знаю, это то, что эти системы также построены дешевле, и насколько я знаю, активный conneciton - дорогая вещь.

Я предлагаю вам использовать многоадресный адрес, на который ваш сервер как-то отправляет «я все еще здесь», но без использования TCP-соединений UDP должен быть достаточным для этой цели и более эффективным.

1

Я немного изучил это, когда писал приложение RMI (назначение uni), но я не сталкивался с какой-либо встроенной функциональностью для проверки того, жив ли удаленная система. Я бы просто использовал механизм биения UDP для этого.

1

(Untested). При повторном вызове RMI на сервер, который просто выполняет «ожидание X секунд», а затем возвращается, следует сказать, что выполнение завершилось неудачно, когда сервер был сбит.

Смежные вопросы