我一直在研究JSF应用程序。在一个地方,我要在托管bean中调用一个动作。在处理完成之前,该操作实际上处理了数百条记录和会话超时。
虽然所有记录都已成功处理,但会话过期,用户将被发送到登录页面。
我尝试添加
session.setMaxInactiveInterval(0);
在处理记录之前没有效果。
如何在此过程中防止会话超时。
答案 0 :(得分:10)
只要enduser在webbrowser中打开页面,就会引入ajaxical民意调查以使会话保持活动状态。这是jQuery的一点帮助的启动示例。
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
setInterval(function() {
$.get('poll');
}, ${(pageContext.session.maxInactiveInterval - 10) * 1000});
});
</script>
这里${pageContext.session.maxInactiveInterval}
返回会话尚未生存的剩余秒数(并且已被扣除10秒 - 只需要与poll一起准时 - 并转换为毫秒,以使其适合{{3}期待)。
setInterval()
应该调用映射在url-pattern
/poll
上的servlet,并且doGet()
方法中基本上包含以下行。
request.getSession(); // Keep session alive.
就是这样。
答案 1 :(得分:0)
要防止会话超时,请尝试使用线程进行处理。
通过这种方式,用户将能够做其他活动&amp;不要等待该过程完成。