我了解正常关闭会完成预先存在的请求,同时拒绝新请求。
我将如何优雅地关闭运行在 Apache Tomcat 实例上的 Java 应用程序?不确定我是否需要扩展我当前的应用程序或者它是否是一个简单的终端命令。
我了解正常关闭会完成预先存在的请求,同时拒绝新请求。
我将如何优雅地关闭运行在 Apache Tomcat 实例上的 Java 应用程序?不确定我是否需要扩展我当前的应用程序或者它是否是一个简单的终端命令。
我希望您的意思是在您的 Tomcat 上运行的 WebApp。
您可以在 web.xml 中定义一个监听器:
<listener>
<listener-class>
your.project.ContextListener
</listener-class>
</listener>
它可以处理上下文(WebApp)的关闭。
import javax.servlet.ServletContextListener;
public class ContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
cleanYourResources();
}
}
当 Tomcat 关闭或在 Tomcat 管理器中停止 web 应用程序时,将发送 contextDestroyed 事件,并且您的侦听器可以进行必要的内务处理。通常,它涉及停止后台线程(如计划任务)、保存缓存内容、关闭资源池等)。