Wie von MattC hingewiesen, hatte ich diesen Fehler, wenn mein ItemProcessor
wurde abgehört. Aus irgendeinem Grund während meiner Prozessor Aktivitäten, wurde die Datenquelle Verbindung mit jobrepository
zu schließen, so meine Ausnahme war:
Encountered an error saving batch meta data for step step1 in job myjob. This job is now in an unknown state and should not be restarted.
org.springframework.dao.OptimisticLockingFailureException: Attempt to update step execution id=1 with wrong version (1), where current version is 2
Am Ende des Stacktrace konnte ich finden:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Connection is closed.
Um das Problem zu identifizieren, isoliere ich zuerst die Phase. Ich habe einen NoOpProcessor und einen NoOpItemWriter konstruiert. Das Tasklet wurde angepasst und es funktionierte gut. Also war mein Problem nicht der Leser.
Dann rollte ich zu meiner "vollständigen" ItemWriter-Implementierung zurück, und es funktionierte wieder gut. Also mein Problem war nicht mit dem Schriftsteller zu tun. Als ich meinen "vollen" Prozessor aktiviert habe, ist der Fehler erneut aufgetreten. Also war der Fehler drin und ich begann mit dem Debuggen.
Also leider ist meine Antwort: debug ...
public class NoOpProcessor implements ItemProcessor<Object, Object> {
@Override
public Object process(Object arg0) throws Exception {
System.out.println("Input object: " + Objects.toString(arg0));
return arg0;
}
}
public class NoOpItemWriter implements ItemWriter<Object> {
@Override
public void write(List<? extends Object> items) throws Exception {
if (items != null) {
System.out.println("Qtty of items to be written: " + items.size());
for (Object obj : items) {
System.out.println(Objects.toString(obj));
}
} else {
System.out.println("The items list is null. Nothing to be written.");
}
}
}
Hallo jeder Aktualisierung auf das? – user2583922
Haben Sie das gelöst? – surlac
Dies könnte Ihr Problem lösen http://ashamathavan.blogspot.in/2010/12/optimisticlockingfailureexception.html –