相关疑难解决方法(0)

在数据库更新期间防止会话超时

背景

Web应用程序调用存储过程以执行密集数据库更新.相关部分web.xml更新为四小时:

<session-config>
    <session-timeout>240</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

可用于该解决方案的技术包括Java 1.4.2,Struts 2,Tomcat 5.5和Apache commons.大多数其他技术(例如jQuery)是不允许的.

问题

更新大约需要一个小时才能运行,但配置值为四小时是违反企业标准的(出于好的理由).生产中不允许四小时超时配置.

在数据库更新执行时,什么将确保请求不会超时?

思路

我在前两种情况下的担心是,生成的进程最终将被Servlet容器杀死.

页面刷新

  1. 将数据库更新过程生成为后台任务.
  2. 让Servlet不断刷新页面以检查完成情况.

JavaScript Ping

  1. 将数据库更新过程生成为后台任务.
  2. 让JavaScript代码ping服务器一段时间.

类似于在JSF中长时间处理期间防止会话超时,但没有jQuery.

更新服务器

编写一个侦听请求的简单服务器:

  1. Servlet向侦听器发送请求.
  2. 侦听器运行更新.

由于服务器独立于Tomcat运行,因此不会发生会话超时.数据库更新将运行完成而不会被终止.这有很多问题(错误处理不是我最关心的问题),并且可能是最后的选择.

优化

优化查询以在30分钟内完成(最大允许超时)是可能的,但很可能无法充分优化查询.

硬件

不幸的是,升级数据库硬件不是一种选择.

非常感谢!

java tomcat session-timeout

10
推荐指数
1
解决办法
9610
查看次数

如何在web.xml中设置会话超时(以秒为单位)?

我要求将会话超时设置为40秒.我知道我们通常保持20分钟.但我当前的应用程序要求是将会话超时保持为40秒.web.xml仅将整数值设为1,但不是0.6.有没有办法写这个?我们在Apache tomcat服务器上运行我们的java Web应用程序.

那么如何在web.xml中设置会话超时(以秒为单位)?

java tomcat

8
推荐指数
1
解决办法
7万
查看次数

标签 统计

java ×2

tomcat ×2

session-timeout ×1