2016-04-28 14 views
-1

Ich habe eine ATG-Anwendung auf einem Jboss als App Server ausgeführt wird. Die request-scoped Komponente (Bean) sagt CartManager hat eine Methode addToBag (...).Können mehrere Threads im Anwendungsserver die Anforderungsbereichs-Komponente ändern?

Da hat es Umfang verlangen mein Verständnis ist, dass seine auf jede Anforderung instanziiert und die App Server garantiert, dass nur ein Thread Zugriff auf diese Instanz haben.

Wir erleben ein Parallelitätsproblem so ich möchte nur eine mögliche Erklärung auszuschließen.

+0

Der Anwendungsserver garantiert nicht, dass. Wenn aus irgendeinem seltsamen Grund mehrere Threads ausgeführt wurden, um eine einzelne Anforderung zu bedienen, könnten alle möglicherweise Zugriff auf den Anforderungsbereich haben. Was es garantiert, ist, Anforderungsbereiche voneinander zu trennen. – EJP

Antwort

0

Sie erleben wahrscheinlich ein Problem mit dem Benutzer einen Doppelklick auf eine Schaltfläche (durchaus üblich für die Add To Bag Taste). Innerhalb von ATG gibt es eine Möglichkeit, dem entgegenzuwirken und es heißt RepeatingRequestMonitor.

Wesentlichen verfolgt es die Anforderung den aktuellen Behandlungsroutine, und entweder blockieren oder ermöglichen eine nachfolgende Anforderung für die gleiche Behandlungsroutine ausgeführt wird.

In den Einkaufswagen-Prozess ist es bereits in der PurchaseProcessFormHandler implementiert, wenn Sie also diesen bestimmten FormHandler erweitern, können Sie seine Accessor-Methoden verwenden.