2011-02-08 12 views

Respuesta

7

Parece que es imposible para los filtros anotados. Servlet 3.0 Specification dice:

Como se describió anteriormente, cuando se utiliza anotaciones para definir los oyentes, servlets y filtros, el orden en el que son invocado está especificado.

+3

Bueno, de vuelta a los días de la edad de piedra, entonces. – rapadura

+1

¿Puedes creer que una cadena de filtros no tenga disposiciones para colocar los enlaces en un orden específico? ¿Las personas que especificaron esto no entendieron el mundo real? –

+0

Increíble ... – rapadura

2

Como notas de @axtavt, no puede hacerlo. He aquí por qué (creo) lo diseñaron de esa manera.

Para especificar el orden, las anotaciones necesitarían un argumento adicional que (de alguna manera) especifique la posición en la cadena; p.ej. una orden'. Hay problemas con esto:

  1. Si un servlet tiene una serie de filtros cuyo fin es especificada por los parámetros de anotación, a continuación, el programador/implementador tiene que examinar las anotaciones para todas las clases de filtros de averiguar lo que el el orden real es

  2. Una clase de filtro determinada puede, en teoría, usarse en múltiples servlets, incluso en varias aplicaciones web. Cada servlet o webapp puede querer que el orden del filtro sea diferente. No puede lograr esto simplemente usando una anotación en la clase de filtro.

  3. Si alguien que implementa una aplicación web necesita modificar el orden de filtro, deberá modificar el código fuente, volver a compilar y reconstruir el archivo WAR.

me imagino los diseñadores vieron estos problemas y decidieron que la mejor lugar para especificar el orden del filtro está en el archivo web.xml.

+0

Así que, básicamente, porque en teoría alguien podría usar un filtro en varias aplicaciones web ... Y las otras razones son como "pero es tedioso". Aún me gusta que trates de razonar por qué. – rapadura

Cuestiones relacionadas