Transacciones locales y globales
Las aplicaciones utilizan los recursos, por ejemplo, los orígenes de datos JDBC (Java™ Database Connectivity) o las fábricas de conexiones, que se han configurado mediante la vista Recursos de la consola administrativa. La forma en que estos recursos participan en una transacción global depende del soporte de transacciones subyacente del proveedor de recursos.
Por ejemplo, la mayoría de proveedores de JDBC pueden proporcionar versiones XA o no XA de un origen de datos. Un origen de datos no XA sólo puede dar soporte a las transacciones locales del gestor de recursos (RMLT), pero un origen de datos XA puede dar soporte a la coordinación de compromiso de dos fases, así como a las transacciones locales.
![[z/OS]](../images/ngzos.gif)
Si una aplicación utiliza dos o más proveedores de recursos
que sólo dan soporte a RMTL, no puede asegurarse su distribución debido a la naturaleza
monofásica de estos recursos. Para garantizar que estos recursos se distribuyen, la aplicación debe utilizar recursos que
den soporte a la coordinación XA o la coordinación RRS, y acceder a ellos dentro de una
transacción global.
Si una aplicación utiliza dos o más proveedores de recursos
que sólo dan soporte a RMTL, no puede asegurarse su distribución debido a la naturaleza
monofásica de estos recursos. Para garantizar que estos recursos se distribuyen, la aplicación debe utilizar
recursos que den soporte a la coordinación XA y acceder a ellos en una
transacción global.
Si una aplicación utiliza solamente un recurso RMLT, el gestor de recursos puede garantizar el comportamiento distribuido y se puede acceder al mismo en un contexto de contenedor de transacciones locales (LTC).
Una aplicación también puede acceder a un solo gestor de recursos en un contexto de transacción global, aunque dicho gestor de recursos no dé soporte a la coordinación XA. Una aplicación puede hacerlo, ya que el servidor de aplicaciones realiza una "optimización sólo de recursos" e interactúa con el gestor de recursos en una RMLT. En un contexto de transacción global, cualquier intento de utilizar más de un proveedor de recursos que dé soporte sólo a RMLT hace que la transacción global se retrotraiga.
En cualquier momento, una instancia de un enterprise bean puede tener trabajo pendiente en un contexto de transacción global o de contenido de transacción local, pero no de ambos. Una instancia de un enterprise bean puede pasar de ejecutarse en un tipo de contexto al otro (en cualquier sentido), si todo el trabajo pendiente del contexto original se ha completado. Cualquier violación de este principio genera una excepción cuando el enterprise bean intenta iniciar el contexto nuevo.