Я создал соединение RMI, но не знаю, как уведомить сервер о завершении или сбое клиента. Я нашел метод unreferenced(), но он не работает. Есть идеи?
(сервер многоклиентен, только один объект передается клиенту, но у любого клиента есть другой экземпляр).
Спасибо.Java - Обнаружение сбоя клиента с RMI
ответ
Проблема в том, что если клиент терпит крах, трудно заставить его что-либо сделать, и вы в конечном итоге ожидаете таймаутов.
Обычное решение - установить «сердцебиение», периодический вызов; если сердцебиение клиента не доходит до вас, скажем, 2 периода, вы считаете, что он мертв.
Метод unreferenced() действительно работает, но он занимает интервал времени DGC, прежде чем он это сделает. Это зависит от версии JDK. В прошлый раз я посмотрел, что прошло десять минут. Для управления этим свойством являются свойства системы, см. Домашнюю страницу Java RMI. Этот объект будет использоваться через объект RemoteSession, специфичный для клиента, который реализует API, который нужен клиенту, отслеживает состояние клиента и реализует Unreferenced как отказоустойчивый клиент, неспособный сохранить себя в живых или выйти из своего API.
Нет другого надежного способа обнаружения сбоя клиента, кроме отслеживания, когда вы последний раз вызывали вас, если у вас нет обратных вызовов на стороне клиента, и в этом случае сервер может попробовать позвонить клиенту. Однако они широко рассматриваются как риск для безопасности и, как правило, не работают через брандмауэры без специального обращения.
- 1. Обнаружение сбоя сервера с RMI
- 2. Сторона клиента Java RMI
- 3. Java RMI - время ожидания клиента
- 4. Java RMI - запуск чат-клиента
- 5. Соединение с потерей клиента Java RMI
- 6. Создание клиента коннектора RMI
- 7. Java JEditorPane: обнаружение сбоя подключения к сайту
- 8. Java RMI - вызов клиента на сервер
- 9. Обнаружение сбоя в коде
- 10. Алгоритм Bully - обнаружение сбоя
- 11. Обнаружение сбоя во время выполнения?
- 12. Метод вызова клиента RMI
- 13. Обнаружение/восстановление сбоя NSConnection
- 14. Обнаружение сбоя chrome.extension.sendRequest
- 15. Java RMI с JFrame - Получить текст от клиента до GUI
- 16. Обнаружение причины сбоя моего приложения
- 17. Сериализация Java с RMI
- 18. о концепции java-RMI
- 19. Ошибка при выполнении клиента RMI
- 20. Java RMI - удаленное развертывание
- 21. java RMI-соединение с сервером
- 22. Управление WebBrowser: обнаружение сбоя навигации
- 23. Java RMI в сети
- 24. Java RMI Compute Engine
- 25. Java RMI MVC Pattern
- 26. running java rmi server
- 27. Обнаружение сбоя процесса - код C++
- 28. Обнаружение сбоя диска perl-скрипт
- 29. Обнаружение сбоя приложения магазина Windows
- 30. Обнаружение сбоя приложения от AspNetCoreModule
Спасибо за ваш ответ. Этот механизм был моим последним выбором, так как я надеялся, что есть лучшая альтернатива. В любом случае, как сервер может вызвать клиента? Сервер, к настоящему времени, использует только: \t \t \t LocateRegistry.createRegistry (RMI_PORT); Naming.rebind (...); Есть ли способ «ping» клиента? Еще раз спасибо :) – Simon