背景
web应用程序调用存储过程来执行密集的数据库更新。web.xml的相关部分更新为4小时:
<session-config>
<session-timeout>240</session-timeout>
</session-config>该解决方案可用的技术包括Java1.4.2、Struts 2、Tomcat5.5和Apache。大多数其他技术(如jQuery)是不允许的。
问题
这个更新大约需要一个小时才能运行,但是配置值为4小时是违反公司标准的(理由很充分)。生产中不允许进行4小时超时配置。
问题
在执行数据库更新时,如何确保请求不超时?
想法
我在前两种情况中担心的是,生成的进程最终将被Servlet容器杀死。
页面刷新h
JavaScript平
类似于Preventing session timeout during long processing time in JSF,但没有jQuery。
更新服务器
编写一个侦听请求的简单服务器:
Servlet向listener.
由于服务器独立于Tomcat运行,因此不能发生会话超时。数据库更新将在不被终止的情况下运行到完成。这有许多问题(错误处理不是我最关心的问题),而且很可能是最后的选择。
优化
优化查询以在30分钟内完成(允许的最大超时时间)是可能的,但很可能无法对查询进行充分优化。
硬件
不幸的是,升级数据库硬件不是一种选择。
非常感谢!
发布于 2011-05-12 14:33:14
在我看来,没有用户愿意坐在屏幕前监视背景作业4小时。几年前,我不得不完成几个小时的报告生成。已执行的解决办法如下:
。
发布于 2011-05-11 09:05:43
通过阅读its,我可以确保你有两个选择,即使第二个是困难的,这是最好的过程。
1)页面刷新
2)优化
优化查询以在30分钟内完成(允许的最大超时时间)是可能的,但很可能无法对查询进行充分优化。
https://stackoverflow.com/questions/5961403
复制相似问题