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

标签 java batch-processing jobs

如何检测正在调用 afterJob 监听器的已完成作业的作业 ID? 我的工作正在批处理中开始,并且我有监听器。

我的作业名为 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>

以及带有监听器的类

@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");
    };
}

最佳答案

您可以注入(inject) 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();
    };
}

关于Java批处理作业监听器afterJob获取作业的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38397751/

相关文章:

java - Swing GridBagLayout 无法分配(删除)空白空间

java - 如何用日期实现空对象模式?

linux - bash 启动额外的、虚假的后台进程

java - 如何在OpenCV Java中将二进制图像转换为灰度

java - java中不同版本的标识符?

batch-processing - ETL批处理

bash:分块处理文件列表

java - 用 Java 处理数百万条数据库记录

php - wp 作业管理器自定义过滤器

java - 云中的 Firebase JobScheduling |如何使用服务器 SDK 进行作业调度