[jboss-cvs] JBossAS SVN: r61257 - branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Mar 10 19:20:56 EST 2007
Author: bstansberry at jboss.com
Date: 2007-03-10 19:20:55 -0500 (Sat, 10 Mar 2007)
New Revision: 61257
Modified:
branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/StatefulSessionInstanceInterceptor.java
Log:
In afterCompletion, cut reference links from Synchronization to interceptor, as TM may hold ref to Synchronization for a while. Avoids spurious failures in classloader leak tests.
Modified: branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/StatefulSessionInstanceInterceptor.java
===================================================================
--- branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/StatefulSessionInstanceInterceptor.java 2007-03-11 00:18:32 UTC (rev 61256)
+++ branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/StatefulSessionInstanceInterceptor.java 2007-03-11 00:20:55 UTC (rev 61257)
@@ -163,7 +163,7 @@
protected void register(EnterpriseContext ctx, Transaction tx, BeanLock lock)
{
// Create a new synchronization
- InstanceSynchronization synch = new InstanceSynchronization(ctx, lock);
+ InstanceSynchronization synch = new InstanceSynchronization(ctx, lock, container, log);
try
{
@@ -410,13 +410,14 @@
// Inner classes -------------------------------------------------
- private class InstanceSynchronization
+ private static class InstanceSynchronization
implements Synchronization
{
/**
* The context we manage.
*/
private EnterpriseContext ctx;
+ private Container container;
// a utility boolean for session sync
private boolean notifySession = false;
@@ -428,14 +429,19 @@
private BeanLock lock;
private boolean beforeCompletionInvoked = false;
+ // Shared log with the interceptor
+ private Logger log;
+
/**
* Create a new instance synchronization instance.
*/
- InstanceSynchronization(EnterpriseContext ctx, BeanLock lock)
+ InstanceSynchronization(EnterpriseContext ctx, BeanLock lock, Container container, Logger log)
{
this.ctx = ctx;
this.lock = lock;
this.lock.addRef();
+ this.log = log;
+ this.container = ctx.getContainer();
// Let's compute it now, to speed things up we could
notifySession = (ctx.getInstance() instanceof javax.ejb.SessionSynchronization);
@@ -549,6 +555,12 @@
{
lock.releaseSync();
container.getLockManager().removeLockRef(lock.getId());
+ // Clear refs that could lead to application classes, as the
+ // transaction manager may hold a ref to this Synchronization
+ // for a while
+ lock = null;
+ ctx = null;
+ container = null;
}
}
}
More information about the jboss-cvs-commits
mailing list