0

JTA がロールバックまたはコミットのコマンドで操作を完了していないため、アプリケーションがデータベース テーブルをロックしました。

アプリケーションは、2 つの管理対象サーバーを含むクラスター内の weblogic 10.3 で実行されています。

データベースにアクセスするメソッドは同期され、メソッド内の最初の部分がクエリを実行し、2 番目の部分が別のメソッドを呼び出してマージを実行します。このメソッドには、注釈 @Transaction(read-only=false) があります。

JTA トランザクションは weblogic によって実行されます。

私の質問は、説明したシナリオに基づいて、何がデータベースでロックを生成している可能性がありますか?

4

1 に答える 1

0

ロックが取得されないスレッドの問題に見えます。

データベースにアクセスするメソッドは同期され、メソッド内の最初の部分がクエリを実行し、2 番目の部分が別のメソッドを呼び出してマージを実行します。

2 つのメソッドが 2 つの異なるロックを必要とするかどうかを確認します。必要な場合は、メソッド 1 のスレッドがメソッド 2 にアクセスするためのロックを待機し続けると、デッドロックが発生する可能性があります。

于 2012-05-16T02:45:10.523 に答える