Cara menetapkan urutan eksekusi servlet filter menggunakan anotasi dalam WAR
167
Jika kami menetapkan filter servlet spesifik webapp di WAR sendiri web.xml, maka urutan eksekusi filter akan sama dengan urutan yang didefinisikan dalam web.xml.
Tetapi, jika kita mendefinisikan filter tersebut menggunakan @WebFilteranotasi, bagaimana urutan eksekusi filter, dan bagaimana kita dapat menentukan urutan eksekusi?
Anda memang tidak dapat menentukan urutan eksekusi filter menggunakan @WebFilteranotasi. Namun, untuk meminimalkan web.xmlpenggunaan, itu cukup untuk membubuhi keterangan semua filter hanya dengan filterNamesehingga Anda tidak memerlukan <filter>definisi, tetapi hanya <filter-mapping>definisi dalam urutan yang diinginkan.
mereka bisa memperkenalkan orderatribut @WebFilterMappinganotasi bersarang . Saya bertanya-tanya apakah mereka tidak melakukannya untuk kesederhanaan
Bozho
12
@ Bozho: Itu tidak akan cukup spesifik. Bagaimana jika webapp Anda dikirimkan dengan pustaka pihak ketiga yang menyertakan filter? Sulit untuk mengatakan pesanannya sebelumnya.
BalusC
1
@ BalusC: Ada yang salah dalam contoh Anda: pola-url ditutup dengan nama-filter.
AndrewBourgeois
3
@AndrewBourgeois: Tetap. Adalah kesalahan copypaste. Sayang sekali bahwa editor Markdown tidak memiliki validasi XML seperti dalam Eclipse;)
BalusC
6
Menggunakan <url-pattern />tidak berfungsi pada JBoss EAP 6.1 - ini mengesampingkan @WebFilternilai dan mencegah filter dari berjalan sama sekali.
seanf
12
Servlet 3.0 spec tampaknya tidak memberikan petunjuk tentang bagaimana suatu wadah harus memesan filter yang telah dinyatakan melalui anotasi. Jelas bagaimana cara memesan filter melalui deklarasi mereka di file web.xml.
Berhati-hatilah. Gunakan filter pesanan file web.xml yang memiliki saling ketergantungan. Cobalah untuk membuat semua filter Anda independen untuk meminimalkan kebutuhan untuk menggunakan file web.xml.
Saya memiliki banyak filter Servlet di proyek saya, dari mereka hanya filter tertentu yang harus disebut pertama dan urutan filter lain tidak menjadi perhatian. Apakah saya harus menajiskan semua filter di web.xml? Atau ada jalan pintas?
order
atribut@WebFilterMapping
anotasi bersarang . Saya bertanya-tanya apakah mereka tidak melakukannya untuk kesederhanaan<url-pattern />
tidak berfungsi pada JBoss EAP 6.1 - ini mengesampingkan@WebFilter
nilai dan mencegah filter dari berjalan sama sekali.Servlet 3.0 spec tampaknya tidak memberikan petunjuk tentang bagaimana suatu wadah harus memesan filter yang telah dinyatakan melalui anotasi. Jelas bagaimana cara memesan filter melalui deklarasi mereka di file web.xml.
Berhati-hatilah. Gunakan filter pesanan file web.xml yang memiliki saling ketergantungan. Cobalah untuk membuat semua filter Anda independen untuk meminimalkan kebutuhan untuk menggunakan file web.xml.
sumber