[jboss-cvs] JBossAS SVN: r57368 - branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Oct 2 15:49:54 EDT 2006
Author: weston.price at jboss.com
Date: 2006-10-02 15:49:53 -0400 (Mon, 02 Oct 2006)
New Revision: 57368
Modified:
branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java
Log:
[JBAS-3734] Changed to use state variable rather than CL value for determing before/after invocation
sequence. Removed spurious log messages.
Modified: branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java
===================================================================
--- branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java 2006-10-02 19:23:58 UTC (rev 57367)
+++ branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java 2006-10-02 19:49:53 UTC (rev 57368)
@@ -34,6 +34,7 @@
import org.jboss.logging.Logger;
import org.jboss.proxy.Interceptor;
+
import EDU.oswego.cs.dl.util.concurrent.SynchronizedBoolean;
/**
@@ -81,9 +82,13 @@
/** Any suspended transaction */
protected Transaction suspended = null;
+ /** The beforeDeliveryInvoked used to identify sequence of before/after invocation*/
+ protected boolean beforeDeliveryInvoked = false;
+
/** The message endpoint factory */
private JBossMessageEndpointFactory endpointFactory;
+
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
@@ -173,12 +178,9 @@
protected void before(Invocation mi) throws Throwable
{
// Called out of sequence
- if (oldClassLoader != null)
+ if (getBeforeDeliveryInvoke())
throw new IllegalStateException("Missing afterDelivery from the previous beforeDelivery for message endpoint " + getProxyString(mi));
- if (trace)
- log.trace("MessageEndpoint " + getProxyString(mi) + " released");
-
// Set the classloader
MessageDrivenContainer container = getContainer(mi);
oldClassLoader = GetTCLAction.getContextClassLoader(inUseThread);
@@ -190,9 +192,11 @@
try
{
startTransaction("beforeDelivery", mi, container);
+ setBeforeDeliveryInvoke(true);
}
catch (Throwable t)
{
+ setBeforeDeliveryInvoke(false);
resetContextClassLoader(mi);
throw new ResourceException(t);
}
@@ -207,8 +211,11 @@
protected void after(Invocation mi) throws Throwable
{
// Called out of sequence
- if (oldClassLoader == null)
+ if(!getBeforeDeliveryInvoke())
+ {
throw new IllegalStateException("afterDelivery without a previous beforeDelivery for message endpoint " + getProxyString(mi));
+
+ }
// Finish this delivery committing if we can
try
@@ -218,6 +225,7 @@
catch (Throwable t)
{
throw new ResourceException(t);
+
}
}
@@ -261,6 +269,7 @@
transaction.setRollbackOnly();
commit = false;
}
+ setBeforeDeliveryInvoke(false);
throw t;
}
finally
@@ -297,6 +306,7 @@
}
finally
{
+ setBeforeDeliveryInvoke(false);
// Reset delivered flag
delivered = false;
// Change back to the original context classloader
@@ -468,7 +478,18 @@
SetTCLAction.setContextClassLoader(inUseThread, oldClassLoader);
oldClassLoader = null;
}
-
+
+ protected void setBeforeDeliveryInvoke(boolean bdi)
+ {
+ this.beforeDeliveryInvoked = bdi;
+
+ }
+
+ protected boolean getBeforeDeliveryInvoke()
+ {
+ return this.beforeDeliveryInvoked;
+
+ }
/**
* Release the thread lock
*
More information about the jboss-cvs-commits
mailing list