Transactions locales et globales
Les applications utilisent des ressources, comme les sources de données JDBC (Java™ Database Connectivity) ou les fabriques de connexions, qui sont configurées via la vue Ressources de la console d'administration. La façon dont ces ressources participent à une transaction globale dépend du support de transaction sous-jacent du fournisseur de ressources.
Par exemple, la majorité des fournisseurs JDBC peuvent fournir des versions XA ou non XA d'une source de données. Une source de données non XA ne peut prendre en charge que les transactions locales du gestionnaire de ressources (RMLT), tandis qu'une source de données XA peut prendre en charge la coordination du protocole de validation en deux phases ainsi que les transactions locales.
![[z/OS]](../images/ngzos.gif)
Si une application utilise deux ou plusieurs
fournisseurs de ressources ne prenant en charge que les transactions RMLT,
l'atomicité ne peut pas être assurée en raison de la nature monophase de ces
ressources. Pour
assurer un comportement atomique, l'application doit utiliser des ressources prenant en charge
la coordination XA ou RRS et y accéder dans une transaction globale.
Si une application utilise deux ou plusieurs
fournisseurs de ressources ne prenant en charge que les transactions RMLT,
l'atomicité ne peut pas être assurée en raison de la nature monophase de ces
ressources. Pour assurer un comportement atomique, l'application doit utiliser des
ressources prenant en charge la coordination XA et y accéder dans une transaction
globale.
Si une application utilise une seule RMLT, le comportement atomique peut être garanti par le gestionnaire de ressources accessible dans un contexte de confinement de transaction locale (LTC).
Une application peut également accéder à un gestionnaire de ressources dans un contexte de transactions globales, même si ce dernier ne prend pas en charge la coordination XA. Une application peut effectuer cette opération car le serveur d'applications effectue "uniquement une optimisation des ressources" et interagit avec le gestionnaire de ressources dans une transaction RMLT. Dans un contexte de transaction globale, toute tentative d'utiliser plus d'un fournisseur de ressources prenant en charge uniquement les transactions RMLT entraîne l'annulation de la transaction globale.
A tout moment, une tâche peut être en attente au niveau d'une instance d'un bean enterprise dans un contexte de transactions locales ou dans un contexte de confinement de transaction locale, mais pas les deux à la fois. Une instance de bean enterprise peut changer de contexte (dans un sens ou dans l'autre) si toutes les tâches en attente dans le contexte initial sont terminées. Toute violation de ce principe entraîne la génération d'une exception lorsque le bean enterprise tente de lancer le nouveau contexte.