Hi Guillaume,

I've done and the transaction manager is correctly retrieved from jndi, the problem arise when
i try to get the transaction ( not the transaction manager ).

I've also made a simple smx-bean with the following code:

System.out.println(" ************************** FIRST***********************************");
           UserTransaction utx = null;
           try{
utx = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");
           }catch (Throwable tx) {
               tx.printStackTrace();
           }
TransactionManager tm = (TransactionManager)getContext().getTransactionManager();
           tm.begin();
System.out.println(" ************************** AFTER ***********************************"); try{ utx = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");
           }catch (Throwable tx) {
               tx.printStackTrace();
           }

but in both point i get the user transaction not bound to jndi tree.

BTW i i still get the above code working is not enough for me beacuse i need ( for example ) two different session factory each one
pointing to a xa datasource to participate in a distributed transaction.

Andrea
Guillaume Nodet ha scritto:
Looking at the default values in conf/jndi.xml, the transaction manager is
bound to the following values:
     <entry key="javax.transaction.TransactionManager"
value-ref="transactionManager" />
    <entry key="java:comp/env/smx/TransactionManager"
value-ref="transactionManager" />

So you need to configure hibernate to look at one of those values.

On Tue, Mar 3, 2009 at 14:40, Andrea Zoppello <[email protected]> wrote:

Hi Guillaume,

I think the user transaction object shoud be bound automatically to the
jndi tree
by the transaction manager.

Do we miss something in configuration file??

Andrea
Guillaume Nodet ha scritto:- Show quoted text -

 Is the UserTransaction object bound in your spring JNDI configuration file
?

On Mon, Mar 2, 2009 at 10:35, Andrea Zoppello <[email protected]>
wrote:



Hi,

I've developed a custom servicemix-bean component that initialize a jbpm
engine.

The engine use hibernate and i want to configure the hibernate.cf.xml
file
to be able to use JTA Transactions.

The hibernate.cfg.xml file looks like:

<hibernate-configuration>
<session-factory>

 <!-- hibernate dialect -->
  <property

name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
  <property
name="hibernate.connection.datasource">java:comp/env/jdbc/jbpm</property>
  <property

name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.GeronimoTransactionManagerLookup</property>

  <property

name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
  <property name="hibernate.query.substitutions">true 1, false
0</property>
  <property
name="jta.UserTransaction">java:comp/UserTransaction</property>
.....

And i've declared te jbpm datasource as:

<entry key="java:comp/env/jdbc/jbpm">
     <bean id="jbpm-ds"
           class="org.apache.commons.dbcp.managed.BasicManagedDataSource"
           destroy-method="close">
           <property name="driverClassName"
value="com.mysql.jdbc.Driver"/>
           <property name="url"
value="jdbc:mysql://localhost:3306/jbpm"/>
                     <property name="username" value="jbpm"/>
           <property name="password" value="jbpm"/>
           <property name="defaultCatalog" value="jbpm"/>
           <property name="transactionManager" ref="transactionManager"/>
           <property name="XADataSource"
value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>

     </bean>
   </entry>

Within this configuration the XADatsource to mysql database seems to be
configured directly but i've a fault gettin the user transaction. The
exception is:

ERROR - JTATransaction                 - Could not find UserTransaction
in
JNDI
javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
ERROR - JobExecutorThread              - exception in job executor
thread.
waiting 5000 milliseconds

org.hibernate.TransactionException: Could not find UserTransaction in
JNDI:
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:64)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
Caused by: javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     ... 10 more
ERROR - JTATransaction                 - Could not find UserTransaction
in
JNDI
javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
ERROR - JobExecutorThread              - exception in job executor
thread.
waiting 10000 millisecond
s
org.hibernate.TransactionException: Could not find UserTransaction in
JNDI:
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:64)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
Caused by: javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     ... 10 more
ERROR - JTATransaction                 - Could not find UserTransaction
in
JNDI
javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
ERROR - JobExecutorThread              - exception in job executor
thread.
waiting 20000 millisecond
s
org.hibernate.TransactionException: Could not find UserTransaction in
JNDI:
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:64)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
Caused by: javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     ... 10 more
ERROR - JTATransaction                 - Could not find UserTransaction
in
JNDI
javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
ERROR - JobExecutorThread              - exception in job executor
thread.
waiting 40000 millisecond
s
org.hibernate.TransactionException: Could not find UserTransaction in
JNDI:
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:64)
     at

org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.j
ava:57)
     at
org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
     at
org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
     at
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1325)
     at

org.jbpm.persistence.db.DbPersistenceService.beginTransaction(DbPersistenceService.java:1
32)
     at

org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:124)
     at

org.jbpm.persistence.db.DbPersistenceService.getJobSession(DbPersistenceService.java:369)

     at org.jbpm.JbpmContext.getJobSession(JbpmContext.java:630)
     at

org.jbpm.job.executor.JobExecutorThread.acquireJobs(JobExecutorThread.java:106)
     at
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:54)
Caused by: javax.naming.NamingException: scheme java not recognized
     at

org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.java:131)
     at javax.naming.InitialContext.lookup(InitialContext.java:351)
     at
org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
     ... 10 more

Any idea???









Reply via email to