在JSF中长时间处理期间防止会话超时

dar*_*ple 7 jsf session-timeout

我一直在研究JSF应用程序.在一个地方,我要在托管bean中调用一个动作.在处理完成之前,该操作实际上处理了数百条记录和会话超时.

虽然所有记录都已成功处理,但会话过期并且用户被发送到登录页面.

我试过添加

session.setMaxInactiveInterval(0);

在处理记录之前没有任何效果.

如何在此过程中防止会话超时.

Bal*_*usC 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>
Run Code Online (Sandbox Code Playgroud)

这里${pageContext.session.maxInactiveInterval}返回会话尚未生存的剩余秒数(并且已被扣除10秒 - 只需要与poll一起准时 - 并转换为毫秒,以使其符合setInterval()预期).

所述$.get('poll')应该调用其被映射上的一个servlet url-pattern/poll和基本上包含在以下行doGet()方法.

request.getSession(); // Keep session alive.
Run Code Online (Sandbox Code Playgroud)

而已.