2017-01-22 11 views
1

в моем java-пакетном задании JBeret Мне нужно передать параметры с одного шага на следующий шаг. До сих пор я только решил это сделать через JobContext.setTransientUserData().Java-Batch: как передавать данные с одного шага на другой шаг?

Мои вопросы: Является ли метод transientUserData лучшим способом или есть лучшие альтернативы? Распространено ли передавать параметры между этапами партии или шаги, которые должны быть самодостаточными в этом отношении?

ответ

2

Да, временные пользовательские данные контекста задания являются стандартным механизмом передачи данных приложения между этапами, как определено спецификацией пакета (JSR 352). Это использование переносится и работает во всех совместимых реализациях.

Этот шаг является автономным по большей части, но шаги также выполняются внутри работы. Таким образом, общий шаг для экспорта или использования данных приложения с другого шага, для координации выполнения задания.

В JBeret вы можете объявить CDI beans как @JobScoped и ввести его туда, где это необходимо для доступа к состоянию общего приложения.

См. Это JBeret test например, использование.

Аналогичное обсуждение StackOverflow: How to put in custom scope/context (JobScoped - custom CDI scope) particular instance from request to make it injectable?

+0

Спасибо большое за ответ! Я так же думал об пакетных шагах и передавал значения через setTransientUserData(). Я забыл аннотацию @JobScoped. Так я это сделаю. Кажется более чистым и более легким, чтобы вводить этот компонент, чем передавать его в качестве transientUserData в JobContext. И спасибо за ссылку на другую дискуссию. Я не нашел этого, когда искал. – uwl