WebSphere Application Server 7、JDK 1.6、Oracle 11gで働いています。
私は常にejbを使用しているときにこのエラーを受け取ります。
[7/1/10 17:12:28:770 BOT] 00000013 LocalTranCoor W WLTC0033W:リソースjdbc / oraDS11がLocalTransactionContainmentのクリーンアップでロールバックされました。[7/1/10 17:12:28:773 BOT] 00000013 LocalTranCoor W WLTC0032W:LocalTransactionContainmentのクリーンアップ中に、1つ以上のローカルトランザクションリソースがロールバックされました。
これは、WASのデータソースから接続を取得する方法です。
javax.sql.DataSource ds = (javax.sql.DataSource) naming.lookup("DataSource");
conn= ds.getConnection();
どんな助けでもありがたいです...
エラーメッセージから、ローカルトランザクション内で何らかの作業を行っており、コミットしていません。コミットされていない作業は、メソッドの最後にコンテナによってロールバックされます(デフォルト)。
WAS6.0でのデータソースのロールバックに対するこの回答は、これらすべてをかなりうまくまとめており、言い換えると実際には意味がないので、以下に引用します。
A
LocalTransactionContainment
は、グローバル(XA)トランザクションがない場合に得られるものです。このメッセージは、その包含スコープ(メソッドまたはアクティビティセッション)の一部としてローカルトランザクション作業の一部を実行し、その後コミットしなかったことを示しています。デフォルトの動作(unresolved-actionによって制御される)は、スコープの最後でコミットされていない作業をロールバックすることです。いくつかのオプションがあります。
ローカルトランザクションを明示的にコミットする
connection.commit(); // after the work has been performed
自動コミットを使用するようにデータソースを変更する
connection.setAutoCommit(true); //
接続が使用される前
作業をグローバルトランザクション内に配置する
Context ic = new InitialContext(); UserTransaction ut = (UserTransaction) ic.lookup("java:comp/UserTransaction"); ut.begin(); // use connection here ut.commit();
unresolved-actionをcommitに変更し
ます。デプロイメント記述子エディターの「サーブレット」タブを選択し、問題のサーブレットを選択します。「WebSphere Extensions」の下にある「Local Transaction」で、ドロップダウンメニューから「Unresolved Action」を「Commit」に設定します。
作業を明示的にコミットする(そして答え全体を読む)ことをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加