HTTP连接丢失时继续处理/执行(Web Server / GlassFish)

时间:2011-12-30 07:46:40

标签: glassfish nginx webserver cherokee

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

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

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

1 个答案:

答案 0 :(得分:1)

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