在客户端断开连接后,java进程是否仍在继续
当客户机过早地从服务器请求断开连接时,服务器是否仍然执行其余的工作
具体地说,在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?
# 1 楼答案
视情况而定
如果在
A()
(或任何其他方法)期间,您试图将响应(使用res
)发送回客户端,IOException
将被抛出。如果未被捕获,它将终止servlet的执行否则,计算将继续进行,并在^{之后退出
# 2 楼答案
是的,会的。服务器直到尝试将某个内容写入输出流(作为响应)时才知道断开连接的情况。事件,然后由于中间的代理服务器或由于输出流缓冲,可能很难知道客户端已断开连接