please help me for the error of
yuanwh Jun 3, 2006 11:12 AMHi, I use JTA to control transaction with Oracle 9i and JBoss 4.02. but each time I call commit(), it always throw the exception of "The XID is not valid"
I have tried it both by ojdbc14.jar && classes12.jar. Any one can give me some tips? thank in advance!
my oracle-xa-ds.xml is like this:
<datasources> <xa-datasource> <jndi-name>XAOracleDS1</jndi-name> <track-connection-by-tx>true</track-connection-by-tx> <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:@host1:1521:orcl</xa-datasource-property> <xa-datasource-property name="User">a</xa-datasource-property> <xa-datasource-property name="Password">r</xa-datasource-property> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <no-tx-separate-pools/> <metadata> <type-mapping>Oracle9i</type-mapping> </metadata> </xa-datasource> <xa-datasource> <jndi-name>XAOracleDS</jndi-name> <track-connection-by-tx>true</track-connection-by-tx> <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:@host2:1521:orcl</xa-datasource-property> <xa-datasource-property name="User">tt</xa-datasource-property> <xa-datasource-property name="b">nt</xa-datasource-property> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <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>
and my demo code is like this:
UserTransaction utx = (UserTransaction)ctx.lookup("java:/comp/UserTransaction");
utx.begin();
DataSource ds = (DataSource)ctx.lookup("java:/XAOracleDS");
Connection conn = ds.getConnection();
DataSource ds1 = (DataSource)ctx.lookup("java:/XAOracleDS1");
Connection conn1 = ds1.getConnection();
PreparedStatement stmt = conn.prepareStatement("insert into test2 values(98, 'ee', 'bbb')");
PreparedStatement stmt1 = conn1.prepareStatement("insert into p_ax values('qwe', 567, 'fff')");
try {
stmt.executeUpdate();
stmt1.executeUpdate();
utx.commit();
} catch (Exception e) {
utx.rollback();
throw e;
} finally {
stmt.close();
conn.close();
stmt1.close();
conn1.close();