我必须创建一个实现ServletContextListener
的类,以便在初始化或Tomcat关闭期间添加事件。但是,该类必须位于WEB-INF/lib
内的jar文件中。在做了一些阅读之后,我发现这是不可能的,另一种方法是使用ServletContainerInitializer
。但是,只有onStartup()
方法可用。
还有其他替代方法,我还可以在关闭或销毁Web应用程序期间添加事件吗?
我正在使用Tomcat 8和Java 8顺便说一句。
答案 0 :(得分:3)
让您的ServletContainerInitializer
以编程方式添加ServletContextListener
,然后在其contextDestroyed()
中执行所需的工作。
servletContext.addListener(YourServletContextListener.class);
答案 1 :(得分:-1)
不确定您是如何测试代码的。但是这个ServletContextListener对我来说在Tomcat 8.5.5上运行正常。只需尝试此代码,无需将其放在单独的JAR文件中。
@WebListener
public class AppContextListener implements ServletContextListener{
Logger log = LoggerFactory.getLogger(AppContextListener.class);
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
log.info("### Context is destroyed ###");
}
}