java - example - servlet life cycle oracle
Cómo determinar el orden de los oyentes en web.xml (3)
¿Por qué es eso vago? El orden en web.xml es muy específico en el orden en el que se llaman, se establece muy claramente en la especificación de Java EE. Está completamente bien confiar en eso.
Obtuve un grupo de oyentes de contexto de servlets en mi aplicación web Java, cada uno de ellos recopilando información sobre el entorno.
Algunos de ellos dependen de información recopilada por otro oyente. Pero no puedo determinar el orden en el que los oyentes están registrados y llamados, así que tengo que duplicar el código.
Entiendo que los oyentes están registrados en el orden de su pedido en web.xml pero esto me suena un poco vago, demasiado vago como para confiar en él.
¿Tienes alguna pista de cómo puedo resolver mi problema?
Parecería que puedes crear un ListenerManager que colocas como tu único oyente y haz que contenga a los otros oyentes. Cuando llegue el evento, simplemente llame a cada uno de los otros oyentes en el orden que desee (probablemente el orden en que los creó en el constructor del ListenerManager).
Desafortunadamente, esto significa un cambio de código cuando agrega Oyentes, pero puede evitarlo mediante el uso inteligente de los archivos de propiedades y el código de creación de nombres de clase.
Todos los contenedores de servlets y contenedores Java EE implementan estrictamente esta parte de la especificación. Puede confiar en el hecho de que se llama a los oyentes en el orden que especificó en web.xml.
Puede tener una estructura de datos de nivel de aplicación (HashMap) que cada filtro / oyente actualizará cuando encuentre los datos de las solicitudes. Esto permitirá que cada Oyente actualice solo lo que es esencial. Puede colocar el código común en un Oyente base para que no haya duplicación de código.