Пример ServletContextListener
Слушатель что-то сидит и ждет, когда произойдет указанное событие, затем «перехватывает» событие и запускает собственное событие.
Problem
Вы хотите инициализировать пул соединений с базой данных перед запуском веб-приложения. Есть ли в среде веб-приложения метод main ()?
SolutionServletContextListener - это то, что вы хотите, он запустит ваш код до запуска веб-приложения.
1. Пример ServletContextListener
В этом примере мы покажем вам, как создать собственный класс слушателя, реализовавServletContextListener, который запускает ваш код до запуска веб-приложения.
1.1 Create a class and implement the ServletContextListener interface.
MyAppServletContextListener.java
package com.example.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyAppServletContextListener
implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("ServletContextListener destroyed");
}
//Run this before web application is started
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("ServletContextListener started");
}
}
1.2 Put it in the deployment descriptor.
web.xml
com.example.listener.MyAppServletContextListener
1.3 Starting Tomcat….
//... Dec 2, 2009 10:11:46 AM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.20 ServletContextListener started <-------------- Your code here, before we application ---> Dec 2, 2009 10:11:46 AM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 //... INFO: Server startup in 273 ms
Note
Для контейнера сервлетов 3.x вы можете аннотировать слушателя с помощью@WebListener, не нужно объявлять вweb.xml.