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