He estado cavando por la web después de solucionar un problema esta tarde @ work donde las cookies añadidas a HttpServletResponse no se reflejaban correctamente en los encabezados de respuesta porque nuestro Servlet ya había recuperado el PrintWriter de la respuesta (es decir, response.getWriter()) antes de agregar las cookies. Ahora estoy al tanto de que las mejores prácticas dictan que las modificaciones del encabezado de respuesta (es decir, establecer el tipo de contenido, agregar/editar cookies, etc.) deben hacerse antes de una llamada a getWriter() pero, lo que estoy buscando es: ¿por qué?¿Por qué no se pueden actualizar los encabezados HttpServletResponse DESPUÉS de llamar a getWriter()?
Hemos estado especulando acerca de por qué recuperar el PrintWriter congela los encabezados de respuesta, pero ¿por qué definitivamente la especificación de Servlet hace cumplir eso?
Gracias Paul! Eso tiene sentido. Entonces, es probable que Tomcat esté demasiado celoso acerca de cuándo considerar cerrar los encabezados para modificarlos. Mi error fue suponer que los datos que escribimos al cuerpo de la respuesta antes de llamar a out.flush() no estaban esencialmente comprometidos, pero probablemente ese no sea el caso. ¡Gracias de nuevo! –
Hermosa respuesta y buena referencia. Gracias Paul. –