#java #rmi
#java #rmi
Вопрос:
Я разработал приложение RMI, в котором сервер RMI должен запускаться несколько раз, а также должен останавливаться несколько раз.
- Как я могу остановить сервер RMI, не закрывая приложение?
- Как мне отправить уведомления всем клиентам о том, что сервер собирается остановиться?
Комментарии:
1. Проголосовавший за необъяснимое понижение. Однако вопрос лучше было бы выразить на стандартном английском.
Ответ №1:
Я не уверен, что вы имеете в виду под «сервером RMI», реестром RMI, который вы не можете остановить программно. Но вы можете остановить свой сервис (привязанный к реестру RMI). Вы должны вызвать пользовательский метод, чтобы аккуратно завершить работу вашей службы, а затем unbind
удалить ее из реестра.
Перед этим завершением работы и отменой привязки вы должны сообщить всем подключенным клиентам, что служба будет закрыта. Это уведомление может быть сделано с помощью обратного вызова. Поиск RMI callback
даст вам множество примеров и руководств.
Комментарии:
1. Вы можете остановить реестр, который вы создаете yourslf, с помощью createRegistry(), с помощью UnicastRemoteObject.unexportObject().
Ответ №2:
На самом деле вам не нужно отправлять уведомление. Клиенты неэкспортированного удаленного объекта получат NoSuchObjectEzception при следующем вызове удаленного метода на нем. Им просто нужно распознать ситуацию.