[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