首页 > 解决方案 > 在 Java Batch 中从阅读器获取属性

问题描述

我有一个在 WildFly 上运行的 Java Batch (JSR-352) 应用程序。该应用程序正在公开一个 rest-api 以触发作业执行。我想将一些来自 HTTP REST 请求的值提供给 Reader 类。实现这一点的最佳方法是什么?

作业开始的 REST API:

@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response handleFileReady(MyNotification notification) {
   final Properties jobParams = new Properties();
   jobParams.setProperty("filename", notification.getFileName());

   BatchRuntime.getJobOperator().start("filetransfer", jobParams);
   return Response.status(Response.Status.NO_CONTENT).build();
}

我想从中读取值的读者:

public class MyJobReader extends AbstractItemReader {

    @Override
    public Integer readItem() throws Exception {
       // Get Values here
       ...

另外,目前我通过读取通知对象在属性中设置字符串值,是否有更好的方法来提供整个对象?

标签: javawildflyjava-batch

解决方案


通过注入 JobContext 我现在可以获得执行 ID:

public class MyJobReader extends AbstractItemReader {

    @Inject
    private JobContext jobContext;

    @Override
    public Integer readItem() throws Exception {

        Properties pros = BatchRuntime.getJobOperator().getParameters(jobContext.getExecutionId());


推荐阅读