Web コンテナーから効率的にバッチ ジョブを実行する必要がある場合、 TaskExecutorインターフェイス (非同期バージョン)の別の実装を使用する必要があるという事実に出くわしたとき、私は Spring Batch のドキュメントを読んでいました。
HTTP 要求がバッチ ジョブをトリガーすると想定しています。そして、私が理解しているように、クライアントがJobLauncherインターフェースの run メソッドを介してジョブを起動すると、クライアントはJobExecutionオブジェクトが返されるのを待つ必要があり、典型的なバッチジョブは最後に何時間も実行されるため、これはおそらくジョブが同期的に実行される場合、あまり実現可能ではありません。現在、AsyncTaskExecutorは各ステップを個別のスレッドで実行し、UNKNOWN ステータスでJobExecutionオブジェクトをすぐに返します。
まず、クライアントサーバー接続の観点からこれがどのように機能するかを誰かに説明してもらえますか? いずれの場合も、クライアントはセッションを終了する前にバッチが終了するのを待たないでしょうか? または、クライアントはバッチ ジョブの終了ステータスを認識しませんか? バッチが終了するまで接続を維持しなければならないという問題全体に関係していますか?
例として、クライアントが、サーブレットのdogetメソッドによって処理される HTTP get 要求を送信する Web ページを持っているとします。このメソッドは、ジョブ ランチャーのrunメソッドを呼び出します。このメソッドはJobExecutionオブジェクトを返します。そして、話の残りは上記の通りです。
ありがとう、アディティア。