[jboss-cvs] JBossAS SVN: r60247 - trunk/ejb3/src/main/org/jboss/ejb3/cache/tree.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Feb 3 23:59:10 EST 2007
Author: bstansberry at jboss.com
Date: 2007-02-03 23:59:10 -0500 (Sat, 03 Feb 2007)
New Revision: 60247
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/cache/tree/StatefulTreeCache.java
Log:
[EJBTHREE-863] Set the correct TCCL before calling prePassivate()
Modified: trunk/ejb3/src/main/org/jboss/ejb3/cache/tree/StatefulTreeCache.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/cache/tree/StatefulTreeCache.java 2007-02-04 02:48:52 UTC (rev 60246)
+++ trunk/ejb3/src/main/org/jboss/ejb3/cache/tree/StatefulTreeCache.java 2007-02-04 04:59:10 UTC (rev 60247)
@@ -39,6 +39,7 @@
import org.jboss.cache.InvocationContext;
import org.jboss.cache.Region;
import org.jboss.ejb3.Container;
+import org.jboss.ejb3.EJBContainer;
import org.jboss.ejb3.Pool;
import org.jboss.ejb3.cache.ClusteredStatefulCache;
import org.jboss.ejb3.stateful.ProxiedStatefulBeanContext;
@@ -373,16 +374,25 @@
if(!fqn.isChildOrEquals(cacheNode)) return;
StatefulBeanContext bean = null;
- try {
+ ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
+ try
+ {
InvocationContext ctx = cache.getInvocationContext();
ctx.setOptionOverrides(getBypassOption());
bean = (StatefulBeanContext) cache.get(fqn, "bean");
- if (bean != null && !bean.inUse)
- {
+ if (bean != null)
+ {
+ if (bean.inUse)
+ {
+ // Abort the eviction
+ throw new IllegalStateException("Cannot passivate bean " + fqn + " -- it is currently in use");
+ }
+
if(log.isTraceEnabled())
{
log.trace("nodePassivated(): send prePassivate event to bean at fqn: " +fqn);
}
+ Thread.currentThread().setContextClassLoader(((EJBContainer) bean.getContainer()).getClassloader());
bean.prePassivate();
}
}
@@ -420,7 +430,11 @@
{
throw e;
}
- }
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(oldCl);
+ }
}
}
More information about the jboss-cvs-commits
mailing list