Ich habe eine Situation, die scheint die Async Servlet 3.0/Comet-Situation zu passen, aber alles, was ich tun muss, ist ein 200 Antwortcode (oder andere) nach dem Akzeptieren der eingehenden Parameter.Beenden einer HttpServletResponse, aber weiterverarbeitung
Gibt es eine Möglichkeit für ein HttpServlet, den HTTP-Request/Response-Handshake abzuschließen und trotzdem mit der Verarbeitung fortzufahren? wie
Etwas ...
doPost(req, response) {
// verify input params...
response.setStatus(SC_OK);
response.close();
// execute long query
}
EDIT: am javax.servlet Paket suchen - die richtige Phrasierung auf meine Frage ist
Wie lege ich eine Antwort?
wie in Servlet.isCommitted()
„Committed“ bedeutet, hat einen Teil der Antwortstream bereits an den Client gesendet wurde. Es kann nicht zurückgenommen oder geändert werden.Es kann passieren, sobald Sie einen Header oder schreiben Sie auf die Antwort, in der Theorie, aber in der Regel die Container-Puffer, so dass es etwas später passiert. Das ist nicht relevant für Sie, denke ich. Schließen Sie die Antwortstreams nicht. Setzen Sie einfach den Status, starten Sie einen Thread wie andere Antworten, lassen Sie doPost() fertig. –
Ich habe versucht, response.sendError (SC_OK) zu verwenden, aber die Antwort wurde dem Requestor immer noch nicht geleert. Es scheint, dass die einzige Möglichkeit, eine Servlet-Anfrage zu schließen, darin besteht, von einem doPost() zurückzukommen. – Stevko