Questa è la configurazione del passo. Il mio metodo skip listeners onSkipInWrite() viene chiamato correttamente. Ma onSkipInRead() non viene chiamato. Ho trovato questo gettando deliberatamente un'eccezione di puntatore nullo dal mio lettore.Spring Batch SkipListener non chiamato quando si verifica un'eccezione nel lettore
<step id="callService" next="writeUsersAndResources">
<tasklet allow-start-if-complete="true">
<chunk reader="Reader" writer="Writer"
commit-interval="10" skip-limit="10">
<skippable-exception-classes>
<include class="java.lang.Exception" />
</skippable-exception-classes>
</chunk>
<listeners>
<listener ref="skipListener" />
</listeners>
</tasklet>
</step>
Ho letto alcuni forum e scambiati gli ascoltatori-tag a entrambi i livelli: All'interno del pezzo, e al di fuori del tasklet. Nulla funziona ...
aggiungendo il mio salto Listener qui
package com.legal.batch.core;
import org.apache.commons.lang.StringEscapeUtils;
import org.springframework.batch.core.SkipListener;
import org.springframework.jdbc.core.JdbcTemplate;
public class SkipListener implements SkipListener<Object, Object> {
@Override
public void onSkipInProcess(Object arg0, Throwable arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSkipInRead(Throwable arg0) {
}
@Override
public void onSkipInWrite(Object arg0, Throwable arg1) {
}
}
Gli esperti suggeriscono prega
può voi anche posta la configurazione e l'implementazione del bean "skipListener"? Stai implementando l'interfaccia 'SkipListener'? Stai usando l'annotazione '@ OnSkipInRead'? ecc. –
tolitius
Aggiunto il listener skip qui – Shiv