Quiero vincular un JPA EntityManager al hilo actual en cada solicitud (a través de ThreadLocal), lo que podría hacerse a través de ServletRequestListener o Filter. El oyente se ve más limpio y no necesito las posibilidades adicionales de un filtro en este caso. Pero tal vez el filtro tiene una ventaja que me he perdido.Servlet Filter vs. ServletRequestListener
¿Debo usar un Servlet Filter o un ServletRequestListener para hacer eso?
¿Hay alguna garantía sobre el ServletRequestListener? ¿Está seguro de que se invoca sincrónicamente, en el mismo hilo que el manejo de la solicitud? –
La especificación de Servlet 3.0 dice: "11.5 Instancias de escucha y subprocesamiento [...] El contenedor debe mantener una referencia a cada instancia de escucha hasta que se atiende la última solicitud para la aplicación web. Los cambios de atributos en los objetos ServletContext y HttpSession pueden ocurrir al mismo tiempo. No es necesario que el contenedor sincronice las notificaciones resultantes para atribuir clases de escucha. Las clases de escucha que mantienen el estado son responsables de la integridad de los datos y deben manejar este caso de manera explícita ". Pero esa no es la respuesta a su pregunta ... I * think * sería en el mismo hilo. – deamon