クラス CommandLineJobRunner
コマンドラインからジョブを開始するための基本的なランチャー。一般に、このランチャーは主に、Enterprise Scheduler からのスクリプトを介してジョブを開始するために使用されると想定されています。終了コードは整数にマップされるため、スケジューラーは戻り値を使用して次のアクションを決定できます。返された値は、運用チームが障害時に何をすべきかを決定する際にも役立ちます。例: 5 の戻りコードは、一部のリソースが使用できなかったため、ジョブを再開する必要があることを意味する場合があります。ただし、コードが 10 の場合は、重大なことが発生したため、課題をエスカレーションする必要があることを意味する場合があります。
Spring Batch 内でバッチジョブを起動すると、Job
といくつかの実行コンテキストを含む Spring コンテキストを作成する必要があります。このコマンドラインランチャーを使用して、ジョブとそのコンテキストを単一の場所からロードできます。ランチャーのすべての依存関係は、結合されたアプリケーションコンテキストからの型によるオートワイヤーによって満たされます。JobLauncher
および JobLocator
を除くすべてのフィールドにデフォルト値が提供されます。そのため、オートワイヤーが設定に失敗した場合(ほとんどのフィールドにはデフォルト値があり、オートワイヤーを介して依存関係を満たす必要がないため、依存関係のチェックが無効になっていることに注意してください)、例外がスローされます。また、このクラスによって例外がスローされた場合でも、整数にマップされて返されることに注意してください。
SystemExiter
を設定するためのプロパティが利用可能であることに注意してください。このクラスは、System.exit() を直接呼び出すのではなく、メインメソッドを終了するために使用されます。これは、System.exit() を呼び出すクラスのユニットテストは、新しい JVM 内でテストを開始しない限り不可能であるためです。ただし、これは実行できますが、複雑なソリューションであり、exiter を戦略化するよりもはるかに重要です。
このクラスの引数は、コマンドライン(スペースで区切る)または stdin(改行で区切る)で指定できます。それらは次のとおりです。
jobPath <options> jobIdentifier (jobParameters)*
コマンドラインオプションは次のとおりです
- jobPath:
Job
を含む xml アプリケーションコンテキスト - -restart: (オプション)最後に失敗した実行を再開する
- -stop: (オプション)実行中の実行を停止する
- -abandon: (オプション)停止した実行を放棄する
- -next: (オプション)
Job
のJobParametersIncrementer
に従ってシーケンスの次を開始する - jobIdentifier: ジョブの名前またはジョブ実行の ID(-stop、-abandon、-restart の場合)。
- jobParameters: 0 から
key=value
ペアの形式で指定されたジョブを起動するために使用される多くのパラメーター。
-next
オプションを使用する場合、コマンドラインのパラメーター(ある場合)は、インクリメンターから取得したパラメーターに追加され、同じキーを持つパラメーターをオーバーライドします。
結合されたアプリケーションコンテキストには、JobLauncher
のインスタンスを 1 つだけ含める必要があります。コマンドラインに渡されるジョブパラメーターは、個々の要素が等号で区切られた 1 つのパラメーターであると想定して、Properties
SE に変換されます。例: "vendor.id=290232"。結果のプロパティインスタンスは、アプリケーションコンテキストから JobParametersConverter
を使用して JobParameters
に変換されます (存在する場合は DefaultJobParametersConverter
、存在しない場合は DefaultJobParametersConverter
)。以下は引数リストの例です: "
java org.springframework.batch.core.launch.support.CommandLineJobRunner testJob.xml testJob schedule.date=2008-01-24,java.time.LocalDate vendor.id=3902483920,java.lang.Long
デフォルトでは、`CommandLineJobRunner` は DefaultJobParametersConverter
を使用します。DefaultJobParametersConverter
は、キーと値のペアを識別ジョブパラメーターに暗黙的に変換します。ただし、それぞれ "true" または "false" のサフィックスを付けることで、識別しているジョブパラメーターと識別していないジョブパラメーターを明示的に指定することができます。次の例では、`schedule.date` は識別ジョブパラメーターですが、`vendor.id` はそうではありません。
java org.springframework.batch.core.launch.support.CommandLineJobRunner testJob.xml testJob schedule.date=2008-01-24,java.time.LocalDate,true \ vendor.id=3902483920,java.lang.Long,false
この動作は、カスタム `JobParametersConverter` を使用してオーバーライドできます。
引数の解析が正常に完了すると、オートワイヤーを使用してさまざまな依存関係が設定されます。たとえば、JobLauncher
はこのようにロードされます。Bean ファクトリに何も含まれていない場合 (型で検索)、BeanDefinitionStoreException
がスローされます。複数存在する場合も同じ例外がスローされます。JobLauncher が正しく設定されていると仮定すると、jobIdentifier 引数を使用して実際の Job
が取得されます。JobLocator
が設定されている場合はそれが使用され、設定されていない場合は jobIdentifier を Bean ID として使用して beanFactory が要求されます。
- 導入:
- 1.0
- 作成者:
- Dave Syer, Lucas Ward, Mahmoud Ben Hassine, Minsoo Kim
フィールドサマリー
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明void
exit
(int status) 終了処理に委譲して、VM を(おそらく)正常に終了します。static StringSE
CommandLineJobRunner
のインスタンスによって設定されたエラーメッセージを終了時に取得します。static void
CommandLineJobRunner
を使用してバッチジョブを起動します。static void
presetSystemExiter
(SystemExiter systemExiter) SystemExiter
の静的 setter。これにより、依存性注入の前に調整できます。void
setExitCodeMapper
(ExitCodeMapper exitCodeMapper) ExitCodeMapper
用の setter の注入。void
setJobExplorer
(JobExplorer jobExplorer) JobExplorer
用の setter の注入。void
setJobLocator
(JobLocator jobLocator) 実行するジョブを見つけるためのJobLocator
。void
setJobParametersConverter
(JobParametersConverter jobParametersConverter) JobParametersConverter
用の setter の注入。void
setJobRepository
(JobRepository jobRepository) void
setLauncher
(JobLauncher launcher) JobLauncher
用の setter の注入。void
setSystemExiter
(SystemExiter systemExiter) SystemExiter
用の setter の注入。
フィールドの詳細
logger
protected static final org.apache.commons.logging.Log logger
コンストラクターの詳細
CommandLineJobRunner
public CommandLineJobRunner()
メソッドの詳細
setLauncher
JobLauncher
用の setter の注入。- パラメーター:
launcher
- 設定するランチャー
setJobRepository
- パラメーター:
jobRepository
- 設定する jobRepository
setJobExplorer
JobExplorer
用の setter の注入。- パラメーター:
jobExplorer
- 設定するJobExplorer
setExitCodeMapper
ExitCodeMapper
用の setter の注入。- パラメーター:
exitCodeMapper
- 設定する exitCodeMapper
presetSystemExiter
SystemExiter
の静的 setter。これにより、依存性注入の前に調整できます。通常、setSystemExiter(SystemExiter)
によってオーバーライドされます。- パラメーター:
systemExiter
- CommandLineJobRunner インスタンスによって使用されるSystemExiter
インスタンス。
getErrorMessage
CommandLineJobRunner
のインスタンスによって設定されたエラーメッセージを終了時に取得します。最後に起動されたジョブが成功した場合は空です。- 戻り値:
- エラーメッセージ
setSystemExiter
SystemExiter
用の setter の注入。- パラメーター:
systemExiter
- CommandLineJobRunner インスタンスによって使用されるSystemExiter
インスタンス。
setJobParametersConverter
JobParametersConverter
用の setter の注入。- パラメーター:
jobParametersConverter
- CommandLineJobRunner インスタンスによって使用されるJobParametersConverter
のインスタンス。
exit
public void exit(int status) 終了処理に委譲して、VM を(おそらく)正常に終了します。- パラメーター:
status
- 報告する int 終了コード。
setJobLocator
実行するジョブを見つけるためのJobLocator
。- パラメーター:
jobLocator
-JobLocator
main
CommandLineJobRunner
を使用してバッチジョブを起動します。ジョブ実行用の新しい Spring コンテキストを作成し、そのようなすべてのコンテキストに共通の親を使用します。このメソッドから例外はスローされず、JvmSystemExiter
の終了ステータスを通じて例外がログに記録され、整数が返されます(Spring コンテキストで定義することでオーバーライドできます)。
パラメーターは key = value の形式で提供でき、挿入されたJobParametersConverter
を使用して変換されます。- パラメーター:
args
-- -restart: (オプション) ジョブが失敗または停止し、ジョブを再開する必要がある場合。指定されている場合、jobIdentifier パラメーターは、ジョブの名前または失敗したジョブ実行の ID として解釈されます。
- -next: (オプション)ジョブに、シーケンス内の次のインスタンスを起動するために使用できる
JobParametersIncrementer
がある場合 - jobPath:
Job
を含む xml アプリケーションコンテキスト - jobIdentifier: ジョブの Bean ID または再起動の場合の失敗した実行の ID。
- jobParameters: 0 からジョブの起動に使用される多くのパラメーター。
オプション(
-restart, -next
)は、コマンドラインのどこでも使用できます。- 例外:
ExceptionSE
- エラーが発生した場合にスローされます。