Web应用程序调用存储过程来执行密集的数据库更新。的相关部分web.xml已更新为四个小时:
web.xml
<session-config> <session-timeout>240</session-timeout> </session-config>
该解决方案可用的技术包括Java 1.4.2,Struts 2,Tomcat 5.5和Apache Commons。不允许使用其他大多数技术(例如jQuery)。
更新大约需要一个小时才能运行,但是四个小时的配置值违反了公司标准(有充分的理由)。生产中不允许四小时超时配置。
如何确保在执行数据库更新时请求不会超时?
在前两种情况下,我担心的是,最终生成的进程最终将被Servlet容器杀死。
类似于在JSF中防止长时间处理期间会话超时,但没有jQuery。
编写一个简单的服务器来侦听请求:
由于服务器独立于Tomcat运行,因此不会发生会话超时。数据库更新将完全运行而不会被杀死。这有很多问题(错误处理并不是我最关心的问题),并且很可能是最后的选择。
可以优化查询以在30分钟以内完成(最大允许超时),但是可能无法充分优化查询。
不幸的是,无法升级数据库硬件。
非常感谢!
在我看来,没有用户愿意坐在屏幕前监视后台工作4个小时。几年前,我不得不实施耗时数小时的报告生成。实施的解决方案如下: