Получить свойства от читателя в Java Batch - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть приложение Java Batch (JSR-352), работающее на WildFly.Приложение предоставляет 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
       ...

Кроме того, в данный момент я устанавливаю значения String в свойствах, читая объект уведомления, есть ли лучший способ предоставить весь объект?

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Вы можете передать их в виде строк запроса в вашем http-запросе, а класс ресурсов REST затем передать их в качестве параметров пакетного задания.В ваших XML-файлах заданий вы передаете параметры задания вашему читателю как пакетные свойства читателя.Затем ваш читательский класс вводит эти свойства пакета как поля класса.

Вот как это делается в jberet-rest.

1 голос
/ 15 апреля 2019

Внедрив JobContext, я теперь могу получить идентификатор выполнения:

public class MyJobReader extends AbstractItemReader {

    @Inject
    private JobContext jobContext;

    @Override
    public Integer readItem() throws Exception {

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...