Index: /jboss/projects/seam/performance/trunk/wiki/svn/trunk/src/main/org/jboss/seam/transaction/Transaction.java =================================================================== --- /jboss/projects/seam/performance/trunk/wiki/svn/trunk/src/main/org/jboss/seam/transaction/Transaction.java (revision 9186) +++ /jboss/projects/seam/performance/trunk/wiki/svn/trunk/src/main/org/jboss/seam/transaction/Transaction.java (working copy) @@ -13,6 +13,8 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Unwrap; import org.jboss.seam.annotations.intercept.BypassInterceptors; +import org.jboss.seam.log.LogProvider; +import org.jboss.seam.log.Logging; import org.jboss.seam.util.EJB; import org.jboss.seam.util.Naming; @@ -31,6 +33,10 @@ @BypassInterceptors public class Transaction { + private static LogProvider log = Logging.getLogProvider(Transaction.class); + + private UserTransaction transaction; + public static UserTransaction instance() { return (UserTransaction) Component.getInstance(Transaction.class, ScopeType.EVENT); @@ -39,6 +45,23 @@ @Unwrap public UserTransaction getTransaction() throws NamingException { + //check if transaction has already been created + if (transaction == null) + { + log.trace("No transaction found - creating/looking up a new transaction"); + + transaction = createTransaction(); + } + + return transaction; + } + + /** + * Creates the correct transaction type and returns it + * @throws NamingException + */ + private UserTransaction createTransaction() throws NamingException + { try { return createUTTransaction();