[jboss-cvs] jboss-seam/src/main/org/jboss/seam/persistence ...
Gavin King
gavin.king at jboss.com
Sun Jun 24 19:35:01 EDT 2007
User: gavin
Date: 07/06/24 19:35:01
Modified: src/main/org/jboss/seam/persistence
ManagedHibernateSession.java
ManagedPersistenceContext.java
Log:
Some EJBs can be BMTs
throw exception if PC is closed with an active tx
Revision Changes Path
1.12 +17 -1 jboss-seam/src/main/org/jboss/seam/persistence/ManagedHibernateSession.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ManagedHibernateSession.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/ManagedHibernateSession.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- ManagedHibernateSession.java 24 Jun 2007 19:40:33 -0000 1.11
+++ ManagedHibernateSession.java 24 Jun 2007 23:35:01 -0000 1.12
@@ -1,4 +1,4 @@
-//$Id: ManagedHibernateSession.java,v 1.11 2007/06/24 19:40:33 gavin Exp $
+//$Id: ManagedHibernateSession.java,v 1.12 2007/06/24 23:35:01 gavin Exp $
package org.jboss.seam.persistence;
import java.io.Serializable;
@@ -10,6 +10,7 @@
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
import org.hibernate.FlushMode;
import org.hibernate.Session;
@@ -185,6 +186,21 @@
private void close()
{
+ boolean transactionActive = false;
+ try
+ {
+ transactionActive = Transaction.instance().isActive();
+ }
+ catch (SystemException se)
+ {
+ log.debug("could not get transaction status while destroying persistence context");
+ }
+
+ if ( transactionActive )
+ {
+ throw new IllegalStateException("attempting to destroy the persistence context while an active transaction exists (try installing <transaction:ejb-transaction/>)");
+ }
+
if ( log.isDebugEnabled() )
{
log.debug("destroying seam managed session for session factory: " + sessionFactoryJndiName);
1.9 +16 -1 jboss-seam/src/main/org/jboss/seam/persistence/ManagedPersistenceContext.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ManagedPersistenceContext.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/persistence/ManagedPersistenceContext.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- ManagedPersistenceContext.java 24 Jun 2007 19:40:33 -0000 1.8
+++ ManagedPersistenceContext.java 24 Jun 2007 23:35:01 -0000 1.9
@@ -1,4 +1,4 @@
-//$Id: ManagedPersistenceContext.java,v 1.8 2007/06/24 19:40:33 gavin Exp $
+//$Id: ManagedPersistenceContext.java,v 1.9 2007/06/24 23:35:01 gavin Exp $
package org.jboss.seam.persistence;
import java.io.Serializable;
@@ -193,6 +193,21 @@
private void close()
{
+ boolean transactionActive = false;
+ try
+ {
+ transactionActive = Transaction.instance().isActive();
+ }
+ catch (SystemException se)
+ {
+ log.debug("could not get transaction status while destroying persistence context");
+ }
+
+ if ( transactionActive )
+ {
+ throw new IllegalStateException("attempting to destroy the persistence context while an active transaction exists (try installing <transaction:ejb-transaction/>)");
+ }
+
if ( log.isDebugEnabled() )
{
log.debug("destroying seam managed persistence context for persistence unit: " + persistenceUnitJndiName);
More information about the jboss-cvs-commits
mailing list