当客户端过早地断开服务器请求时,服务器是否仍然执行其余工作?
具体来说,如果我有以下代码,请在Java Servlet doGet中:
public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException { A(); //client disconnects after A(); B(); C(); } if client disconnects after A() is finished, would B and C still get executed?
答案 0 :(得分:3)
是的。在尝试将输出流写入输出流之前,服务器不知道断开连接(作为响应)。然后由于代理服务器之间的事件或者由于输出流缓冲,可能很难知道客户端已断开连接。
答案 1 :(得分:1)
取决于。
如果在A()
(或任何其他方法)期间尝试将响应(使用res
)发送回客户端,则会抛出IOException
。如果没有捕获,它将终止servlet的执行。
否则计算将在C()
之后继续进行并退出。