Voglio associare un EntityManager JPA al thread corrente su ogni richiesta (tramite ThreadLocal), cosa potrebbe essere fatto tramite un ServletRequestListener o Filter. L'ascoltatore sembra più pulito e in questo caso non ho bisogno delle possibilità aggiuntive di un filtro. Ma forse il filtro ha un vantaggio che ho perso.Servlet Filter vs. ServletRequestListener
Devo utilizzare un filtro servlet o un ServletRequestListener per farlo?
Esistono garanzie di thread eseguite su ServletRequestListener? Sei sicuro che sia invocato in modo sincrono, sullo stesso thread della gestione delle richieste? –
La specifica Servlet 3.0 dice: "11.5 Istanze di listener e threading [...] Il contenitore deve mantenere un riferimento a ciascuna istanza del listener fino a quando l'ultima richiesta non viene servita per l'applicazione Web. Le modifiche di attributo a ServletContext e HttpSession possono causare errori . Il contenitore non è necessario per sincronizzare le notifiche risultanti con le classi di listener degli attributi.Le classi di listener che mantengono lo stato sono responsabili dell'integrità dei dati e dovrebbero gestire questo caso in modo esplicito. " Ma questa non è la risposta alla tua domanda ... io * penso * sarebbe nella stessa discussione. – deamon