我正在使用Seam并收到“并发呼叫对话”错误。这是什么意思?
我有一个需要5分钟处理的按钮。我在2分钟内收到此错误。将并发请求超时设置为10分钟似乎不起作用。有没有办法阻止所有其他请求,直到第一个请求完成?
答案 0 :(得分:5)
Section 6.9 of the Seam documentation解释了在会话环境中处理并发调用的策略。
答案 1 :(得分:1)
不认为阻止所有其他SUCH长操作请求是个好主意,更好的方法是让它以异步方式运行。
你可以看看这里http://achorniy.wordpress.com/2009/07/14/avoid-concurrent-call-to-conversation/,但这是允许你在短时间内阻止其他请求的解决方案(当然它可以阻止它们很长一段时间但是这不是一般的好方法让用户等待这样的请求) 您可以在这里查看有关如何组织UI以在后端使用异步的一个很好的示例(请参阅richfaces livedemo“Ajax支持”推/拉示例)
答案 2 :(得分:0)
这是解决方案 - 使用richfaces progressBar,调用seam异步方法来运行long-process并将带参数的ProgressBean传递给async-method(它应该可以从你在JSF中使用的yuor conversation bean访问)并定期更新长期任务中的进度状态 这里详细解释了这种方法[在Seam / Richfaces中显示动态过程进度] [1]
[1] http://achorniy.wordpress.com/2010/10/22/show-dynamic-process-progress-in-seam-richfaces/