当 Servlet
容器启动或终止 Web 应用时,会触发 ServletContextEvent
事件,该事件由 ServletContextListener
来处理。在 Servlet API
中有一个 ServletContextListener
接口,接口中定义了处理 ServletContextEvent
事件的两个方法,它能够监听 ServletContext
对象的生命周期,实际上就是监听 Web 应用的生命周期。我们可以通过实现这两个方法,来实现在 Tomcat
启动和停止时执行一定的操作。
监听器类编写
新建一个监听器类 TomcatListener
并实现 ServletContextListener
接口
1 | public class DemoListener implements ServletContextListener { |
配置 web.xml
在 web.xml
中添加 listener
条目
1 | <listener> |
验证
将 WAR 包部署到 Tomcat
并启动,检查 catalina.out
在 Tomcat
启动时看到如下日志:
1 | 15-Aug-2018 15:58:44.632 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/Cellar/tomcat@8/8.5.28/libexec/webapps/tomcatlistener.war] |
在 Tomcat
停止时看到如下日志:
1 | 15-Aug-2018 16:02:22.582 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina] |
输出内容与 TomcatListener
所写内容一致,Q.E.D.