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

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

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

WebLogic UserTransaction ルックアップ
< span class="Code"> < span class= "JavaType">UserTransaction< /span> xact = ctx.lookup("javax.transaction.UserTransaction");

または

< span class="Code"> < span class= "JavaType">UserTransaction< /span> xact = ctx.lookup("weblogic.transaction.UserTransaction");

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

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

UOWManager ルックアップ

< span class="Code"> < span class= "JavaType"> UOWManager < /span> uowMgr = ctx.lookup(" java:comp/websphere/UOWManager ");

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