Unable to enlist XAResource
---------------------------

                 Key: ODE-515
                 URL: https://issues.apache.org/jira/browse/ODE-515
             Project: ODE
          Issue Type: Improvement
          Components: JBI Integration
    Affects Versions: 1.3
         Environment: ServiceMix 3.3, Hibernate DAO, Oracle Database
            Reporter: Rafal Rusin
             Fix For: 1.3


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.wrappernamedxaresou...@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. 


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to