Unable to perform XA Transcation
jijopmathew Aug 8, 2013 2:23 AMHi,
I trying to do an XA enabled transcation with my EJB 2.1 application deployed in EAP 5.1. Backend database is Oracle. When I call the create() on my Entity Bean I am getting the following exception in the log file
WARN com.arjuna.ats.jta.logging.loggerI18N - [com.arjuna.ats.internal.jta.transaction.arjunacore.enliststarterror] [com.arjuna.ats.internal.jta.transaction.arjunacore.enliststarterror] TransactionImple.enlistResource - XAResource.start returned: XAException.XAER_PROTO for < 131075, 25, 23, 49459748102485453525856545258535048514898975258549797481024854535258565452585350485148989752585499 >
2013-08-08 08:39:27,142 [http-localhost%2F127.0.0.1-8080-1] ERROR STDERR - javax.transaction.xa.XAException
2013-08-08 08:39:27,142 [http-localhost%2F127.0.0.1-8080-1] ERROR STDERR - at oracle.jdbc.xa.OracleXAResource.disallowLocalTxnMode(OracleXAResource.java:1045)
2013-08-08 08:39:27,142 [http-localhost%2F127.0.0.1-8080-1] ERROR STDERR - at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:153)
2013-08-08 08:39:27,142 [http-localhost%2F127.0.0.1-8080-1] ERROR STDERR - at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.start(XAManagedConnection.java:213)
2013-08-08 08:39:27,142 [http-localhost%2F127.0.0.1-8080-1] ERROR STDERR - at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:799)
2013-08-08 08:39:27,142 [http-localhost%2F127.0.0.1-8080-1] ERROR STDERR - at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:510)
My XA datasource configuration in the *-ds.xml is as below
<datasources> <xa-datasource> <jndi-name>jdbc/myXaDS</jndi-name> <isSameRM-override-value>false</isSameRM-override-value> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class> <xa-datasource-property name="URL">jdbc:oracle:thin:@host:1521:schema</xa-datasource-property> <xa-datasource-property name="User">user</xa-datasource-property> <xa-datasource-property name="Password">password</xa-datasource-property> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <no-tx-separate-pools>true</no-tx-separate-pools> <metadata> <type-mapping>Oracle9i</type-mapping> </metadata> </xa-datasource> <mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter" name="jboss.jca:service=OracleXAExceptionFormatter"> <depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends> </mbean> </datasources>
The configuration <no-tx-separate-pools>true</no-tx-separate-pools> was not included initially. But while doing some research on this , it is suggested to include set no-tx-separate-pools to true if we are using Oracle XA. But a restart of the server after setting this to true does not make any diffrence.
Now I just udpated this Mbean property in the jmx console to set to true and do a stop start of the Mbean. After this my application working fine with out any error.
But if I restart the server at any time , the value of NoTxSeparatePools in the jmx console is setting back to false. Hence I am getting the same error again. It seems like its not picking up the value from the *-ds.xml.
Is there anything wrong in my configuration? Any help on how can I set NoTxSeparatePools to true permanantly ?
Thanks
Jijo