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 :
AUTO_ACKNOWLEDGE ou DUPS_OK_ACKNOWLEDGE et l'élément Session ou Context est
créé sous forme non transactionnelle, avec l'élément sessionMode/acknowledgeMode spécifié.
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.