【发布时间】:2013-01-16 20:13:29
【问题描述】:
如何使用 JSF 1.2、RichFaces 3.x 使用 SEAM 2.x 实现心跳,这在用户执行的长期请求期间也可以工作?
目前,我们有一个使用<aj4:poll action="#{bean.keepAlive}" ... /> 的心跳(以避免会话超时),这在服务器上的长期请求期间不起作用。使用自己的eventsQueue="heartbeat" 允许即使在执行长期请求时也发送所需的心跳但会导致我们进入org.jboss.seam.ConcurrentRequestTimeoutException。
我们还尝试在keepAlive 方法上使用@Asynchronous。
您对我的问题有其他解决方案或提示吗?谢谢你。 :)
【问题讨论】:
-
如果您将 keepAlive 移动到一个单独的独立 bean 中会起作用吗?这样,它可能可以免除并发问题。
-
不,它不起作用。 SEAM 提出了并发问题。也许我必须尝试另一个
ScopeType? -
我不确定是不是这么简单。一个更简洁的解决方案可能是让长时间运行的进程在后台运行(异步)。然后,您可以定期检查完成状态和结果,直到后台任务完成。我认为您遇到的问题是来自该页面的每个请求都与相同的上下文相关联。如果你能以某种方式请求而不遇到相同的上下文,它可能工作!
-
谢谢。我已经听从了您的建议,但由于长时间运行的请求必须能够访问当前上下文,因此使用
Asynchronous或线程不起作用。 -
但是,我们找到了适合我们的解决方案。 :)
标签: jsf jakarta-ee richfaces session-timeout seam2