Sto scavando nel web dopo aver risolto un problema questo pomeriggio @ lavoro in cui i cookie aggiunti a HttpServletResponse non venivano riflessi correttamente nelle intestazioni di risposta perché il nostro servlet aveva già recuperato il PrintWriter della risposta (cioè response.getWriter()) prima di aggiungere i cookie. Ora so che le best practice dettano che le modifiche all'intestazione di risposta (ad esempio impostando il tipo di contenuto, aggiungendo/modificando i cookie, ecc.) Devono essere fatte prima di una chiamata a getWriter() ma, quello che sto cercando è: Perché?Perché le intestazioni HttpServletResponse non possono essere aggiornate DOPO che viene chiamato getWriter()?
Abbiamo speculato sul motivo per cui il richiamo di PrintWriter blocca le intestazioni di risposta, ma perché le specifiche Servlet lo fanno in modo definitivo?
Grazie Paul! Ciò ha senso. Quindi è probabile che Tomcat sia troppo zelante quando considerare le intestazioni chiuse per la modifica. Il mio errore è stato ipotizzare che tutti i dati che abbiamo scritto al corpo della risposta prima di chiamare out.flush() fossero essenzialmente non trasmessi, ma probabilmente non è così. Grazie ancora! –
Bella risposta, e bella referenza. Grazie Paolo. –