Ho una situazione che sembra adattarsi alla situazione Async Servlet 3.0/Comet, ma tutto ciò che devo fare è restituire un codice di risposta 200 (o altro) dopo aver accettato i parametri in entrata.Finire un HttpServletResponse ma continuare l'elaborazione
C'è un modo per un HttpServlet per completare l'handshake di richiesta/risposta http e continuare l'elaborazione?
Qualcosa di simile ...
doPost(req, response) {
// verify input params...
response.setStatus(SC_OK);
response.close();
// execute long query
}
EDIT: Guardando il pacchetto javax.servlet - il fraseggio giusto per la mia domanda è
Come ho commesso una risposta?
come in Servlet.isCommitted()
"Committed" significa una parte del flusso di risposta è già stato inviato al client. Non può essere ritirato o modificato.Può accadere non appena si imposta un'intestazione o si scrive nella risposta, in teoria, ma di solito i buffer dei contenitori si verificano in un secondo momento. Questo non è rilevante per te, penso. Non chiudere i flussi di risposta. Basta impostare lo stato, avviare un thread come da altre risposte, lasciare che doPost() termini. –
Ho provato a utilizzare response.sendError (SC_OK) ma non ha ancora svuotato la risposta al richiedente. Sembra che l'unico modo per chiudere una richiesta servlet sia restituire da un doPost(). – Stevko