应用服务器中的多个线程可以修改请求范围的组件吗?

Can multiple threads in application server modify request-scoped component?

我在 jboss 上有一个 ATG 应用程序 运行 作为应用程序服务器。请求范围的组件(bean)说 CartManager 有一个方法 addToBag(...)。

因为它有请求范围,我的理解是它在每个请求时实例化,应用服务器保证只有一个线程可以访问该实例。

我们遇到了并发问题,所以我只想排除一种可能的解释。

您可能遇到了用户双击按钮的问题(Add To Bag 按钮很常见)。在 ATG 中有一种方法可以解决这个问题,它被称为 RepeatingRequestMonitor.

本质上,它会跟踪执行当前处理程序的请求,并阻止或允许对同一处理程序的后续请求。

在购物车过程中,它已经在 PurchaseProcessFormHandler 中实现,所以如果您扩展这个特定的 FormHandler,您可以使用它的访问器方法。