http://java.net/jira/browse/JAVASERVERFACES-2883
SECTION: Modified Files
----------------------------
M jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java
- I think it is more correct for the view map to be synchronized,
because in the absence of JSF 2.2 clientWindowId usage, there is a
very good possibility that multiple tabs on the same view, which will
share a session, will end up colliding.
Thank you very much to sseidel and LaVale for the suggestion and
diagnostic information, and for the follow through!
SECTION: Diffs
----------------------------
Index: jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java
===================================================================
--- jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java (revision 12515)
+++ jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java (working copy)
@@ -42,6 +42,7 @@
import com.sun.faces.application.ApplicationAssociate;
import com.sun.faces.mgbean.BeanManager;
import com.sun.faces.util.LRUMap;
+import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
@@ -270,7 +271,7 @@
}
if (sessionMap.get(ACTIVE_VIEW_MAPS) == null) {
- sessionMap.put(ACTIVE_VIEW_MAPS, (Map<String, Object>) new LRUMap<String, Object>(size));
+ sessionMap.put(ACTIVE_VIEW_MAPS, (Map<String, Object>) Collections.synchronizedMap(new LRUMap<String, Object>(size)));
}
Map<String, Object> viewMaps = (Map<String, Object>) sessionMap.get(ACTIVE_VIEW_MAPS);
--