2011-10-18 20 views
1

JVMがCommandLineJobRunnerを実行するように指示することにより、バッチジョブをコマンドラインから開始することができます。 the JavaDocによれば、-stopの追加パラメータを指定して同じコマンドを実行すると、ジョブを停止します:コマンドラインから開始されたSpringBatchジョブの停止

このクラスの引数により分離((スペースで区切られた)コマンドライン 上、または標準入力を介して提供することができます改行)。

jobPath jobIdentifier(jobParameters)を が

  • jobPath次のようにコマンドラインオプションがある*:仕事
  • -restartを含むXMLアプリケーションコンテキストを次のように彼ら である(別売)を再起動します最後に失敗した実行
  • -stop:(オプション)実行中の実行を停止するには
  • -abandon:(オプション)放棄する停止した実行
  • -next:(オプション)ジョブのjobParametersIncrementerに従って次のシーケンスを開始する。指定子:ジョブの名前またはジョブ実行のID(-stop、-abandonまたは-restartの場合) 。
  • jobParameters:key = valueのペアの形式で指定されたジョブを起動するために使用される0から多くのパラメータ。

ただし、main()メソッドのJavaDocでは、-stopパラメータは指定されていません。 docjar.comのコードを見ると、-stopパラメータの使用は期待できません。

コマンドラインから起動されたバッチは、実行中のバッチが非トランジェントのjobRepositoryによってバックアップされている場合にのみ停止すると思われますか?コマンドラインでバッチを実行してHSQL(つまりメモリ内)にデータを格納するだけの場合は、CTRL-Cなど以外のジョブを停止する方法はありませんか?

答えて

1

停止コマンドが実装され、source for CommandLineJobRunnerを参照してください、ライン300+

 if (opts.contains("-stop")) { 
      List<JobExecution> jobExecutions = getRunningJobExecutions(jobIdentifier); 
      if (jobExecutions == null) { 
       throw new JobExecutionNotRunningException("No running execution found for job=" + jobIdentifier); 
      } 
      for (JobExecution jobExecution : jobExecutions) { 
       jobExecution.setStatus(BatchStatus.STOPPING); 
       jobRepository.update(jobExecution); 
      } 
      return exitCodeMapper.intValue(ExitStatus.COMPLETED.getExitCode()); 
     } 
1

stopスイッチが動作しますが、現在実行中のステップが完了した後にのみジョブを停止します。それはすぐに仕事を殺すことはありません。