CMT Bean からの UserTransaction インターフェースを使用しない

Java EE 仕様は、コンテナー管理トランザクション (CMT) Bean が UserTransaction オブジェクトにアクセスしない可能性があることを示しています。ただし、WebLogic は UserTransaction ルックアップをサポートします。

この規則により、以下のタイプのコードにフラグを立てます。

WebLogic UserTransaction ルックアップ
UserTransaction xact = ctx.lookup("javax.transaction.UserTransaction");

または

UserTransaction xact = ctx.lookup("weblogic.transaction.UserTransaction");

フラグが立てられている UserTransaction へのアクセスは、Bean では許可されていません。 解決方法は、UserTransaction を使用してコードが試行している処理によって異なります。 UserTransaction の使用について調べ、コードを変更する方法や、参照を削除できるかどうかを判別してください。

UserTransaction の代わりに例えば UOWManager を使用することもできます。 このマネージャーのルックアップでも、次のように JNDI ルックアップを使用します。例えば、次のとおりです。

UOWManager ルックアップ

UOWManager uowMgr = ctx.lookup("java:comp/websphere/UOWManager");

別の方法として、SessionSynchronization インターフェースの使用があります。このインターフェースを使用して、afterBegin、beforeCompletion、および afterCompletion メソッドにアクセスすることができます。 メソッド beforeCompletion を使用すると、エラー発生時にトランザクションの前のバージョンに戻ることができます。