Soporte de transacciones globales JDBC y SQLJ
JDBC y el soporte de transacciones globales SQLJ permite que los Enterprise Java Beans (EJB) y los servlets de Java accedan a Db2 for z/OS® datos relacionales dentro de transacciones globales.
WebSphere® Application Server proporciona el entorno para desplegar EJB y servlets, y RRS proporciona la gestión de transacciones.
El soporte de transacciones globales JDBC y SQLJ proporciona una función similar al soporte de transacciones distribuidas JDBC y SQLJ. Sin embargo, el soporte de transacciones distribuidas JDBC y SQLJ está disponible con IBM® Data Server Driver for JDBC and SQLJ en Db2 for z/OS o Db2.
Puede utilizar transacciones globales en las aplicaciones JDBC o SQLJ. Las transacciones globales están soportadas para las conexiones que se establecen mediante la interfaz DriverManager o DataSource.
La mejor forma de mostrar la utilización de transacciones
globales es compararlas con transacciones locales. Con las transacciones locales puede llamar a los métodos commit o rollback de la clase
Connection para realizar cambios permanentes en la base de datos e indicar el final de cada unidad de trabajo. También puede utilizar el método setAutoCommit(true) para realizar una operación de confirmación después de cada sentencia de SQL. El código de programa siguiente muestra un ejemplo de una transacción local.
con1.setAutoCommit(false); // Set autocommit off
// execute some SQL
…
con1.commit(); // Commit the transaction
// execute some more SQL
…
con1.rollback(); // Roll back the transaction
con1.setAutoCommit(true); // Enable commit after every SQL statement
…
Por el contrario, las aplicaciones no pueden llamar a los métodos commit, rollback
o setAutoCommit(true) en el objeto Connection cuando las aplicaciones están en una transacción global. Con las transacciones globales, los métodos commit o rollback en el objeto Connection no indican los límites de las transacciones. En su lugar, sus aplicaciones permiten a WebSphere gestionar los límites de las transacciones. Alternativamente, puede utilizar Db2 -interfaces personalizadas de Java Transaction API (JTA) para indicar los límites de las transacciones. Aunque Db2 for z/OS no implementa la especificación JTA, los métodos para delimitar los límites de las transacciones están disponibles con el controlador JDBC. En el código siguiente se muestra el uso de las interfaces JTA para indicar los límites de las transacciones globales.
javax.transaction.UserTransaction utx;
// Use the begin method on a UserTransaction object to indicate
// the beginning of a global transaction.
utx.begin();
…
// Execute some SQL with one Connection object.
// Do not call Connection methods commit or rollback.
…
// Use the commit method on the UserTransaction object to
// drive all transaction branches to commit and indicate
// the end of the global transaction.
utx.commit();
…