Description

I've got an exception java.sql.SQLException: ConnectionImple.registerDatabase - ARJUNA017017: enlist of resource failed while preparing statement in the second connection within the same oracle instance but other schema.

Whole stack trace:

oracle.jdbc.xa.OracleXAException
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1110)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:240)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.enlistResource(TransactionImple.java:741)
at com.arjuna.ats.internal.jdbc.ConnectionImple.registerDatabase(ConnectionImple.java:983)
at com.arjuna.ats.internal.jdbc.ConnectionImple.prepareStatement(ConnectionImple.java:179)
at SimpleJdbcTest.insert(SimpleJdbcTest.java:46)
at SimpleJdbcTest.main(SimpleJdbcTest.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
java.sql.SQLException: ConnectionImple.registerDatabase - ARJUNA017017: enlist of resource failed
at com.arjuna.ats.internal.jdbc.ConnectionImple.registerDatabase(ConnectionImple.java:1003)
at com.arjuna.ats.internal.jdbc.ConnectionImple.prepareStatement(ConnectionImple.java:179)
at SimpleJdbcTest.insert(SimpleJdbcTest.java:46)
at SimpleJdbcTest.main(SimpleJdbcTest.java:36)

(Detail log and SSCCE are attached).

I use jboss transaction manager in standaloine application just to test jboss JTA implementation. The same code works well if one and second data sources use own (different) database instances.
I note that atomikos and bitronix JTA implementation works correctly in the same environment irrespectively single oracle instance is used or not.