“关闭tomcat服务器”etcpp。消息给所有当前登录的用户

时间:2011-08-19 08:25:42

标签: java spring tomcat backend

我想通知所有登录用户服务器将关闭。这种特殊的兴趣在ajaxfy应用程序(RIA)中会很好。 有哪些可能的解决方案?什么是最佳实践解决方案?

有两种可能的最终方案:

  1. 向所有用户发送文本$ x到服务器ergo。 (“服务器将在几分钟内无法使用。”)
  2. 将密钥$ y发送到服务器,该服务器将用于为所有用户生成(自定义)文本。 ( “SERVER_SHUTDOWN”)
  3. 环境:Tomcat(6/7),Spring 3+ 向用户发送消息:通过异步servlet进行轮询或伪推送。

    1。 Context.destroy():实现自定义ContextListener的销毁

    我不认为在“destroy()”中阻塞是一个很好的解决方案 - 阻塞,因为我们应该等待大约5-10秒,以确保所有登录用户都收到消息。

    2。 JMX Beans

    这意味着,任何服务器服务操作(启动,停止)都必须调用发送消息的特殊程序。

    第3。任何其他消息队列,如AMQP或ActiveMQ

    喜欢2。

1 个答案:

答案 0 :(得分:1)

除非服务器定期关闭并且关闭对用户产生重大影响(例如,他们将丢失任何未提交的工作 - 想一想在页面上编辑一个大帖子)然后通知服务器关闭将不会真正好处。

您可以做一些事情。

首先,如果由于计划维护而导致服务器关闭,那么您可以在网页上添加一条消息,例如;

  

服务器将于8月22日星期一下午9点至早上6点暂停服务   保养。有关更多信息,请联系knalli@example.com。

其次,在关闭服务器之前,将请求重定向到静态保留页面(只需更改您的Web服务器配置)。此保留页面应包含服务器停机原因以及何时可以再次使用的信息。

使用这两个选项,对于计划服务器停机时间也很重要。在正常工作时间之外维护窗口是正常的。或者,如果您有多个服务器,则可以对它们进行群集。这使您可以将各个服务器从群集中取出来执行维护,而无需任何服务器停机