Cómo definir el orden de ejecución del filtro de servlet utilizando anotaciones en WAR
167
Si definimos filtros de servlet específicos de webapp en los propios de WAR web.xml, entonces el orden de ejecución de los filtros será el mismo que el orden en que se definen en el web.xml.
Pero, si definimos esos filtros usando @WebFilteranotaciones, ¿cuál es el orden de ejecución de los filtros y cómo podemos determinar el orden de ejecución?
De hecho, no puede definir el orden de ejecución del filtro mediante @WebFilteranotaciones. Sin embargo, para minimizar el web.xmluso, es suficiente anotar todos los filtros con solo una filterNamepara que no necesite la <filter>definición, sino solo una <filter-mapping>definición en el orden deseado.
podrían haber introducido un orderatributo de una @WebFilterMappinganotación anidada . Me pregunto si no lo hicieron por simplicidad
Bozho
12
@Bozho: Eso no sería lo suficientemente específico. ¿Qué sucede si su aplicación web incluye bibliotecas de terceros que incluyen un filtro? Es difícil decir su orden de antemano.
BalusC
1
@BalusC: Algo salió mal en su ejemplo: el patrón de URL se cierra con un nombre de filtro.
AndrewBourgeois
3
@AndrewBourgeois: Corregido. Fue un error de copia. Lástima que el editor Markdown no tenga una validación XML integrada como en Eclipse;)
BalusC
66
El uso <url-pattern />no funciona en JBoss EAP 6.1: anula el @WebFiltervalor y evita que el filtro se ejecute en absoluto.
seanf
12
La especificación de Servlet 3.0 no parece proporcionar una pista sobre cómo un contenedor debe ordenar los filtros que se han declarado a través de anotaciones. Sin embargo, está claro cómo hacer para ordenar filtros a través de su declaración en el archivo web.xml.
Cuidate. Utilice los filtros de orden de archivos web.xml que tienen interdependencias. Intente hacer que sus filtros sean todos independientes en orden para minimizar la necesidad de usar un archivo web.xml.
Tengo muchos filtros Servlet en mi proyecto, de ellos solo se debe llamar primero un filtro particular y el orden de otros filtros no es una preocupación. ¿Tengo que profanar todos los filtros en web.xml? ¿O hay atajos?
order
atributo de una@WebFilterMapping
anotación anidada . Me pregunto si no lo hicieron por simplicidad<url-pattern />
no funciona en JBoss EAP 6.1: anula el@WebFilter
valor y evita que el filtro se ejecute en absoluto.La especificación de Servlet 3.0 no parece proporcionar una pista sobre cómo un contenedor debe ordenar los filtros que se han declarado a través de anotaciones. Sin embargo, está claro cómo hacer para ordenar filtros a través de su declaración en el archivo web.xml.
Cuidate. Utilice los filtros de orden de archivos web.xml que tienen interdependencias. Intente hacer que sus filtros sean todos independientes en orden para minimizar la necesidad de usar un archivo web.xml.
fuente