我在关闭 Tomcat 时遇到问题。请求到达时 servlet 容器正在关闭似乎被连接器阻止 直到容器关闭完成。
问题是,我们的 servlet 最多可能需要一分钟才能关闭,这意味着 在此期间到达的连接最多保留一分钟。
此行为是否正确/符合预期?
理想的 Tomcat 关闭行为不是
- 让现有的请求 完成(因为它已经完成),但是
- 拒绝新连接(而不是 接受并持有它们)?
最佳答案
显然,您不是唯一注意到/评论此行为的人;请参阅此“tomcat-user”帖子:
(事实上,该帖子与您的问题之间的相似之处表明您与 Andry Eng 之间存在某种联系……)
很明显,这在某种意义上是“预期的”行为。
是否“正确”,见仁见智。如果 Tomcat 开发人员不同意您的意见,那就没有意义了。
而且,就其值(value)而言,在这里发布关于“理想”行为的修辞性问题也没有实际意义。显然,Tomcat 开发人员要么不在 StackOverflow/“tomcat-users”中闲逛……要么他们不愿意讨论这个问题。
那么您有哪些可能的解决方案?
此链接的问答解释了解决方法 - How to process servlet requests during long shutdown
您可以在 Tomcat 问题跟踪器上提出问题。问题是您的问题可能会在 list 上停留数月或数年才能得到解决。或者它可以被“驳回”。
但是,过去似乎没有人将此作为问题提交。
您可以想出如何修改 Tomcat 以在关机期间拒绝新请求。然后将您的(测试过的)更改作为补丁提交。
您可以雇人为您完成这项工作。例如,查看此处列出的人员/组织:http://wiki.apache.org/tomcat/SupportAndTraining .
关于java - HTTP 请求在 Tomcat 关闭期间被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29275922/