"Завершение работы сервера Tomcat" и т. Д. сообщение всем зарегистрированным в данный момент пользователям - PullRequest
0 голосов
/ 19 августа 2011

Я хотел бы сообщить всем вошедшим в систему пользователям, что сервер отключится.Этот особый интерес был бы хорош в приложении ajaxfy (RIA).Каковы возможные решения?Каковы наилучшие практические решения?

Было два возможных конечных сценария:

  1. Отправьте текст $ x на сервер ergo всем пользователям.(«Сервер не будет доступен в течение нескольких минут.»)
  2. Отправьте на сервер ключ $ y, который будет использоваться для создания (пользовательского) текста для всех пользователей.("SERVER_SHUTDOWN")

Среда: Tomcat (6/7), Spring 3+. Обмен сообщениями с пользователями: с опросом или псевдоотдачей через асинхронный сервлет.

Идеи

1.Context.destroy (): Реализация пользовательского уничтожения ContextListener

Я не думаю, что это хорошее решение - блокировать внутри блокировки "destroy ()", потому что мы должны ждать около 5-10 секунд, чтобы убедиться, что все вошедшие пользователи получают сообщение.

2.JMX Beans

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

3.Любые другие очереди сообщений, такие как AMQP или ActiveMQ

Как 2.

1 Ответ

1 голос
/ 19 августа 2011

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

Есть пара вещей, которые вы могли бы делать.

Во-первых, если сервер будет остановлен из-за планового технического обслуживания, вы можете добавить сообщение на веб-страницы, например;

Сервер будет недоступен в понедельник, 22 августа, в 9 часов вечера - 6 часов по расписанию. поддержание. Свяжитесь с knalli@example.com для получения дополнительной информации.

Во-вторых, перед выключением сервера перенаправьте запросы на страницу статического хранения (просто измените конфигурацию веб-сервера). Эта удерживающая страница должна содержать информацию о том, почему сервер не работает и когда он снова будет доступен.

С обоими вариантами также важно планировать время простоя сервера. Нормальные окна для технического обслуживания в нерабочее время. Кроме того, если у вас есть несколько серверов, вы можете кластеризовать их. Это позволяет вам вывести отдельные серверы из кластера для обслуживания без какого-либо простоя сервера вообще .

...