0

我正在处理一个 JSP-Web-Application 并在会话到期时遇到麻烦。如放置在 web.xml 中一样,超时是在 30 分钟后定义的。但我想在用户保持窗口打开期间保持会话处于活动状态。我首先想到了一个简单的 AJAX 组件,它每 10 分钟向服务器说一次“你好”,并且可能会向数据库发送一个简单的测试语句(例如“选择 1”)。

但是有两件事让我对此产生怀疑:

  1. 如果我将一个简单的循环放入setTimeout(sayHi(),600)一个无休止的 while-JS 循环中,这是一个有效且明智的决定吗?
  2. 甚至这个概念是个好主意吗?

系统的所有用户共享一个到数据库的公共池化 BoneCP 连接,以执行来自数据库的短查询。还有几个数据行是通过 Hibernate 获取的。Hibernate 部分是整个应用程序中最容易出错的部分,超时后,这些集合也需要重新加载。有没有办法让 Hibernate-Session 也保持活跃?

谢谢您的帮助!

4

1 回答 1

0

我只能谈谈超时问题。无休止的 while-JS 循环将不起作用,因为浏览器中的 javascript 在单个线程中运行,循环将阻止所有其他活动,从而有效地冻结您的页面。

对象的setInterval方法window将按照您定义的时间间隔定期执行一个动作(半)

setInterval(sayHi, 600000)

将导致 sayHi 在 10 分钟(600000 毫秒)后尽快运行。但在此期间将允许其他操作。

(另请注意,我从您的 sayHi 中删除了括号。sayHi() 将立即解决,这不是您想要的。)

于 2013-08-02T15:23:36.367 回答