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
- 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
- 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.
WTRN0063E: Se ha producido un intento no permitido de incluir un recurso con
capacidad de una fase con recursos con capacidad de dos fases.