Tipo de transacciones y comportamiento de las conexiones

Todos los usos de conexiones se realizan dentro del ámbito de una transacción global o de un límite LTC (Contenedor de transacciones locales). Cada tipo de transacción establece distintos requisitos sobre las conexiones y tiene un impacto diferente en los valores de conexiones.

El compartimiento y reutilización de conexiones

Se pueden compartir conexiones dentro de un ámbito de transacción global (suponiendo que se hayan cumplido otras reglas para compartir). También puede compartir conexiones en un LTC que puede compartirse. Puede volver a utilizar en serie las conexiones dentro de un ámbito de LTC. Se puede ejecutar un patrón de conexión get/use/close seguido de otra instancia de get/use/close (con el mismo origen de datos o la misma fábrica de conexiones), lo que permitirá volver a utilizar la misma conexión. Consulte el tema sobre las Conexiones compartibles y no compartibles para obtener más detalles.

Comportamiento de AutoCommit en JDBC

Todas las conexiones JDBC, cuando se obtienen por primera vez mediante una llamada getConnection(), contienen como valor predeterminado AutoCommit=TRUE. No obstante, valores y ámbitos distintos de conexión pueden dar como resultado la modificación o simplemente la alteración temporal del valor AutoCommit.
  • Si trabaja en un LTC y el valor de resolution-control se ha establecido en Application, el valor de AutoCommit continuará siendo TRUE a menos que lo cambie la aplicación.
  • Si trabaja en un LTC y el valor de resolution-control se ha establecido en ContainerAtBoundary, la aplicación no debe alterar el valor de AutoCommit. El tiempo de ejecución de WebSphere Application Server establecerá el valor de AutoCommit en FALSE antes de iniciar el trabajo y comprometerá o retrotraerá dicho trabajo según corresponda cuando se alcance el fin del ámbito de LTC.
  • Si utiliza una conexión dentro de una transacción global, la base de datos pasará por alto el valor de AutoCommit, para que el servicio de transacciones que controla el proceso de comprometer y retrotraer pueda manejar la transacción. Esta acción se produce la primera vez que se utiliza la conexión para realizar un trabajo, independientemente de que el usuario cambie el valor de AutoCommit. Una vez finalizada la transacción, el valor de AutoCommit volverá a adoptar el valor que tenía antes de que se utilizara la conexión por primera vez. Por lo tanto, aunque el valor de AutoCommit se establezca en TRUE antes de que se utilice la conexión en una transacción global, no será necesario establecerlo como FALSE, ya que la base de datos pasa por alto el valor. En este ejemplo, una vez finalizada la transacción, el valor de AutoCommit de la conexión volverá a ser TRUE.
  • Si utiliza varias conexiones diferentes dentro de una transacción global, todo el trabajo se comprometerá o retrotraerá a la vez. Este no es el caso para un contenedor de transacciones locales (ámbito de LTC). Dentro de LTC, un trabajo realizado en una conexión se compromete o retrotrae independientemente del trabajo realizado en otra conexión dentro de LTC.

Conexiones de compromiso de una fase o de dos fases

El tipo y número de gestores de recursos como, por ejemplo, un servidor de datos a los que debe acceder una aplicación a menudo determinan los requisitos de transacciones de la aplicación. En consecuencia, cada tipo de gestor de recursos establece distintos tipos de requisitos sobre el comportamiento de las conexiones.
  • Un gestor de recursos de compromiso de dos fases puede dar soporte a la coordinación de dos fases de una transacción. Este soporte es necesario para las transacciones que implican a otros gestores de recursos; estas transacciones son transacciones globales. Consulte el tema, Soporte de transacciones en WebSphere Application Server para obtener más explicaciones.
  • Un gestor de recursos de compromiso de una fase sólo da soporte a las transacciones de una fase o transacciones LTC, en las que este recurso es el único almacén de datos participante. Consulte el tema, Soporte de transacciones en WebSphere Application Server para obtener más explicaciones.

Los recursos de compromiso de una fase son de tal modo que el trabajo que se realiza en una conexión de una fase no se puede mezclar con las demás conexiones y se debe garantizar que las tareas que se realicen en todas las conexiones de forma global finalicen, de lo contrario, no se ejecutarán correctamente. El producto no permite que haya más de una conexión de compromiso de una fase en una transacción global. Además, no permitirá que haya una conexión de compromiso de una fase en una transacción global que tenga una o varias conexiones de dos fases. Sólo puede coordinar varias conexiones de compromiso de dos fases dentro una transacción global.

WebSphere Application Server proporciona soporte de último participante, que permite a un recurso de compromiso de una fase participar en una transacción global con uno o varios recursos de compromiso de dos fases.

Tenga en cuenta que si realiza varias llamadas getConnection() utilizando una referencia de recurso cuyo valor sea res-sharing-scope=Unshareable, obtendrá varias conexiones físicas. Esta situación también se da cuando res-sharing-scope=Shareable, pero se infringen las reglas de compartimiento. En cualquier caso, si ejecuta una transacción global, asegúrese de que los recursos implicados están habilitados para el compromiso de dos fases (lo que también se conoce como Habilitado para JTA). De lo contrario, se generará una excepción XA que registra el siguiente mensaje:
WTRN0063E: Se ha producido un intento no permitido de incluir un recurso con
capacidad de una fase con recursos con capacidad de dos fases. 

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cdat_codatc
File name: cdat_codatc.html