线程 Tapestry 5.3.8 与 5.4.3

Threads Tapestry 5.3.8 vs 5.4.3

tapesty 中的线程有问题。

我有一个正在使用 Tapestry 的应用程序。当我从 5.3.8 更新到 5.4.3 时,我发现我的 ajax 请求没有在单独的线程中处理。

例如:我在 controller/class 中执行了一个很长的过程。但是,我还有一个 JS 脚本,它正在为组件生成 ajax 请求。在 Tapestry 5.3.8 中,这些请求被正常处理。当我切换到 5.4.3 时,我的请求没有得到处理,直到我的主进程从控制器结束。

有人知道有关此行为的信息吗?

在 Tapestry JIRA 中进行一些挖掘后,我找到了答案:

Link 1

Link 2

小结:从Tapestry 5.4开始Session对象是同步的,连读操作都需要writelock。因此,所有 "long" 操作都应在单独的线程中 运行 以使 ajax 调用正常工作(以免冻结 GUI 线程)。

编辑:在邮件列表中,我也得到了使用配置参数 tapestry.session-locking-enabled

的提示