Tôi muốn kết buộc một JPA EntityManager với luồng hiện tại trên mỗi yêu cầu (thông qua ThreadLocal), những gì có thể được thực hiện thông qua một ServletRequestListener hoặc Filter. Người nghe trông sạch hơn và tôi không cần thêm khả năng của bộ lọc trong trường hợp này. Nhưng có lẽ bộ lọc có một lợi thế mà tôi đã bỏ lỡ.Bộ lọc Servlet so với ServletRequestListener
Tôi có nên sử dụng Bộ lọc Servlet hoặc ServletRequestListener để làm điều đó không?
Có đảm bảo luồng nào được thực hiện về ServletRequestListener không? Bạn chắc chắn nó được gọi đồng bộ, trên cùng một luồng với yêu cầu xử lý? –
Đặc tả Servlet 3.0 cho biết: "11.5 Trường hợp nghe và luồng [...] Vùng chứa phải duy trì tham chiếu đến từng thể hiện đối tượng nghe cho đến khi yêu cầu cuối cùng được phục vụ cho ứng dụng Web. đồng thời. Vùng chứa không bắt buộc phải đồng bộ hóa các thông báo kết quả thành các lớp người nghe thuộc tính. Các lớp Listener duy trì trạng thái chịu trách nhiệm về tính toàn vẹn của dữ liệu và nên xử lý trường hợp này một cách rõ ràng. " Nhưng đó không phải là câu trả lời cho câu hỏi của bạn ... Tôi nghĩ * nó sẽ nằm trong cùng một chủ đề. – deamon