Является ли Java Batch (JSR 352) частью SE JDK? (BatchRuntime возвращает NULL для Joboperator)

Я написал пакетное приложение Java, используя реализацию JSR352 из JavaSE. У меня есть читатель, процессор и писатель.

Поскольку я запускаю это Java-приложение с консоли в среде JavaSE, я использую следующий код в моем методе main(String[] args) для запуска задания.

final JobOperator jobOperator = BatchRuntime.getJobOperator();
jobOperator.start("Job.xml", null);

но getJobOperator () возвращает NULL и получает следующее сообщение об ошибке

ПРЕДУПРЕЖДЕНИЕ: javax.batch.runtime.BatchRuntime ServiceLoader не смог найти реализацию для JobOperator. Проверьте путь к классам для файла META-INF / services / javax.batch.operations.JobOperator.

Стоит ли писать какую-либо реализацию интерфейса JobOperator?


person yathirigan    schedule 15.09.2017    source источник


Ответы (1)


javax.batch.* API, хотя и являются частью платформы EE 7, были разработаны для использования в SE (они по сути не требуют полной платформы EE). Однако они не обозначены как часть платформы SE, поэтому они не будут частью JDK. Вам нужно будет использовать реализацию Java Batch, такую ​​как SpringBatch или Эталонная реализация.

person Scott Kurz    schedule 15.09.2017
comment
это пакетное задание Java будет, наконец, развернуто в Websphere, но во время разработки и в определенных условиях я хотел иметь возможность работать как консольное приложение Java, а не развертывать его в контейнере JEE и запускать его через интерфейсы REST. - person yathirigan; 15.09.2017
comment
›Вам нужно будет использовать реализацию Java Batch‹ извините, я не совсем понял. Означает ли это, что помимо API-интерфейсов javax.batch мне нужно использовать SpringBatch или импортировать банки из эталонного проекта реализации (в котором будет реализация JobOperator)? - person yathirigan; 15.09.2017
comment
у меня уже есть javaee-api-7.0.jar в моем пути к классам проекта. Я думал, этого должно быть достаточно. - person yathirigan; 15.09.2017
comment
Если вы планируете нацеливаться на WebSphere Liberty, я бы посмотрел, как выполнить задание на минимальном сервере Liberty. Вы можете сделать что-то вроде автоматического запуска задания при запуске сервера через загрузочный компонент. Liberty может запуститься через несколько секунд, поэтому сервер не добавляет много накладных расходов. Еще один приятный вариант - инструментарий WebSphere Development Tools Batch (на основе Eclipse). Тем не менее, у каждого подхода есть свои плюсы и минусы. Будем рады обсудить больше, если вам интересно, но я думаю, что мы должны оставить этот вопрос и использовать новый, другой вопрос. - person Scott Kurz; 15.09.2017
comment
Liberty Server будет нашим производственным сервером. Я искал более простой способ запустить программу во время разработки из-за ограничений стоимости / лицензии, позволяющих сделать Liberty доступной для всей команды. - person yathirigan; 15.09.2017
comment
как было предложено, я инициировал другой вопрос, чтобы конкретизировать тему возможности запуска java-пакета в среде SE stackoverflow.com/questions/46239289/ - person yathirigan; 15.09.2017
comment
Позвольте мне завершить это, отметив, что на момент написания этой статьи (сентябрь 2017 г.) Liberty бесплатна для разработки. См. developer.ibm.com/wasdev/docs/. - person Scott Kurz; 15.09.2017