Obwohl WebSphere Application Server Traditional JMS-Sitzungen mit lokalen Transaktionen zulässt, ist die Portierung einer WebSphere Application Server Traditional-JMS-Sitzung mit lokalen Transaktionen in Liberty nicht zulässig.
Diese Regel markiert Java-Code, der auf die folgenden Methoden verweist, wenn der
boolesche Parameter transacted auf true oder der Parameter
sessionMode auf Session.SESSION_TRANSACTED oder JMSContext.SESSION_TRANSACTED gesetzt ist:
Der Aufruf dieser Methoden mit diesen speziellen Werten kann zu einem anderen Verhalten in Liberty führen.
Gemäß der JMS-Spezifikation gilt für den Java EE-Web- oder EJB-Container Folgendes:
AUTO_ACKNOWLEDGE oder DUPS_OK_ACKNOWLEDGE gesetzt werden, und das Session- bzw. Context-Objekt wird als
nicht transaktionsorientiertes Objekt mit dem angegebenen sessionMode- bzw. acknowledgeMode-Wert erstellt.
In WebSphere Traditional werden die übergebenen Parameter in diesen Szenarien nicht ignoriert und somit können Session-Objekte (Sitzungen) mit lokalen Transaktionen erstellt werden.
Wenn dieselbe Anwendung unverändert in Liberty ausgeführt wird, kann sie entweder ein Session-Objekt ohne
Transaktionen abrufen oder das erstellte Session-Objekt in eine vorhandene globale Transaktion eintragen lassen.
Wenn ein Session- oder JMSContext-Objekt abgerufen wird, führt der Versuch, die Methode
"commit()" oder die Methode "rollback()" für das Objekt aufzurufen, in beiden Fällen dazu, dass eine Ausnahme ausgelöst wird.
Weitere Informationen finden Sie unter Liberty: Bekannte Probleme und Einschränkungen für die Laufzeitumgebung.