[jboss-user] [JBoss jBPM] - UserTransaction issues with jBPM and Hibernate

bloreguy do-not-reply at jboss.com
Wed Mar 26 00:34:18 EDT 2008


I am having issues creating a new UserTransaction in a jbpm process using Hibernate.  Am I missing anything in order to create a JTA User transaction and then bind the Hibernate session within the transaction? Please advise
Any advice greatly appreciated

My Code
-----------

public String createXXXXX()
    {
        JbpmContext jbpmContext = null;
        Session session = null;
        UserTransaction tx = null;
        try 
        {       
            jbpmContext = JbpmUtil.getJbpmContext();       
            session = HibernateUtil.getSession();
            jbpmContext.setSession(session);
            System.out.println("About to start tx");
            tx = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");

            while ( ...) {
          ..... 1. Perform custom DB operations using  session
                2. Persist ProcessInstance, Task using the same session

              // throw error to test rollback
             }
       } catch ( Exception e) 
      {
         tx.rollback();
      }

When Tx is rolled back, I expect that all DB operations and jbPM operations shoudl be rolled back. Instead I see this strange behavior:

When I lookup the transaction from InitialContext, the trasnaction statuis is already active!
**************** TX STATUS: 0

So, when I rollback the transaction I get the error:

java.lang.IllegalStateException: Could not start transaction
        at org.jboss.seam.jsf.SeamPhaseListener.begin(SeamPhaseListener.java:571
)
        at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsBeforePhase(Se
amPhaseListener.java:307)
        at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseList
ener.java:142)
        at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.ja
va:116)

Caused by: javax.transaction.NotSupportedException: transaction is already active
        at org.jboss.seam.transaction.HibernateTransaction.assertNotActive(Hiber
nateTransaction.java:174)
        at org.jboss.seam.transaction.HibernateTransaction.begin(HibernateTransa
ction.java:78)
        at org.jboss.seam.jsf.SeamPhaseListener.begin(SeamPhaseListener.java:566


jbpm.cfg.xml
---------------

<jbpm-configuration>

  <jbpm-context>
    < service name="persistence" >
       < factory>
          < bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
             < field name="isTransactionEnabled"> < false/>
             < field name="isCurrentSessionEnabled"> < false />
          </ bean>
       </ factory>
    </ service>
     < service name="tx" factory="org.jbpm.tx.TxServiceFactory" />
    < service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
    < service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
    < service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
    <  service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"  />
  </ jbpm-context>

</jbpm-configuration>



hibernate.cfg.xml
---------------------
<session-factory name="java:/bookingDatabase">
        < property name="connection.datasource">java:/DefaultDS
        < property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider
        < property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory        
        < property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup
        < property name="transaction.flush_before_completion">true
        <!-- org.hibernate.transaction.JDBCTransactionFactory -->        
        < property name="jta.UserTransaction">java:comp/UserTransaction
        < property name="hibernate.show_sql">true

        <!-- Use the Hibernate built-in pool for tests. -->
	    < property name="connection.pool_size">1



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4138849#4138849

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4138849



More information about the jboss-user mailing list