如何执行优雅的关机(Java)?

如何执行优雅的关机(Java)?,java,tomcat,application-shutdown,Java,Tomcat,Application Shutdown,我理解,优雅的关闭会在拒绝新请求的同时完成预先存在的请求 我将如何对运行在ApacheTomcat实例上的Java应用程序执行优雅的关闭?不确定我是否需要扩展当前的应用程序,或者它是否是一个简单的终端命令。我希望您指的是在Tomcat上运行的Web应用程序 您可以在web.xml中定义侦听器: <listener> <listener-class> your.project.ContextListener </listener-c

我理解,优雅的关闭会在拒绝新请求的同时完成预先存在的请求


我将如何对运行在ApacheTomcat实例上的Java应用程序执行优雅的关闭?不确定我是否需要扩展当前的应用程序,或者它是否是一个简单的终端命令。

我希望您指的是在Tomcat上运行的Web应用程序

您可以在web.xml中定义侦听器:

<listener>
    <listener-class>
         your.project.ContextListener
     </listener-class>
</listener>

当Tomcat正在关闭或在Tomcat manager中停止webapp时,会发送contextDestroyed事件,您的侦听器可以执行必要的内务管理。通常,它涉及停止后台线程(如计划任务)、保存缓存内容、关闭资源池等)。

但这并不包括OPs对正常关闭的解释,即完成运行的请求但拒绝任何新请求。
import javax.servlet.ServletContextListener;
public class ContextListener implements ServletContextListener {

   @Override
   public void contextDestroyed(ServletContextEvent sce) {
    cleanYourResources();
   }

}