2

当客户端过早地与服务器请求断开连接时,服务器是否仍然执行其余的工作?
具体来说,如果我有以下代码,则在 Java Servlet doGet 中:

公共无效doGet(HttpServletRequest req,HttpServletResponse res)抛出ServletException,IOException
{
   一个(); //客户端在 A() 之后断开连接;
   乙();
   C();  
}

如果客户端在 A() 完成后断开连接,B 和 C 还会执行吗?
4

2 回答 2

5

是的。服务器不知道断开连接,直到它尝试将某事物写入输出流(作为响应)。事件然后由于中间的代理服务器或由于输出流缓冲,可能很难知道客户端已断开连接。

于 2012-11-27T22:43:12.397 回答
2

这取决于。

如果在A()(或任何其他方法)期间您尝试将响应(使用res)发送回客户端,IOException则会被抛出。如果没有被捕获,它将终止 servlet 执行。

否则计算将在 之后继续并退出C()

于 2012-11-27T22:51:56.030 回答