[jboss-cvs] JBossAS SVN: r79149 - trunk/tomcat/src/main/org/jboss/web/tomcat/service/session.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Oct 6 08:42:28 EDT 2008
Author: bstansberry at jboss.com
Date: 2008-10-06 08:42:27 -0400 (Mon, 06 Oct 2008)
New Revision: 79149
Modified:
trunk/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java
Log:
[JBAS-6040] Ensure correct TCCL is set before accessing clustered web session cache
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java 2008-10-06 12:35:24 UTC (rev 79148)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/service/session/JBossCacheManager.java 2008-10-06 12:42:27 UTC (rev 79149)
@@ -21,6 +21,7 @@
*/
package org.jboss.web.tomcat.service.session;
+import java.security.AccessController;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -44,6 +45,7 @@
import org.jboss.metadata.web.jboss.ReplicationGranularity;
import org.jboss.metadata.web.jboss.ReplicationTrigger;
import org.jboss.metadata.web.jboss.SnapshotMode;
+import org.jboss.util.loading.ContextClassLoaderSwitcher;
import org.jboss.web.tomcat.service.session.distributedcache.spi.BatchingManager;
import org.jboss.web.tomcat.service.session.distributedcache.spi.ClusteringNotSupportedException;
import org.jboss.web.tomcat.service.session.distributedcache.spi.DistributableSessionMetadata;
@@ -1440,6 +1442,7 @@
synchronized (session)
{
+ ContextClassLoaderSwitcher.SwitchContext switcher = null;
boolean doTx = false;
try
{
@@ -1457,6 +1460,11 @@
// session if data gravitation occurs.
SessionReplicationContext.startCacheActivity();
+ // Tomcat calls Manager.findSession before setting the tccl,
+ // so we need to do it :(
+ switcher = getContextClassLoaderSwitcher().getSwitchContext();
+ switcher.setClassLoader(tcl_);
+
session = proxy_.loadSession(realId, session);
if (session != null)
@@ -1492,6 +1500,10 @@
}
}
finally {
+ if (switcher != null)
+ {
+ switcher.reset();
+ }
SessionReplicationContext.finishCacheActivity();
}
}
@@ -2160,6 +2172,11 @@
return sb.toString();
}
+ private static ContextClassLoaderSwitcher getContextClassLoaderSwitcher()
+ {
+ return (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
+ }
+
// ------------------------------------------------------------ Inner Classes
private class OwnedSessionUpdate
More information about the jboss-cvs-commits
mailing list