【问题标题】:Can multiple threads in application server modify request-scoped component?应用服务器中的多个线程可以修改请求范围的组件吗?
【发布时间】:2016-08-23 17:49:09
【问题描述】:

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

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

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

【问题讨论】:

  • 应用服务器不保证这一点。如果出于某种奇怪的原因,您运行了多个线程来为单个请求提供服务,那么可以想象它们都可以访问请求范围。它保证的是使请求范围彼此分开。

标签: java multithreading httprequest application-server atg


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2022-06-28
    相关资源
    最近更新 更多