2016-04-27 10 views
0

Springバッチが成功したかどうか、または終了ステータスが表示されていれば、呼び出し元を知りたいです。System.exit(1)from Spring batch

SpringApplication app = new SpringApplication(Foo.class); 
app.setWebEnvironment(false); 
ConfigurableApplicationContext ctx= app.run(args); 
SimpleJobLauncher jobLauncher = ctx.getBean(SimpleJobLauncher.class); 
Job job = ctx.getBean("Foo", Job.class); 
JobParameters jobParameters = new JobParametersBuilder().toJobParameters(); 
try { 
     //test 
     JobExecution jobExec = jobLauncher.run(job, jobParameters); 
     if(ExitStatus.FAILED.equals(jobExec.getExitStatus())){ 
      System.exit(1); 
}catch(JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException 
       | JobParametersInvalidException e) { 
      logger.error("Exception in Foo"+e,e); 
      System.exit(-1); 
     } 

しかし、プログラムは呼び出し元に値を戻していません。私はUnixスクリプトからプログラムを起動しています.UNIXプロセスは実行中です。

+0

jobLauncher.run(ジョブ、jobParameters)。すぐに呼び出し元に戻ってジョブがまだ実行されているので、完了した実行を待つ必要があります –

+0

ええ、ジョブが完了するのを待つ方法でコード化されています。しかし、ここでの問題はSystem.exit(1)です。コントローラーを呼び出し元に戻していません。このプロセスはUnixで稼働し続けます。 – Deepak

+0

あなたはそれをデバッグしましたか?条件が満たされず(exitStatus = FAILED)、System.exit(-1)が機能しない場合は、少なくとも他のステータス条件に反応するelseブランチが必要です。 –

答えて

0

コマンドラインからジョブを起動するカスタムコードではなく、CommandLineJobRunnerでジョブを起動します。それはSystem.exit()あなたのために処理されます。あなたは彼らがどのように表示する場合は

GrepCode linkそれ

関連する問題