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()を更新しました
リーリーcompletablefuture を削除しました。
batchexecutorservice.java
を削除しましたジョブを呼び出すために、batchjobmanager.java に次のメソッドを追加しました。
リーリー以上が2 つ以上の Spring Batch ジョブを同時に開始しようとすると、エラーがスローされます: ORA-08177: このトランザクションのアクセスをシリアル化できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。