2017-09-18 4 views
0

ItemProccesで例外が発生し、ExceptionをJobExecutionコンテキストに格納し、JobExecutionの最後にExceptionalレコードのメールを送信する必要がありますが、JobExecutionオブジェクトを取得する必要がありますprocessListner? processListnerで@beforestepを使用しようとしましたが、JobExecutionオブジェクトがnullでした。処理中のJobExecutionコンテキストを取得する方法がありますか?ListerSpring Batch Process ListnerでJobExecutionオブジェクトを取得する方法

答えて

0

上記の問題の春バッチで解決策を得ました。プロセスリスナーとジョブ実行コンテキストlistnerクラスのコードは以下のとおりです。

@Bean 
    @JobScope 
    public CaliberatedProcessorListener calibratedProcessorListener() { 

     return new CaliberatedProcessorListener(); 
    } 
public class CaliberatedProcessorListener <T, S> implements ItemProcessListener<T, S> { 

    @Value("#{jobExecution}") 
    public JobExecution jobExecution; 

    @Override 
    public void beforeProcess(T calibratedProessorInPut) { 

     // // do nothing 
    } 

    @Override 
    public void afterProcess(T calibratedProessorInput, S calibratedProessorOutPut) { 

     // do nothing 
    } 

    @Override 
    public void onProcessError(T item, Exception calibratedProcessorEx) { 

     FtpEmailData ftpEmailData = (FtpEmailData) jobExecution.getExecutionContext().get("calDeviceBatchInfo"); 
     ftpEmailData.getExceptionList().add(new CalibratedDeviceException(calibratedProcessorEx.getMessage())); 
    } 

} 
関連する問題