[jboss-cvs] JBossAS SVN: r109228 - projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 10 10:44:01 EST 2010
Author: pferraro
Date: 2010-11-10 10:44:00 -0500 (Wed, 10 Nov 2010)
New Revision: 109228
Modified:
projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DefaultLockManagerSource.java
Log:
Create lock entry using this object's class loader, not the thread context classloader, as lock managers are a shared resource.
Modified: projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DefaultLockManagerSource.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DefaultLockManagerSource.java 2010-11-10 15:10:44 UTC (rev 109227)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DefaultLockManagerSource.java 2010-11-10 15:44:00 UTC (rev 109228)
@@ -21,6 +21,7 @@
*/
package org.jboss.web.tomcat.service.session.distributedcache.ispn;
+import java.security.AccessController;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Map;
@@ -36,6 +37,7 @@
import org.jboss.ha.core.framework.server.CoreGroupCommunicationService;
import org.jboss.ha.framework.server.lock.SharedLocalYieldingClusterLockManager;
import org.jboss.logging.Logger;
+import org.jboss.util.loading.ContextClassLoaderSwitcher;
import org.jgroups.Channel;
/**
@@ -55,6 +57,10 @@
// Store LockManagers in static map so they can be shared across DCMs
private static final Map<CacheContainer, LockManagerEntry> lockManagers = new IdentityHashMap<CacheContainer, LockManagerEntry>();
+ // Need to cast since ContextClassLoaderSwitcher.NewInstance does not generically implement PrivilegedAction<ContextClassLoaderSwitcher>
+ @SuppressWarnings("unchecked")
+ private final ContextClassLoaderSwitcher switcher = (ContextClassLoaderSwitcher) AccessController.doPrivileged(ContextClassLoaderSwitcher.INSTANTIATOR);
+
/**
* {@inheritDoc}
* @see org.jboss.web.tomcat.service.session.distributedcache.ispn.LockManagerSource#getLockManager(org.infinispan.Cache)
@@ -73,9 +79,18 @@
if (entry == null)
{
JGroupsTransport transport = (JGroupsTransport) cache.getAdvancedCache().getRpcManager().getTransport();
-
- entry = new LockManagerEntry(transport.getChannel());
+ ContextClassLoaderSwitcher.SwitchContext context = this.switcher.getSwitchContext(this.getClass().getClassLoader());
+
+ try
+ {
+ entry = new LockManagerEntry(transport.getChannel());
+ }
+ finally
+ {
+ context.reset();
+ }
+
trace("Started lock manager for cluster %s", entry);
((EmbeddedCacheManager) container).addListener(this);
More information about the jboss-cvs-commits
mailing list