2 つ以上の Spring Batch ジョブを同時に開始しようとすると、エラーがスローされます: ORA-08177: このトランザクションのアクセスをシリアル化できません

王林
リリース: 2024-02-09 17:00:10
転載
429 人が閲覧しました

php エディタ Xigua は、Spring Batch の使用時に問題が発生する可能性があります。2 つ以上の Spring Batch ジョブを同時に開始しようとすると、エラーがスローされます: ORA-08177: このトランザクションへのアクセスをシリアル化できません。このエラーは混乱を招くかもしれませんが、実際にはデータベースのロックの問題が原因で発生します。この問題を解決する前に、Spring Batch とデータベース トランザクションに関する背景知識を理解する必要があります。

質問内容

completablefuture を使用して 2 つの Spring バッチ ジョブを並行して実行しようとしたときにエラーが発生しました。エラーメッセージは次のとおりです:

リーリー

私は Spring Batch 5.x、Spring Boot 3.1.6、jdk 17

を使用しています。

アプリケーションのプロパティ

リーリー

batchconfig.java

リーリー

}

employeejobconfig.java

リーリー

managerconfig.java

リーリー

バッチジョブマネージャー.java

リーリー

batchexecutorservice.java

リーリー

バッチジョブランナー.java

リーリー

バッチジョブ.java

リーリー

ジョブは 1 つずつまたは順番に実行すると正常に実行されます。ただし、completablefuture を使用するときに問題が発生しました。春のバッチジョブを同時に開始するのは正しい方法ですか?

解決策

1.次のプロパティをapplication.properties

に追加します。

spring.main.allow-bean-definition-overriding=true

2. 以下のbatchconfig.javaに示すように、joblauncher()を更新しました

リーリー
  1. completablefuture を削除しました。

  2. batchexecutorservice.java

    を削除しました
  3. ジョブを呼び出すために、batchjobmanager.java に次のメソッドを追加しました。

    リーリー

以上が2 つ以上の Spring Batch ジョブを同時に開始しようとすると、エラーがスローされます: ORA-08177: このトランザクションのアクセスをシリアル化できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
lsp
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!