Пакетный перезапуск Java не обрабатывает шаги

При перезапуске задания НЕ выполняется пакет, т.е. process() Метод пакетирования не называется.

Есть ли у кого-нибудь подсказки, почему перезапуск не выполняет ни одного из пакетов. Я перепробовал почти все комбинации, но без изменений, чтобы перезагрузка работала нормально.

Перезапуск работает как таковой () не приводит к ошибке - НО успешно завершается без вызова каких-либо пакетов process() методы.

Я использую wildfly 13.0.0.Final с jBeret.

У меня есть простое пакетное задание Java с этим определением jox.xml. Вызываемые пакеты в настоящее время не делают ничего, кроме как возвращают статус.

<job id="job" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0" restartable="true">
    <flow id="processing">
        <step id="download" next="process">
            <batchlet ref="download"/>
        </step>
        <step id="process" next="notify">
            <batchlet ref="process"/>
            <stop on="STOPPED" restart="notify" />
        </step>
        <step id="notify">
            <batchlet ref="noify"/>
            <end on="COMPLETED"/>
        </step>
    </flow>
</job>

Возвращаемые значения bachlets:

  • скачать... ЗАВЕРШЕНО
  • процесс... ОСТАНОВЛЕН
  • уведомить... ЗАВЕРШЕНО

При запуске этой работы с jobOperator.start() все работает как положено.

При повторном запуске STOPPED выполнения задания с jobOperator.restart() задания выполняются, но пакет не вызывается.

Пакеты выглядят так

@Named
public class Notify extends AbstractBatchlet {
    @Override
    public String process() throws Exception {
        return BatchStatus.COMPLETED.toString();
    }
    @Override
    public void stop() throws Exception {
    }
}

1 ответ

Решение

Атрибут restart имеет значение notify, которое является именем шага в потоке. Возможно, во время перезапуска JBeret искал шаг верхнего уровня с именем notify, который явно не существует.

Другие вопросы по тегам