从Batchlet内部获取jobId

时间:2017-10-26 08:53:48

标签: java java-ee jsr352

我需要从执行batchlet的内部获取jobId。我已经能够从我正在使用Batchlet的类中获取jobId,但不能从Batchlet内部获取。

long jobId = job.start("BatchletName", parm);

这句话启动Batchlet“BatchletName”。现在,我需要从de class BatchletName.java中获取jobId值:

@Dependent
@Named("BatchletName")
@TransactionManagement(TransactionManagementType.BEAN)
public class BatchletName extends AbstractBatchlet {
    public String process() throws Exception {
        // I need jobId here
        return "";
    }    
}

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以将javax.batch.runtime.context.JobContext注入您的小程序类,然后调用JobContext.getJobName()以获取作业ID。

import javax.batch.runtime.context.JobContext;
import javax.inject.Inject;
import javax.inject.Named;

@Dependent
@Named("BatchletName")
public class BatchletName extends AbstractBatchlet {
    @Inject
    JobContext jobContext;

    public String process() throws Exception {
        // I need jobId here

        String jobId = jobContext.getJobName();
        return "";
    }  
}