Uploaded image for project: 'ODE'
  1. ODE
  2. ODE-515

Unable to enlist XAResource

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.3.2
    • 1.3.3
    • JBI Integration
    • None
    • ServiceMix 3.3, Hibernate DAO, Oracle Database

    Description

      I used a following configuration in jndi.xml:

      <bean id="odeMCF" class="org.tranql.connector.oracle.XAMCF">
      <property name="databaseName" value="XE"/>
      <property name="userName" value="ode12"/>
      <property name="password" value="ode12"/>
      <property name="portNumber" value="1521"/>
      <property name="serverName" value="localhost"/>
      <property name="driverType" value="thin"/>
      </bean>

      <bean id="odeDataSource" class="org.jencks.factory.ConnectionFactoryFactoryBean">
      <property name="managedConnectionFactory" ref="odeMCF"/>
      <property name="connectionManager" ref="connectionManager"/>
      </bean>

      Note that tranql is configured using vendor-oracle jar instead of org.jencks.tranql.DataSourceMCF.

      I deployed ODE successfully.
      I deployed process helloworld-sa.
      I got a following warning:

      17:30:53,359 | WARN | Timer-3 | Transaction | action.manager.TransactionImpl 212 | Unable to enlist XAResource org.apache.geronimo.transaction.manager.WrapperNamedXAResource@1190cfc, errorC
      ode: -6
      oracle.jdbc.xa.OracleXAException
      at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1120)
      at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:249)
      at org.apache.geronimo.transaction.manager.WrapperNamedXAResource.start(WrapperNamedXAResource.java:86)
      at org.apache.geronimo.transaction.manager.TransactionImpl.enlistResource(TransactionImpl.java:208)
      at org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor.getConnection(TransactionEnlistingInterceptor.java:54)
      at org.apache.geronimo.connector.outbound.TransactionCachingInterceptor.getConnection(TransactionCachingInterceptor.java:88)
      at org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.getConnection(ConnectionHandleInterceptor.java:43)
      at org.apache.geronimo.connector.outbound.TCCLInterceptor.getConnection(TCCLInterceptor.java:39)
      at org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.getConnection(ConnectionTrackingInterceptor.java:66)
      at org.apache.geronimo.connector.outbound.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:87)
      at org.tranql.connector.jdbc.DataSource.getConnection(DataSource.java:56)
      at org.apache.ode.daohib.SessionManager.getConnection(SessionManager.java:115)
      at org.apache.ode.daohib.DataSourceConnectionProvider.getConnection(DataSourceConnectionProvider.java:43)
      at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
      at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
      at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
      at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
      at org.hibernate.loader.Loader.doQuery(Loader.java:673)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
      at org.hibernate.loader.Loader.doList(Loader.java:2220)
      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
      at org.hibernate.loader.Loader.list(Loader.java:2099)
      at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
      at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
      at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
      at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
      at org.apache.ode.daohib.bpel.BpelDAOConnectionImpl.getProcess(BpelDAOConnectionImpl.java:119)
      at org.apache.ode.bpel.engine.BpelProcess.bounceProcessDAO(BpelProcess.java:753)
      at org.apache.ode.bpel.engine.BpelProcess.access$1500(BpelProcess.java:78)
      at org.apache.ode.bpel.engine.BpelProcess$HydrationLatch$3.call(BpelProcess.java:872)
      at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:208)
      at org.apache.ode.bpel.engine.BpelProcess$HydrationLatch.doHydrate(BpelProcess.java:870)
      at org.apache.ode.bpel.engine.BpelProcess$HydrationLatch.access$100(BpelProcess.java:786)
      at org.apache.ode.bpel.engine.BpelProcess$HydrationLatch$2.run(BpelProcess.java:796)
      at org.apache.ode.bpel.engine.NStateLatch.latch(NStateLatch.java:89)
      at org.apache.ode.bpel.engine.BpelProcess.hydrate(BpelProcess.java:661)
      at org.apache.ode.bpel.engine.BpelServerImpl.register(BpelServerImpl.java:285)
      at org.apache.ode.jbi.OdeServiceUnit.start(OdeServiceUnit.java:104)
      at org.apache.ode.jbi.OdeSUManager.start(OdeSUManager.java:115)
      at org.apache.servicemix.jbi.framework.ServiceUnitLifeCycle.start(ServiceUnitLifeCycle.java:103)
      at org.apache.servicemix.jbi.framework.ServiceAssemblyLifeCycle.start(ServiceAssemblyLifeCycle.java:132)
      at org.apache.servicemix.jbi.framework.DeploymentService.start(DeploymentService.java:378)
      at org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly(AutoDeploymentService.java:355)
      at org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:256)
      at org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(AutoDeploymentService.java:667)
      at org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(AutoDeploymentService.java:62)
      at org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDeploymentService.java:631)
      at java.util.TimerThread.mainLoop(Timer.java:512)
      at java.util.TimerThread.run(Timer.java:462)

      I did some research for this and found that enabling JTA environment for hibernate in bpel-store/src/main/java/org/apache/ode/store/hib/DbConfStoreConnectionFactory.java, adding transactionManager.begin() and commit() in jbi/src/main/java/org/apache/ode/jbi/OdeSUManager.java and modifying ProcessStoreImpl.java so it uses the same thread for database operations, solves problem.

      It is similar to transactions usage in dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/BpelDAOConnectionFactoryImpl.java, which doesn't show this warning.

      Attachments

        Activity

          People

            Unassigned Unassigned
            rrusin Rafal Rusin
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: