0

我收到了关于 Web 服务器(例如 nginx、Cherokee 或 Oracle iPlanet)和 Java 容器(例如 GlassFish)的问题:如果用户断开未完成的连接,我们可以控制连接会发生什么吗?

当浏览器打开到服务器的 HTTP/HTTPS 连接时,它会访问 Web 服务器(nginx、Cherokee 或 Oracle iPlanet),然后反向代理到 Java 容器(GlassFish)。然后 Java 应用程序执行并执行很多事情,例如计算,最后需要写入 3 个不同的数据库。如果它已经完成了对第一个数据库的写入——但还没有写入第二个和第三个数据库——并且用户关闭了连接(通过关闭浏览器窗口,或者失去了网络连接等),这个过程会发生什么?

具体来说,我希望进程继续执行,直到它完成所有代码的执行。我知道一种方法是在新线程上分离进程,但这会产生计算成本。那么,是否有任何设置/配置可以确保即使用户断开连接也能继续执行?

4

1 回答 1

1

使用 nginx,您可以将proxy_ignore_client_abort设置为on;如果客户端关闭其连接,它将不会关闭与后端的连接。

于 2011-12-31T03:49:39.830 回答