我正在处理JSP-Web-Application并在会话到期时遇到麻烦。 放置在web.xml中,超时是在30分钟后定义的。但是我希望在用户保持窗口打开的时候保持会话处于活动状态。 我首先想到的是一个简单的AJAX-Component,它每隔10分钟对服务器说“你好”,并且可能会向数据库发送一个简单的测试语句(例如“Select 1”)。
但有两件事让我对此表示怀疑:
setTimeout(sayHi(),600)
置于无尽的时间 - JS循环中这是一个有效且明智的决定吗?系统的所有用户共享与数据库的公共池化BoneCP连接,以从数据库执行简短查询。还有几个数据行通过Hibernate获取。 Hibernate-part是整个应用程序中最容易出错的部分,在超时之后,这些集合也需要重新加载。有没有办法让Hibernate-Session保持活跃状态?
感谢您的帮助!
答案 0 :(得分:0)
我只能说出超时问题。无休止的while-JS循环不起作用,因为浏览器中的javascript在单个线程中运行,循环将阻止所有其他活动,有效地冻结您的页面。
setInterval
对象的window
方法将按您定义的时间间隔定期执行操作(半)
setInterval(sayHi, 600000)
将导致sayHi在10分钟(600000毫秒)后尽快运行。但在此期间将允许其他操作。
(另请注意,我从sayHi中删除了括号.shownHi()将立即解决,这不是您想要的。)