如何从 servlet 内关闭 servlet 容器?
是否有一种可移植的方法来请求 Servlet 容器从 servlet 内优雅地关闭?
我所说的可移植是指一种适用于所有标准兼容容器(Tomcat、Jetty、Winstone 等)的技术。
请注意,这与 Servlet.destroy() 方法相反,后者在容器删除 Servlet 时被调用。
Is there a portable way to request a Servlet container to shutdown gracefully, from within a servlet?
By portable I mean a technique that will work on all standard compliant containers (Tomcat, Jetty, Winstone, etc).
Note that this is the opposite of the Servlet.destroy() method, which gets called when the container is taking the servlet down.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我没有在 Java EE Servlet 规范 中定义任何方式知道,它需要它才能便携。
将其链接到 servlet API 规范,因此如果有这样的方法,它将记录在某处。
我也同意,让一个 servlet 能够关闭容器是一个非常糟糕的主意!
There's no way defined in the Java EE Servlet Spec that I know of, which there would need to be for it to be portable.
The link it to the servlet API specs, so if there's such a way, it'll be documented there somewhere.
I also agree that it'd be a really bad idea for one servlet to be able to shut down the container!
System.exit();
如果您在没有 SecurityManager 的情况下运行。
编辑:这优雅吗?这取决于容器。
在 Tomcat 上,如果你用 0 调用它,
它就像 shutdown.sh 或 Catalina.stop() 一样优雅,因为 shutdown hook 只是调用 stop()。
System.exit();
If you are running with no SecurityManager.
EDIT: Is this graceful? This depends on containers.
On Tomcat, if you call it with 0
It's as graceful as shutdown.sh or Catalina.stop() because the shutdown hook simply calls stop().