The TransactionManager implements UserTransaction, so try something like: UserTransasction utx = (UserTransasction) getContext().getTransactionManager();
On Tue, Mar 3, 2009 at 15:14, Andrea Zoppello <[email protected]> wrote: > 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.- > Show quoted text - > > > 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??? >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> >>>> >>> >>> >> >> >> >> > > -- Cheers, Guillaume Nodet ------------------------ Blog: http://gnodet.blogspot.com/ ------------------------ Open Source SOA http://fusesource.com
