2016-04-28 9 views
-1

У меня есть приложение ATG, работающее на jboss в качестве сервера приложений. Компонент, ориентированный на запрос (bean), говорит, что у CartManager есть метод addToBag (...).Может ли несколько потоков в сервере приложений изменять компонент с областью запроса?

Поскольку у меня есть область запросов, я понимаю, что ее экземпляр каждого запроса и сервера приложений гарантирует, что только один поток имеет доступ к этому экземпляру.

Мы сталкиваемся с проблемами параллелизма, поэтому я просто хочу исключить одно из возможных объяснений.

+0

Сервер приложений не гарантирует это. Если по какой-то странной причине у вас было несколько потоков, работающих для обслуживания одного запроса, все они могли бы иметь доступ к области запроса. То, что он гарантирует, заключается в том, чтобы держать области запроса отдельно друг от друга. – EJP

ответ

0

Возможно, у вас возникла проблема с двойным нажатием кнопки на кнопку (довольно часто для кнопки Add To Bag). Внутри ATG есть способ противостоять этому, и он называется RepeatingRequestMonitor.

По существу он отслеживает запросы, выполняющие текущий обработчик, и либо блокирует, либо разрешает последующий запрос для того же обработчика.

В процессе покупок он уже реализован в PurchaseProcessFormHandler, поэтому, если вы расширяете этот конкретный FormHandler, вы можете использовать его методы доступа.