[jboss-cvs] JBossAS SVN: r63543 - in branches/Branch_4_2: tomcat/src/main/org/jboss/web/tomcat/service/jca and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jun 15 12:54:40 EDT 2007
Author: adrian at jboss.org
Date: 2007-06-15 12:54:40 -0400 (Fri, 15 Jun 2007)
New Revision: 63543
Modified:
branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/AbstractTxInterceptorBMT.java
branches/Branch_4_2/tomcat/src/main/org/jboss/web/tomcat/service/jca/CachedConnectionValve.java
Log:
[JBAS-4487] - Suspend any leftover transaction for BMT.
Modified: branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/AbstractTxInterceptorBMT.java
===================================================================
--- branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/AbstractTxInterceptorBMT.java 2007-06-15 15:13:52 UTC (rev 63542)
+++ branches/Branch_4_2/server/src/main/org/jboss/ejb/plugins/AbstractTxInterceptorBMT.java 2007-06-15 16:54:40 UTC (rev 63543)
@@ -215,29 +215,49 @@
log.error("Failed to get status", ex);
}
- switch (status)
+ try
{
- case Status.STATUS_ACTIVE :
- case Status.STATUS_COMMITTING :
- case Status.STATUS_MARKED_ROLLBACK :
- case Status.STATUS_PREPARING :
- case Status.STATUS_ROLLING_BACK :
- try
+ switch (status)
+ {
+ case Status.STATUS_ACTIVE :
+ case Status.STATUS_COMMITTING :
+ case Status.STATUS_MARKED_ROLLBACK :
+ case Status.STATUS_PREPARING :
+ case Status.STATUS_ROLLING_BACK :
+ try
+ {
+ tm.rollback();
+ }
+ catch (Exception ex)
+ {
+ log.error("Failed to rollback", ex);
+ }
+ // fall through...
+ case Status.STATUS_PREPARED :
+ String msg = "Application error: BMT stateless bean " + container.getBeanMetaData().getEjbName()
+ + " should complete transactions before" + " returning (ejb1.1 spec, 11.6.1)";
+ log.error(msg);
+
+ // the instance interceptor will discard the instance
+ throw new RemoteException(msg);
+ }
+ }
+ finally
+ {
+ try
+ {
+ Transaction tx = tm.suspend();
+ if (tx != null)
{
- tm.rollback();
+ String msg = "Application error: BMT stateless bean " + container.getBeanMetaData().getEjbName()
+ + " should complete transactions before " + " returning (ejb1.1 spec, 11.6.1), suspended tx=" + tx ;
+ log.error(msg);
}
- catch (Exception ex)
- {
- log.error("Failed to rollback", ex);
- }
- // fall through...
- case Status.STATUS_PREPARED :
- String msg = "Application error: BMT stateless bean " + container.getBeanMetaData().getEjbName()
- + " should complete transactions before" + " returning (ejb1.1 spec, 11.6.1)";
- log.error(msg);
-
- // the instance interceptor will discard the instance
- throw new RemoteException(msg);
+ }
+ catch (SystemException ex)
+ {
+ log.error("Failed to suspend transaction", ex);
+ }
}
}
Modified: branches/Branch_4_2/tomcat/src/main/org/jboss/web/tomcat/service/jca/CachedConnectionValve.java
===================================================================
--- branches/Branch_4_2/tomcat/src/main/org/jboss/web/tomcat/service/jca/CachedConnectionValve.java 2007-06-15 15:13:52 UTC (rev 63542)
+++ branches/Branch_4_2/tomcat/src/main/org/jboss/web/tomcat/service/jca/CachedConnectionValve.java 2007-06-15 16:54:40 UTC (rev 63543)
@@ -31,6 +31,7 @@
import javax.servlet.ServletException;
import javax.transaction.Status;
import javax.transaction.SystemException;
+import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import org.apache.catalina.Lifecycle;
@@ -225,40 +226,74 @@
log.error("Failed to get status", ex);
}
- switch (status)
+ try
{
- case Status.STATUS_ACTIVE:
- case Status.STATUS_COMMITTING:
- case Status.STATUS_MARKED_ROLLBACK:
- case Status.STATUS_PREPARING:
- case Status.STATUS_ROLLING_BACK:
- try
+ switch (status)
+ {
+ case Status.STATUS_ACTIVE:
+ case Status.STATUS_COMMITTING:
+ case Status.STATUS_MARKED_ROLLBACK:
+ case Status.STATUS_PREPARING:
+ case Status.STATUS_ROLLING_BACK:
+ try
+ {
+ tm.rollback();
+ }
+ catch (Exception ex)
+ {
+ log.error("Failed to rollback", ex);
+ }
+ // fall through...
+ case Status.STATUS_PREPARED:
+ String servletName = "<Unknown>";
+ try
+ {
+ Wrapper servlet = request.getWrapper();
+ if (servlet != null)
+ {
+ servletName = servlet.getName();
+ if (servlet.getJspFile() != null)
+ servletName = servlet.getJspFile();
+ }
+ }
+ catch (Throwable ignored)
+ {
+ }
+
+ String msg = "Application error: " + servletName + " did not complete its transaction";
+ log.error(msg);
+ }
+ }
+ finally
+ {
+ try
+ {
+ Transaction tx = tm.suspend();
+ if (tx != null)
{
- tm.rollback();
- }
- catch (Exception ex)
- {
- log.error("Failed to rollback", ex);
- }
- // fall through...
- case Status.STATUS_PREPARED:
- String servletName = "<Unknown>";
- try
- {
- Wrapper servlet = request.getWrapper();
- if (servlet != null)
+ String servletName = "<Unknown>";
+ try
{
- servletName = servlet.getName();
- if (servlet.getJspFile() != null)
- servletName = servlet.getJspFile();
+ Wrapper servlet = request.getWrapper();
+ if (servlet != null)
+ {
+ servletName = servlet.getName();
+ if (servlet.getJspFile() != null)
+ servletName = servlet.getJspFile();
+ }
}
+ catch (Throwable ignored)
+ {
+ }
+ String msg = "Application error: " + servletName +
+ " did not complete its transaction suspended tx=" + tx ;
+ log.error(msg);
}
- catch (Throwable ignored)
- {
- }
-
- String msg = "Application error: " + servletName + " did not complete its transaction";
- log.error(msg);
+ }
+ catch (SystemException ex)
+ {
+ log.error("Failed to suspend transaction", ex);
+ }
}
}
}
More information about the jboss-cvs-commits
mailing list