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

发布于 2024-10-08 21:36:42 字数 221 浏览 2 评论 0原文

我一直在开发 JSF 应用程序。在一个地方,我必须在托管 bean 中调用一个操作。该操作实际上处理数百条记录,并且在处理完成之前会话超时。

尽管所有记录均已成功处理,但会话到期并且用户被发送到登录页面。

我尝试添加

session.setMaxInactiveInterval(0);

在处理记录之前没有任何影响。

如何在这个过程中防止会话超时。

I've been working on an JSF application. At one place, I've to call an action in managed bean. The action actually process hundreds of records and the session timesout before the processing is finished.

Though all the records are processed successfully, the session expires and the user is sent to login page.

I'd tried adding

session.setMaxInactiveInterval(0);

before the processing of the records with no effect.

How to prevent the session time out during such process.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

余罪 2024-10-15 21:36:43

引入 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}<​​/code>返回会话尚未存活的剩余秒数(并扣除 10 秒 - 只是为了按时进行轮询 - 并转换为毫秒,以便它适合 setInterval() 的期望)。

$.get('poll') 应该调用 servlet它映射到 /pollurl-pattern 上,并且在 doGet() 方法中基本上包含以下行。

request.getSession(); // Keep session alive.

就是这样。

Introduce ajaxical polls to keep the session alive as long as enduser has the page open in webbrowser. Here's a kickoff example with a little help of 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>

Here ${pageContext.session.maxInactiveInterval} returns the remnant of seconds the session has yet to live (and is been deducted with 10 seconds -just to be on time with poll- and converted to milliseconds so that it suits what setInterval() expects).

The $.get('poll') should call a servlet which is mapped on an url-pattern of /poll and contains basically the following line in the doGet() method.

request.getSession(); // Keep session alive.

That's it.

风为裳 2024-10-15 21:36:43

为了防止会话超时,请尝试使用线程进行处理。

通过这种方式,用户将能够进行其他活动和活动。不要挂断等待该过程完成。

To prevent session timeout, try using thread to do processing.

By doing this way, user will be able to do other activities & don't hang up waiting for the process to complete.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文