简体   繁体   English

Java批处理作业监听器afterJob获取作业的id

[英]Java batch processing job listener afterJob get id of a job

How can detect a job id of finished job that is calling afterJob listener? 如何检测调用afterJob监听器的已完成作业的作业ID? I have job that is starting in batch processing and i have listener. 我的工作是从批处理开始,我有听众。

My job is called PayrollJob and the listener is PayrollJobListener 我的工作叫做PayrollJob,监听器是PayrollJobListener

<job id="payroll" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
    <listeners>
        <listener ref="payrollJobListener"/>
    </listeners>
    <step id="process">
        <listeners>
            <listener ref="payrollItemWriteListener"/>
            <listener ref="payrollSkipProcessorListener"/>
            <listener ref="payrollSkipReadListener"/>
            <listener ref="payrollSkipWriteListener"/>
            <listener ref="payrollChunkListener"/>

        </listeners>
        <chunk item-count="5">
            <reader ref="PayrollItemReader"></reader> 
            <processor ref="PayrollItemProcessor"></processor>
            <writer ref="PayrollItemWriter"></writer> 



        </chunk>
    </step>
</job>

and class with listener 和听众一起上课

@Named()
public class PayrollJobListener extends AbstractJobListener {

    @Override()
    public void beforeJob(){};

    @Override()
    public void afterJob(){
        System.out.println("i need a id of a job calling this method");
    };
}

You can inject a JobContext. 您可以注入JobContext。

@Named()
public class PayrollJobListener extends AbstractJobListener {

    @Inject
    private JobContext jobContext;

    @Override()
    public void beforeJob(){};

    @Override()
    public void afterJob(){
        long id = this.jobContext.getExecutionId();
        String name = this.jobContext.getJobName();
    };
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM