移植された、ローカルにトランザクション処理される JMS セッションは Liberty では機能しない

WebSphere Application Server traditional では、ローカルにトランザクション処理される JMS セッションが許可されますが、WebSphere Application Server traditional のローカルにトランザクション処理される JMS セッションを Liberty に移植することは許可されません。

この規則により、transacted ブール値が true の場合、または sessionModeSession.SESSION_TRANSACTED または JMSContext.SESSION_TRANSACTED の場合、以下のメソッドへの参照がある Java コードにフラグが立てられます。

このような特定の値を指定した状態でこれらのメソッドを呼び出すと、Liberty では異なる動作になる可能性があります。

JMS 仕様によると、Java EE Web または EJB コンテナー内では以下のような結果になります。

従来の WebSphere では、渡されるパラメーターはこのようなシナリオにおいて無視されないため、ローカルにトランザクション処理される Session の作成が許可されます。それと同じアプリケーションをいっさい変更を加えずに Liberty で実行した場合、代わりに非トランザクションの Session を獲得するか、作成された Session が既存のグローバル・トランザクションに参加することになるかのいずれかの可能性があります。いずれのケースでも、Session または JMSContext を獲得したとして、それに対する commit() または rollback() の呼び出しを試みると、例外がスローされます。

詳しくは、Liberty: ランタイム環境での既知の問題および制約事項を参照してください。