Spring Batch: как использовать заполнители в приемниках прослушивания? - PullRequest
1 голос
/ 08 ноября 2010
<beans>
<batch:job id="job1" restartable="false">
  <batch:step id="step1" next="step2">
    <batch:tasklet>
      <batch:chunk reader="readerA" writer="writerA" commit-interval="1" />
    </batch:tasklet>
  </batch:step>
  <batch:step id="step2">
    <batch:tasklet ref="tasklet1"/>
  </batch:step>
  <batch:listeners>
    <batch:listener ref="listenerA" />
  </batch:listeners>
</batch:job>

<bean id="listenerA" class="com.example.ListenerA" scope="step">
  <property name="archiveDate" value="#{jobParameters['jobRunDate']}" />
</bean>
</beans>

Почему вышеизложенное дает мне следующую ошибку:

java.lang.IllegalStateException: No context available while replacing placeholders.

Как лучше всего обойти эту проблему?

1 Ответ

3 голосов
/ 23 марта 2011

Я считаю, что проблема в том, что вы хотели приемного слушателя, а не рабочего слушателя.Область действия шага выходит за пределы области действия, в которой вы определили свой прослушиватель, поэтому шаг области недоступен - если бы это был прослушиватель задания, вам не понадобились бы заполнители, потому что вы могли бы получить переменные из текущего JobExecution.

Если вы вместо этого изменили свою конфигурацию следующим образом (при условии, что это слушатель шага, а не слушатель задания):

<batch:step id="step1" next="step2">
<batch:tasklet>
  <batch:chunk reader="readerA" writer="writerA" commit-interval="1" />
  <batch:listeners>
      <batch:listener ref="listenerA" />
 </batch:listeners>
</batch:tasklet>
</batch:step>

Я полагаю, что это даст вам правильный слушатель шага для шага "step1"аналогичная конфигурация, если вы хотите, чтобы слушатель для второго шага.

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