This bug makes it impossible to have two JSF portlets on the same portal page at the same time, since JSF portlets have an underlying dependency on the PortletSession. Specifically, the Mojarra implementation of JSF stores a session attribute named com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap in order to store state. Because of this bug, Mojarra is not able to save state in the appropriate HttpSession object (the HttpSession associated with the portlet, not the portal).
Steps to Reproduce:
1. Start Liferay Portal 6.2 CE B3 on Tomcat
2. Copy the attached
LPS-40115-portlet-1.0-SNAPSHOT.war artifact to the $LIFERAY_HOME/deploy folder.
3. Login to Liferay Portal
4. Create a new portal page
5. Add two instances of "
LPS-40114-portlet" to the portal page
6. Reload the page
If the bug is fixed, then the portlet will display a message like:
The portalSession and portletSession are different. If two or more instances
of this portlet are on this portal page, then
LPS-40115 is fixed.
If the bug still exists, then the portlet will display a message like:
LPS-40115 is still broken because SharedSessionWrapper._portalSession and
SharedSessionWrapper_.portletSession are THE SAME.
If the bug still exists, then adding ?p_p_parallel=0 to the URL will cause the
portlet to display a message like this:
The portalSession and portletSession are different. But
LPS-40115 might still
be broken since p_p_parallel=0 was specified on the URL.