2011-01-10 5 views
2

Ich arbeite an einem JSF 1.2-Projekt, das AJAX-Funktionalität auf seinen Seiten hat (mit RichFaces).Wie sollten wir uns mit Thread-Sicherheit mit JSF-verwalteten Beans befassen?

Meine Bean erstellt eine Liste der zu bearbeitenden Objekte und verfügt dann über Methoden, um die Bearbeitung zu unterstützen, und die Bean ist sitzungsspezifisch. Ich werde eine a4j: queue verwenden, so dass immer nur ein AJAX-Aufruf stattfinden kann.

Ich bin neugierig, wenn es sinnvoll ist, die Synchronisation (Sperren für Objekte oder Sammlungen von java.util.concurrent) in der verwalteten Bean zu verwenden. Ist die zusätzliche Arbeit, die zur Implementierung der Synchronisation/Thread-Sicherheit benötigt wird, wirklich erforderlich? Die Site, an der ich arbeite, hat viele Benutzer und muss zuverlässig sein, aber sie hat eine Menge an verwalteten Beans, und ich bin neugierig, wie besorgt ich über die Threadsicherheit der verwalteten Beans insgesamt sein sollte.

Do Sie nehmen Sie zusätzliche Schritte in Backing-Bohnen für Thread-Sicherheit?

Vielen Dank im Voraus.

Antwort

1

a4j: Warteschlange verhindert nicht, dass der Benutzer die Seite erneut lädt/auf eine andere Verbindung klickt, während der AJAX-Anruf läuft.

Ja, wir können wahrscheinlich darauf vertrauen, dass der Benutzer nicht direkt auf viele verschiedene Links klickt, aber was ist mit Anfragen, die nicht vom Benutzer ausgelöst wurden, zum Beispiel von a4j: poll?

Beachten Sie, dass das Ersetzen aller Sammlungen durch ihr threadsicheres Äquivalent möglicherweise nicht ausreicht, um Ihre Anwendung Thread sicher zu machen.

Das heißt, abhängig von der Zuverlässigkeit, die Ihre Anwendung erfüllen muss, könnte dieses Problem Ihre Aufmerksamkeit verdienen oder nicht.

+0

Ich habe einen Fehler in meiner Anwendung aufgrund dieser Tatsache gefunden. Die Aufrufe an die Back-Bean, die aus dem Ajax und den Submit- oder anderen Funktionen hervorgehen, sind gleichzeitig und können daher Concurrency-Probleme erzeugen –

1

Sie müssen den Umfang im Auge behalten.

Umfang Anfrage - Safe, Sitzungsbereich Gewinde - nicht sicher

fädeln Wenn Sie mehrere Browser-Fenster oder Tabs zu öffnen, müssen in der Lage sein, kann dann so etwas wie eine Naht Gespräch verwenden, um von der Bearbeitung des gleichen Objekts zu schützen aus zwei Fenstern/Tabs.

0

Wenn es SessionScope d ist, müssen Sie einige Thread-Sicherheitsmechanismen verwenden. Wenn es RequestScope d oder ViewScope ist, ist es sicher, Klassenvariablen zwischen Methoden zu teilen.

Verwandte Themen