Transactions avec validation en deux phases

Les transactions de validation en deux phases (XA) ne sont pas activées dans Liberty sur les plateformes de cloud. Par défaut, le gestionnaire de transactions de Liberty écrit le fichier journal de transactions sur le système de fichiers local. Etant donné que ce système est éphémère sur les plateformes cloud, le fichier journal des transactions n'est pas disponible après l'arrêt inopiné d'une application ou de la machine virtuelle Java. Bien que le gestionnaire de transactions puisse être configuré pour utiliser un service de base de données pour stocker les journaux de transactions, les plateformes cloud créent automatiquement une nouvelle instance de l'application après un arrêt inopiné. Par conséquent, le gestionnaire de transactions ne peut pas déterminer quel journal utiliser pour récupérer les transactions de l'instance ayant échoué.

Par défaut, les beans Enterprise JavaBeans (EJB) sont gérés par conteneur et possèdent un attribut de transaction Required, qui signifie qu'ils utilisent des transactions JTA. Les transactions JTA qui couvrent une ressource unique sont totalement prises en charge. Les transactions JTA qui couvrent plusieurs ressources nécessitent une validation en deux phases, qui n'est pas prise en charge. Cette règle marque les fichiers ejb-jar.xml et le code Java comportant des références au package javax.ejb. Cette règle marque également le code Java qui contient des références à la classe javax.transaction.UserTransaction. Vérifiez si votre application utilise des transactions XA et supprimez ces transactions XA si elles sont présentes.

Dans le code Java, les annotations explicites ci-dessous indiquent l'utilisation de transactions JTA :

Dans le fichier ejb-jar.xml, les éléments explicites ci-dessous indiquent l'utilisation de transactions JTA :

Remarque: Si votre application n'utilise pas la classe javax.transaction.UserTransaction et que tous les EJB de votre application sont soit gérés par eux-mêmes (bean-managed), soit gérés par le conteneur avec les attributs de transaction réglé sur "Never" ou "NotSupported", alors votre application n'utilise pas de transactions XA, ce qui signifie que le marquage par cette règle peut être ignoré.

Les annotations ou éléments explicites suivants indiquent qu'un bean EJB n'utilise pas de transactions XA :