API de transacción Java (JTA)
La API de transacciones Java™ (JTA) se puede utilizar para coordinar actualizaciones transaccionales para múltiples administradores de recursos.
Puede utilizar Java Transaction API (JTA) para coordinar actualizaciones transaccionales paraCICS® recursos y otros administradores de recursos de terceros, como una conexión de controlador de base de datos tipo 4 dentro de un servidor Liberty JVM. En este escenario, el administrador de transacciones de Liberty es el coordinador de transacciones y elCICS unidad de trabajo es subordinada, como si la transacción se hubiera originado fuera delCICS sistema.
- 6.1 Si tiene la opción de perfil JVMcom.ibm.cics.jvmserver.wlp.jta.integration=false y usar autoconfiguración
- 6.2 y más tarde Si configura la opción de perfil JVM com.ibm.cics.jvmserver.wlp.jta.integration=false
- Si está configurando manualmenteserver.xml e incluir el<cicsts_jta Integration="false"/> elemento
Una conexión de controlador tipo 2 a un localDb2® base de datos utilizando unCICS Se accede a la fuente de datos mediante elCICSDb2 adjunto. No es necesario utilizar JTA para coordinar actualizaciones de otrosCICS recursos.
InitialContext ctx = new InitialContext();
UserTransaction tran = (UserTransaction)ctx.lookup("java:comp/UserTransaction");
DataSource ds = (DataSource)ctx.lookup("jdbc/SomeDB");
Connection con = ds.getConnection();
// Start the User Transaction
tran.begin();
// Perform updates to CICS resources via JCICS API and
// to database resources via JDBC/SQLJ APIs
if (allOk) {
// Commit updates on both systems
tran.commit();
} else {
// Backout updates on both systems
tran.rollback();
}
Import-Package: javax.transaction;version="[1.1,2)"
Es posible que su entorno de desarrollo no resalte esta dependencia de forma predeterminada. Es aconsejable comprobar explícitamente y garantizar la versión mínima de1.1 está especificado. Si permites que el entorno de ejecución resuelva la dependencia por sí mismo, podría resolver la versión anterior del paquete desde el JRE subyacente, y entrar en conflicto con el entorno de ejecución Liberty.
A diferencia de unCICS unidad de trabajo, unUserTransaction debe iniciarse explícitamente usando elbegin() método. Invocandobegin() causasCICS para confirmar cualquier actualización que se haya realizado antes de iniciar elUserTransaction . ElUserTransaction se termina invocando cualquiera de loscommit() orollback() métodos, o por el contenedor web cuando finaliza la aplicación web. Mientras que laUserTransaction está activo, el programa no puede invocar el JCICSTask commit() orollback() métodos.
Los métodos JCICSTask.commit() yTask.rollback() no será válido dentro de un contexto de transacción JTA. Si se intenta cualquiera de las dos cosas,InvalidRequestException será arrojado.
El valor predeterminado de Liberty es esperar hasta el primerUserTransaction se crea antes de intentar recuperar cualquier transacción JTA dudosa. Sin embargo,CICS iniciará la recuperación de la transacción tan pronto como se complete la inicialización del servidor Liberty JVM. Si el servidor JVM está instalado como deshabilitado, la recuperación se ejecutará cuando esté habilitado.
Si está utilizando EJB, consulte Uso de transacciones JTA en EJB .