クラス CommandLineJobRunner

java.lang.ObjectSE
org.springframework.batch.core.launch.support.CommandLineJobRunner

public class CommandLineJobRunner extends ObjectSE

コマンドラインからジョブを開始するための基本的なランチャー。一般に、このランチャーは主に、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: (オプション)JobJobParametersIncrementer に従ってシーケンスの次を開始する
  • jobIdentifier: ジョブの名前またはジョブ実行の ID(-stop、-abandon、-restart の場合)。
  • jobParameters: 0 から key=value ペアの形式で指定されたジョブを起動するために使用される多くのパラメーター。

-next オプションを使用する場合、コマンドラインのパラメーター(ある場合)は、インクリメンターから取得したパラメーターに追加され、同じキーを持つパラメーターをオーバーライドします。

結合されたアプリケーションコンテキストには、JobLauncher のインスタンスを 1 つだけ含める必要があります。コマンドラインに渡されるジョブパラメーターは、個々の要素が等号で区切られた 1 つのパラメーターであると想定して、PropertiesSE に変換されます。例: "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
  • フィールドの詳細

    • logger

      protected static final org.apache.commons.logging.Log logger
  • コンストラクターの詳細

    • CommandLineJobRunner

      public CommandLineJobRunner()
  • メソッドの詳細

    • setLauncher

      public void setLauncher(JobLauncher launcher)
      JobLauncher 用の setter の注入。
      パラメーター:
      launcher - 設定するランチャー
    • setJobRepository

      public void setJobRepository(JobRepository jobRepository)
      パラメーター:
      jobRepository - 設定する jobRepository
    • setJobExplorer

      public void setJobExplorer(JobExplorer jobExplorer)
      JobExplorer 用の setter の注入。
      パラメーター:
      jobExplorer - 設定する JobExplorer
    • setExitCodeMapper

      public void setExitCodeMapper(ExitCodeMapper exitCodeMapper)
      ExitCodeMapper 用の setter の注入。
      パラメーター:
      exitCodeMapper - 設定する exitCodeMapper
    • presetSystemExiter

      public static void presetSystemExiter(SystemExiter systemExiter)
      SystemExiter の静的 setter。これにより、依存性注入の前に調整できます。通常、setSystemExiter(SystemExiter) によってオーバーライドされます。
      パラメーター:
      systemExiter - CommandLineJobRunner インスタンスによって使用される SystemExiter インスタンス。
    • getErrorMessage

      public static StringSE getErrorMessage()
      CommandLineJobRunner のインスタンスによって設定されたエラーメッセージを終了時に取得します。最後に起動されたジョブが成功した場合は空です。
      戻り値:
      エラーメッセージ
    • setSystemExiter

      public void setSystemExiter(SystemExiter systemExiter)
      SystemExiter 用の setter の注入。
      パラメーター:
      systemExiter - CommandLineJobRunner インスタンスによって使用される SystemExiter インスタンス。
    • setJobParametersConverter

      public void setJobParametersConverter(JobParametersConverter jobParametersConverter)
      JobParametersConverter 用の setter の注入。
      パラメーター:
      jobParametersConverter - CommandLineJobRunner インスタンスによって使用される JobParametersConverter のインスタンス。
    • exit

      public void exit(int status)
      終了処理に委譲して、VM を(おそらく)正常に終了します。
      パラメーター:
      status - 報告する int 終了コード。
    • setJobLocator

      public void setJobLocator(JobLocator jobLocator)
      実行するジョブを見つけるための JobLocator
      パラメーター:
      jobLocator - JobLocator
    • main

      public static void main(StringSE[] args) throws ExceptionSE
      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 - エラーが発生した場合にスローされます。