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



我得到了关于web服务器(如nginx, Cherokee或Oracle iPlanet)和Java容器(如GlassFish)的问题:如果用户放弃未完成的连接,我们可以控制连接发生的情况吗?

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

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

使用nginx,你可以设置proxy_ignore_client_abort on;如果客户端关闭了它的连接,它也不会关闭与后端的连接。

最新更新