This is an example of how to use the Java™ Transaction API (JTA) to handle a transaction in an application.
import java.sql.*; import javax.sql.*; import java.util.*; import javax.transaction.*; import javax.transaction.xa.*; import com.ibm.db2.jdbc.app.*; public class JTACommit { public static void main(java.lang.String[] args) { JTACommit test = new JTACommit(); test.setup(); test.run(); } /** * Handle the previous cleanup run so that this test can recommence. */ public void setup() { Connection c = null; Statement s = null; try { Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); c = DriverManager.getConnection("jdbc:db2:*local"); s = c.createStatement(); try { s.executeUpdate("DROP TABLE CUJOSQL.JTATABLE"); } catch (SQLException e) { // Ignore... does not exist } s.executeUpdate("CREATE TABLE CUJOSQL.JTATABLE (COL1 CHAR (50))"); s.close(); } finally { if (c != null) { c.close(); } } } /** * This test uses JTA support to handle transactions. */ public void run() { Connection c = null; try { Context ctx = new InitialContext(); // Assume the data source is backed by a UDBXADataSource. UDBXADataSource ds = (UDBXADataSource) ctx.lookup("XADataSource"); // From the DataSource, obtain an XAConnection object that // contains an XAResource and a Connection object. XAConnection xaConn = ds.getXAConnection(); XAResource xaRes = xaConn.getXAResource(); Connection c = xaConn.getConnection(); // For XA transactions, a transaction identifier is required. // An implementation of the XID interface is not included with the // JDBC driver. See Transactions with JTA for a description of // this interface to build a class for it. Xid xid = new XidImpl(); // The connection from the XAResource can be used as any other // JDBC connection. Statement stmt = c.createStatement(); // The XA resource must be notified before starting any // transactional work. xaRes.start(xid, XAResource.TMNOFLAGS); // Standard JDBC work is performed. int count = stmt.executeUpdate("INSERT INTO CUJOSQL.JTATABLE VALUES('JTA is pretty fun.')"); // When the transaction work has completed, the XA resource must // again be notified. xaRes.end(xid, XAResource.TMSUCCESS); // The transaction represented by the transaction ID is prepared // to be committed. int rc = xaRes.prepare(xid); // The transaction is committed through the XAResource. // The JDBC Connection object is not used to commit // the transaction when using JTA. xaRes.commit(xid, false); } catch (Exception e) { System.out.println("Something has gone wrong."); e.printStackTrace(); } finally { try { if (c != null) c.close(); } catch (SQLException e) { System.out.println("Note: Cleaup exception."); e.printStackTrace(); } } } }