Author: ate Date: Fri Sep 16 18:11:39 2011 New Revision: 1171699 URL: http://svn.apache.org/viewvc?rev=1171699&view=rev Log: JS2-1257: fix for running on Tomcat 7 which by default changes sessionId on login, but now doesn't provide any kind of notification to detect this (like Tomcat 6 does).
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/session/PortalSessionsManagerImpl.java Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/session/PortalSessionsManagerImpl.java URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/session/PortalSessionsManagerImpl.java?rev=1171699&r1=1171698&r2=1171699&view=diff ============================================================================== --- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/session/PortalSessionsManagerImpl.java (original) +++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/session/PortalSessionsManagerImpl.java Fri Sep 16 18:11:39 2011 @@ -203,12 +203,12 @@ public class PortalSessionsManagerImpl i PortalSessionRegistry psr = portalSessionsRegistry.get(portalSession.getId()); if (psr == null) { - // yet unexplained condition: the HttpSessionListener on the portal application *should* have registered the session!!! - // Alas, it has been reported to happen... - // Now trying to do some recovering here + // On Tomcat 7, by default after authentication it will change the session.getId() without notifying anything... + // On Tomcat 6 this at least still lead to a SessionCreated event, but for Tomcat 7 we only can check for a similar condition + // and then just emulate as if it happened. PortalSessionMonitor psm = (PortalSessionMonitor)portalSession.getAttribute(PortalSessionMonitor.SESSION_KEY); // the psm better be null here, otherwise something really is corrupt or not playing by the listeners contracts - if ( psm == null ) + if ( psm == null || portalSessionsRegistry.containsKey(psm.getSessionId()) ) { portalSessionCreated(portalSession); } --------------------------------------------------------------------- To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org