Hallo zusammen,
ich verstehe die (Java-)Welt nicht mehr.
Meine Anwendung mit ManagedBeans und RequestScope ist nicht Thread-Sicher.
Bisher bin ich davon ausgegangen, dass dies sein sollte, wenn man mit Sessions arbeitet. Tests zeigen aber, dass ein Client die Werte von Variabeln einer anderen Session zurückerhalten kann.
In JSF wird ja automatisch ein Servlet erstellt, dass man (meines Wissens) nicht bearbeiten kann und muss.
Wie bringe ich nun eine JSF-Anwendung dazu, dass sie Thread-Sicher arbeitet und die Requests und Responses von Clients stehts auseinanderhalten kann, auch wenn parallele Zugriffe stattfinden?
Sollte man bei der Rückgabe von Daten jeweils die Session (getSession) abfragen? (Bisher bin ich davon ausgegangen, dass dies bei JSF automatisch der Fall sei.)
Die Session-IDs werden erstellt und in die Cookies abgelegt.
Ich habe auch alle meine Methoden synchronized gemacht, dies bringt jedoch auch keine Abhilfe. Ein Client holt sich auf einmal die ArrayList des anderen Clients.
Z.B. habe ich eine Methode, die eine ArrayList individuell abfüllt und einen Getter, der vom Client aufgerufen werden kann. Beide sind synchronized. Müsste man die Erstellung der ArrayList und den Getter zusammen in eine Methode packen, die als synchronized gekennzeichnet ist?
Vielen Dank für jegliche Inputs!
ich verstehe die (Java-)Welt nicht mehr.
Meine Anwendung mit ManagedBeans und RequestScope ist nicht Thread-Sicher.
Bisher bin ich davon ausgegangen, dass dies sein sollte, wenn man mit Sessions arbeitet. Tests zeigen aber, dass ein Client die Werte von Variabeln einer anderen Session zurückerhalten kann.
In JSF wird ja automatisch ein Servlet erstellt, dass man (meines Wissens) nicht bearbeiten kann und muss.
Wie bringe ich nun eine JSF-Anwendung dazu, dass sie Thread-Sicher arbeitet und die Requests und Responses von Clients stehts auseinanderhalten kann, auch wenn parallele Zugriffe stattfinden?
Sollte man bei der Rückgabe von Daten jeweils die Session (getSession) abfragen? (Bisher bin ich davon ausgegangen, dass dies bei JSF automatisch der Fall sei.)
Die Session-IDs werden erstellt und in die Cookies abgelegt.
Ich habe auch alle meine Methoden synchronized gemacht, dies bringt jedoch auch keine Abhilfe. Ein Client holt sich auf einmal die ArrayList des anderen Clients.
Z.B. habe ich eine Methode, die eine ArrayList individuell abfüllt und einen Getter, der vom Client aufgerufen werden kann. Beide sind synchronized. Müsste man die Erstellung der ArrayList und den Getter zusammen in eine Methode packen, die als synchronized gekennzeichnet ist?
Vielen Dank für jegliche Inputs!