Chcę powiązać obiekt JPA EntityManager z bieżącym wątkiem na każdym żądaniu (za pośrednictwem ThreadLocal), co można zrobić za pomocą ServletRequestListener lub Filter. Słuchacz wygląda na czystszy i nie potrzebuję w tym przypadku dodatkowych możliwości filtra. Ale może filtr ma przewagę, którą przegapiłem.Filtr serwletu vs. ServletRequestListener
Czy powinienem użyć tego filtru serwletów lub ServletRequestListener?
Czy są dostępne gwarancje dotyczące gwarancji ServletRequestListener? Jesteś pewien, że jest on wywoływany synchronicznie, w tym samym wątku, co obsługa żądań? –
Specyfikacja Servlet 3.0 mówi: "11.5 Wystąpienie i wątek Listenera [...] Kontener musi utrzymywać odwołanie do każdej instancji detektora, dopóki ostatnie żądanie nie zostanie obsłużone dla aplikacji WWW Atrybut zmiany w obiektach ServletContext i HttpSession mogą być ccur . Kontener nie jest wymagany do zsynchronizowania otrzymanych powiadomień z klasami nasłuchującymi atrybut .. Klasy nasłuchujące, które utrzymują stan, są odpowiedzialne za integralność danych i powinny obsługiwać ten przypadek jawnie. " Ale to nie jest odpowiedź na twoje pytanie ... Myślę, że * byłaby w tej samej nitce. – deamon