Ya hemos hablado del concepto de ServletContext en un articulo anterior .Vamos a complementar aquel articulo centrandonos en otro concepto importante de JEE a nivel web los listeners y en concreto en este caso el ServletContextListener . Estos listener estan diseñados para escuchar los diferentes eventos que se producen en el ciclo de vida de la aplicacion web. Los listener mas importantes son los siguientes .
ServletContextListener: Listener que se encarga de gestionar los eventos generales de la aplicación como son arranque y parada.
HttpSessionListener :Listener que se encarga de gestionar los propios eventos de la sessión como creación ,invalidación y destrucción de sessiones.
ServletRequestListener : Listener que se encarga de los eventos de creación y destruccion de peticiones.
Usando ServletContextListener
En nuestro caso vamos ha hacer un ejemplo elemental de ServletContextListener de tal forma que nos avise por consola cuando la aplicación se arranca y se para.
package com.arquitecturajava; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; @WebListener public class MiListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.print("aplicacion web arrancada"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.print("aplicacion web parada"); } }
Este listener registra dos eventos fundamentales contextInitialized que se ejecuta al arrancar la aplicación y contextDestroyed que se ejecuta cuando la aplicación finaliza.
Podemos usar estos eventos para cargar datos en memoria cuando arranca la aplicación enviarnos un correo informándonos de inicio o parada ,o para otras muchas necesidades que se nos ocurran.
ServletContextListener y @WebListener
Hemos hecho uso de la anotación WebListener de Servlet 3.0 por simplicidad .Sin embargo podríamos haber registrado el listener a nivel de web.xml que es algo mas clásico y que permite un control mas exhaustivo . Ya que podriamos declarar varios y definir el orden entre ellos en el fichero.
</pre> <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>ServletContextListener</display-name> <listener> <listener-class>com.arquitecturajava.MiListener</listener-class> </listener> </web-app> <pre>
[…] Otros artículos relacionados : ServletContext, Java Filter , ServletContextListener […]
[…] Otros artículos relacionados : Servlet3.0 ,ServletContext ServletFilters […]
[…] artículos relacionados: ServletContext ,ServletContextListener , Servlet […]
[…] Otros artículos relacionados : Usando ServletContext , ServletContextListener ,ServletLifeCycle […]
[…] Otros artículos relacionados : El concepto de HttpSession , Manejando ServletContextListener […]