2011-02-08 31 views
6

Tôi đọc rằng thứ tự mà bộ lọc được xử lý có thể được xác định theo thứ tự mà chúng được khai báo trong web.xmlLàm thế nào để xác định thứ tự ánh xạ bộ lọc trên GlassFish?

Nhưng cách thực hiện điều này mà không có web.xml, sử dụng chú thích @WebServlet? Tôi không muốn làm lộn xộn web.xml của mình

+0

Không thể điều khiển được thông qua thuộc tính 'loadOnStartupOrder'? – musiKk

Trả lời

7

Dường như không thể cho các bộ lọc được chú thích. Servlet 3.0 Specification nói:

Như đã trình bày ở trên, khi sử dụng chú thích để xác định người nghe, servlets và bộ lọc, thứ tự mà họ gọi là không xác định.

+3

Vâng, quay lại thời kỳ đồ đá. – rapadura

+1

Bạn có thể tin rằng một chuỗi các bộ lọc sẽ không có quy định để đặt các liên kết theo một thứ tự cụ thể? Những người đã xác định điều này không hiểu thế giới thực? –

+0

Unbelievable ... – rapadura

2

Khi @axtavt ghi chú, bạn không thể làm điều đó. Đây là lý do tại sao (tôi nghĩ) họ thiết kế theo cách đó.

Để chỉ định thứ tự, chú thích sẽ cần thêm đối số (bằng cách nào đó) chỉ định vị trí trong chuỗi; ví dụ. một đơn đặt hàng'. Có những vấn đề với điều này:

  1. Nếu một servlet có một số bộ lọc có trật tự được quy định bởi các tham số chú thích, sau đó các lập trình viên/Deployer có để kiểm tra các chú thích cho tất cả các lớp lọc để tìm ra những gì thứ tự thực tế là.

  2. Một lớp bộ lọc nhất định có thể được sử dụng trong nhiều lý thuyết, thậm chí nhiều ứng dụng web. Mỗi servlet hoặc webapp có thể muốn thứ tự bộ lọc khác nhau. Bạn không thể đạt được điều này chỉ đơn giản bằng cách sử dụng chú thích trên lớp bộ lọc.

  3. Nếu ai đó triển khai một ứng dụng web cần thiết để thay đổi thứ tự bộ lọc, người đó sẽ cần phải sửa đổi mã nguồn, biên dịch lại và xây dựng lại tệp WAR.

Tôi tưởng tượng các nhà thiết kế đã xem xét những vấn đề này và quyết định rằng nơi tốt nhất để xác định trình tự bộ lọc là trong file web.xml.

+0

Vì vậy, về cơ bản bởi vì trong lý thuyết ai đó có thể sử dụng một bộ lọc trên nhiều ứng dụng web ... Và các lý do khác giống như "nhưng tẻ nhạt của nó". Tuy nhiên tôi thích rằng bạn cố gắng giải thích lý do tại sao. – rapadura

Các vấn đề liên quan