Les sessions JMS faisant l'objet d'une transaction locale portée ne fonctionnent pas dans Liberty

Même si WebSphere Application Server Traditional permet les sessions JMS faisant l'objet d'une transaction locale, le portage d'une session JMS faisant l'objet d'une transaction locale de WebSphere Application Server Traditional vers Liberty n'est pas autorisé.

Cette règle marque le code Java avec des références aux méthodes ci-dessous lorsque la valeur booléenne transacted est true ou que la valeur sessionMode est Session.SESSION_TRANSACTED ou JMSContext.SESSION_TRANSACTED:

L'appel de ces méthodes avec ces valeurs spécifiques peuvent aboutir à un comportement différent dans Liberty.

En fonction de la spécification JMS, dans la version web de Java EE ou dans le conteneur EJB :

Dans WebSphere Traditional, les paramètres transmis ne sont pas ignorés dans ces scénarios, ce qui permet donc de créer un élément Session faisant l'objet d'une transaction locale. Si cette même application est exécutée dans Liberty sans modification, cela peut aboutir à une session ne faisant pas l'objet d'une transaction ou à une session créée répertoriée dans une transaction globale existante. Dans un cas comme dans l'autre, si un élément Session ou JMSContext est obtenu, la tentative d'appeler commit() ou rollback() entraînera une exception.

Pour des informations, voir Liberty : Problèmes et restrictions connus concernant l'environnement d'exécution.