【问题标题】:Gracefully shut down embedded tomcat 7优雅关闭嵌入式 tomcat 7
【发布时间】:2013-08-10 22:11:41
【问题描述】:

我们有一个使用嵌入式 tomcat 接受 http 请求的服务器。

当我们关闭服务器时,我们希望:

1) 阻止所有传入请求

2) 等待已经接受的请求成功完成,然后停止 tomcat 引擎

经过一些测试,#1 可以通过停止连接器来实​​现。

对于#2,我们尝试停止 tomcat 引擎,但看起来它并没有等待现有请求完成。

关于如何做 #2 的任何想法?

【问题讨论】:

    标签: java tomcat shutdown embedded-tomcat-7


    【解决方案1】:

    停止连接器是停止处理新请求的最佳方式。

    Tomcat 允许请求完成处理的时间可以根据上下文的 unloadDelay 属性进行配置。它默认为 2000(毫秒),因此将其设置为更高的值应该允许请求完成。

    【讨论】:

    • 在 Tomcat 对象上调用 stop 是否已经停止服务器处理新请求,然后等待现有请求完成(基于 unloadDelay)?如果是这样,为什么我们需要在 Connector 上调用 stop?
    【解决方案2】:
    1. 阻止所有传入请求。

    使用布尔值向您的应用程序添加一个过滤器以接受请求,默认情况下它接受。

    添加一个上下文监听器。并完成方法 onContextDestroyed() 添加您的代码以修改该布尔值

    【讨论】:

    • OP 已经确定了一种更好的方法来做到这一点。他们需要帮助来完成请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2012-02-21
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多