我希望在负载均衡器根据运行状况检查从池中删除服务器时继续提供请求。如果我知道服务器正在关闭,我可以将运行状况检查更改为运行状况不佳,并给予时间删除而不丢弃任何请求。
我的尝试:contextDestroyed
ServletContextListener
我在[{3}}中推迟关闭我的网络应用程序:
override def contextDestroyed(sce: ServletContextEvent) {
logger.info(s"contextDestroyed, suspend for $ShutdownDelayMS ms")
Thread.sleep(ShutdownDelayMS)
logger.info("Suspend finished, shutting down")
}
我看到日志和它们之间的延迟,但是一旦调用ServletContextListener
,服务器将不再提供请求,并且在stdout中我立即看到:
[INFO] Stopped ServerConnector@19877453{HTTP/1.1}{0.0.0.0:8080}
我是否误解了contextDestroyed
应该如何运作? Jetty 9.2.9.v20150224,javax.servlet 3.0.1。
contextDestroyed
的文档说:
收到ServletContext即将关闭的通知 下。所有servlet和过滤器都会被破坏 ServletContextListeners会收到上下文破坏的通知。
这意味着如果我正确读取请求,它会立即停止提供请求。是否有其他方法可以实现我尝试做的事情,创建一个允许请求继续提供服务的延迟?