在 JSF 中防止长时间处理期间会话超时
我一直在开发 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
引入 ajaxical 轮询,只要最终用户在网络浏览器中打开页面,就可以保持会话处于活动状态。这是一个带有一点 jQuery 帮助的启动示例。
这里
$ {pageContext.session.maxInactiveInterval}</code>
返回会话尚未存活的剩余秒数(并扣除 10 秒 - 只是为了按时进行轮询 - 并转换为毫秒,以便它适合
setInterval()
的期望)。$.get('poll')
应该调用 servlet它映射到/poll
的url-pattern
上,并且在doGet()
方法中基本上包含以下行。就是这样。
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.
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 whatsetInterval()
expects).The
$.get('poll')
should call a servlet which is mapped on anurl-pattern
of/poll
and contains basically the following line in thedoGet()
method.That's it.
为了防止会话超时,请尝试使用线程进行处理。
通过这种方式,用户将能够进行其他活动和活动。不要挂断等待该过程完成。
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.