Пример ServletContextListener

Пример ServletContextListener

Слушатель что-то сидит и ждет, когда произойдет указанное событие, затем «перехватывает» событие и запускает собственное событие.

Problem
Вы хотите инициализировать пул соединений с базой данных перед запуском веб-приложения. Есть ли в среде веб-приложения метод main ()?

Solution
ServletContextListener - это то, что вы хотите, он запустит ваш код до запуска веб-приложения.

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.