J'ai une situation qui semble correspondre à la situation Async Servlet 3.0/Comet mais tout ce que je dois faire est de renvoyer un code de réponse 200 (ou autre) après avoir accepté les paramètres entrants.Fin d'une réponse HttpServletResponse mais poursuite du traitement
Existe-t-il un moyen pour un HttpServlet de terminer la négociation de la demande/réponse http et de poursuivre le traitement?
Quelque chose comme ...
doPost(req, response) {
// verify input params...
response.setStatus(SC_OK);
response.close();
// execute long query
}
EDIT: En regardant le paquet javax.servlet - le phrasé propre à ma question est
Comment puis-je commets une réponse?
comme dans Servlet.isCommitted()
« Engagé » signifie une partie du flux de réponse a déjà été envoyé au client. Il ne peut pas être repris ou modifié.Cela peut se produire dès que vous définissez un en-tête ou écrivez dans la réponse, en théorie, mais généralement les tampons du conteneur arrivent donc un peu plus tard. Ce n'est pas pertinent pour vous, je pense. Ne fermez pas les flux de réponse. Réglez simplement le statut, lancez un thread selon les autres réponses, laissez donePost() finir. –
J'ai essayé d'utiliser response.sendError (SC_OK) mais il n'a toujours pas vidé la réponse au demandeur. Il semble que la seule façon de fermer une requête de servlet est de retourner d'un doPost(). – Stevko