Tengo un filtro Tomcat que delega las solicitudes al objeto de manejo dependiendo de la URL. Este es el único filtro en el FilterChain
. Tengo una aplicación Ajax que martilla este filtro con muchas solicitudes.Tomcat doFilter() invocado con respuesta comprometida
Recientemente noté un problema donde el método del filtro doFilter
a menudo se llama con una respuesta comprometida como parámetro (Internamente, es la respuesta del coyote que está marcada como comprometida).
Me parece que la única forma en que esto puede suceder es si no se llama al método recycle()
en esta respuesta de coyote. Lo he verificado para asegurarme de que no guardo referencias a ninguno de los objetos de solicitud, respuesta, outputStream o escritor. Además, me aseguré de cerrar el outputStream en un bloque finally. Sin embargo, esto no resuelve este problema.
Parece que estoy haciendo algo para abusar del contenedor de servlets pero estoy teniendo problemas para rastrearlo.
teníamos que hacer exactamente lo mismo. Envuelva el flujo de salida y evite que cometa la respuesta hasta que estemos listos. – ScArcher2