MattCが指摘したように、ItemProcessor
が盗まれたときにこのエラーが発生しました。何らかの理由で、私のプロセッサの活動中に、私の例外だったので、それは、jobrepository
とのデータソース接続を閉じました。
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
スタックトレースの終わりに、私は見つけることができた:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Connection is closed.
問題を特定するために、まず相を分離します。私はNoOpProcessorとNoOpItemWriterを構築しました。タスクレットを調整し、うまくいきました。だから私の問題は読者のものではなかった。
次に、「完全な」ItemWriter実装にロールバックして、うまくいきました。だから私の問題は作家にはなかった。 "フル"プロセッサを有効にすると、エラーが再び発生しました。だから、エラーがあって、デバッグを開始しました。
ので、残念ながら、私の答えは次のとおりです。デバッグ...
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.");
}
}
}
こんにちは、この上の任意の更新? – user2583922
解決しましたか? – surlac
これはあなたの問題を解決するかもしれないhttp://ashamathavan.blogspot.in/2010/12/optimisticlockingfailureexception.html –