Ответ 1
Пусть ваш ServletContainerInitializer
программно добавляет ServletContextListener
, который, в свою очередь, выполняет желаемое задание в contextDestroyed()
.
servletContext.addListener(YourServletContextListener.class);
Мне нужно создать класс, который реализует ServletContextListener, чтобы добавить событие во время инициализации или закрытия Tomcat. Однако класс должен находиться в файле jar внутри WEB-INF/lib. После некоторых чтений я узнал, что это невозможно, и альтернативой является использование ServletContainerInitializer. Однако доступен только метод onStartup(). Есть ли другие альтернативы, где я могу добавить событие во время выключения или разрушения веб-приложения? Я использую Tomcat 8 и java 8 btw.
Пусть ваш ServletContainerInitializer
программно добавляет ServletContextListener
, который, в свою очередь, выполняет желаемое задание в contextDestroyed()
.
servletContext.addListener(YourServletContextListener.class);
Не уверен, как вы протестировали свой код. Но это 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 ###");
}
}