java - quartz - servletcontextlistener ejemplo
Orden de ejecuciĆ³n ServletContextListener (2)
¿Cómo definir el orden de la ejecución de ServletContextListener debido a la inicialización de la aplicación, si tengo varios ServletContextListener y algunos de ellos declarados en el descriptor de implementación y otros con anotación (@WebListener)?
Parece que conoce el orden de ejecución, pero desea saber qué sucederá si se declaran algunos oyentes en el descriptor de implementación y algunos utilizan la anotación, de modo que el descriptor de implementación y luego la anotación.
Tenga en cuenta que los constructores de todos los oyentes serán llamados primero en orden de descriptor de despliegue y luego anotación y luego los métodos del ciclo de vida en el mismo orden.
Si desea ejecutar escuchas en un orden particular, debe usar el descriptor de implementación para definirlos.
Las declaraciones a continuación se copian de la especificación del servlet :
8.2.3 :
Si el orden en que se invocan los oyentes, los servlets y los filtros es importante para una aplicación, se debe utilizar un descriptor de despliegue. Cuando se usan anotaciones para definir los oyentes, servlets y filtros, no se especifica el orden en que se invocan.
El orden se basará en el orden en que se definieron en el descriptor y en el elemento de ordenamiento absoluto en el
web.xml
o un elemento de ordenamiento enweb-fragment.xml
.Antes de este lanzamiento de la especificación (Java ™ Servlet Specification, versión 3), los escuchas de contexto se invocaban en orden aleatorio. A partir de Servlet 3.0, los oyentes se invocan en el orden en que se declaran en el web.xml.
Las implementaciones de
javax.servlet.ServletContextListener
se invocan en su métodocontextInitialized
en el orden en el que se han declarado, y en sucontextDestroyed
MétodocontextDestroyed
en orden inverso.
Si tiene varios ServletContextListeners y algunos de ellos están declarados en el descriptor de implementación y otros con anotación, son los oyentes definidos en web.xml
que obtendrán la precedencia. La declaración a continuación se copia de la misma sección (8.2.3) de la especificación del servlet:
La configuración especificada en el web.xml principal o un fragmento web tiene prioridad sobre la configuración especificada mediante anotaciones.