2011-02-08 15 views
6

Przeczytałem, że kolejność przetwarzania filtrów może być określona przez kolejność, w jakiej są zadeklarowane w web.xmlJak określić kolejność odwzorowań filtrów na GlassFish?

Ale jak to zrobić bez web.xml, używając na przykład adnotacji @ WebService? Nie chcę zaśmiecać mojego pliku web.xml

+0

Nie można tego kontrolować za pomocą atrybutu 'loadOnStartupOrder'? – musiKk

Odpowiedz

7

Wygląda na to, że filtrów z adnotacjami jest niemożliwy. Servlet 3.0 Specification mówi:

Jak opisano powyżej, przy użyciu adnotacje zdefiniowanie słuchaczy serwletów i filtrów, kolejność, w jakiej są one wywoływana jest nieokreślona.

+3

Cóż, wracamy do czasów epoki kamienia łupanego. – rapadura

+1

Czy uważasz, że łańcuch filtrów nie zawierałby przepisów dotyczących umieszczania linków w określonej kolejności? Czy ludzie, którzy to określili, nie rozumieją prawdziwego świata? –

+0

Niewiarygodne ... – rapadura

2

Jak zauważa @axtavt, nie można tego zrobić. Oto dlaczego (jak sądzę) zaprojektowali to w ten sposób.

Aby określić kolejność, adnotacje wymagają dodatkowego argumentu, który (w jakiś sposób) określa pozycję w łańcuchu; na przykład porządek'. Są problemy z tym:

  1. Jeśli aplet ma szereg filtrów, których kolejność jest określona przez parametry adnotacji, wówczas programista/Deployer musi zbadać adnotacje dla wszystkich klas filtrów wypracować co rzeczywiste zamówienie to.

  2. Dana klasa filtrów może teoretycznie być używana w wielu serwletach, nawet w wielu aplikacjach internetowych. Każdy serwlet lub aplikacja internetowa może chcieć, aby kolejność filtrów była inna. Nie można tego osiągnąć po prostu za pomocą adnotacji na klasie filtru.

  3. Jeśli ktoś wdroży aplikację internetową potrzebną do zmiany kolejności filtrowania, będzie musiał zmodyfikować kod źródłowy, skompilować i ponownie skompilować plik WAR.

Wyobrażam projektanci spojrzał na te problemy i zdecydował, że najlepiej miejsce, aby określić kolejność filtrów znajduje się w pliku web.xml.

+0

Więc w zasadzie dlatego, że teoretycznie ktoś może użyć filtra na wielu aplikacjach internetowych ... A inne powody są takie, jak "ale to jest nużące". Wciąż lubię, że próbujesz wyjaśnić dlaczego. – rapadura

Powiązane problemy