В пакете JSR352 я выполняю разделенный шаг для создания нескольких объектов JSON.Каждый поток читает некоторые данные из оракула и пишет как объект JSON.В некоторых случаях, resultSet.next () получает тайм-аут и выдает исключение и собирается закрыть метод () класса ItemReader и ItemWriter для очистки любых ресурсов.что прекрасноОднако у меня есть несколько дао-вызовов метода close () писателя.который должен быть выполнен, когда автор завершен.Но когда есть исключение ItemReader, я не уверен, как получить подробности об исключении для метода close ().Если исключение произошло в ItemReader, метод close () не должен выполнять вызов DAO.В любом случае можно определить исключение ItemReader в классе ItemWriter.
@Override
public Object readItem() throws Exception {
Map<String, Object> resultMap = new HashMap<>();
if (firstObject && null != resultSet && resultSet.isBeforeFirst()) {
firstObject = false;
return columnMetaDataMap;
}
else if (null != resultSet && resultSet.next()) {
recordNumber++;
for (int i = 1; i <= rsMetaData.getColumnCount(); i++) {
resultMap.put("C" + i, resultSet.getObject(i));
}
return resultMap;
}
return null;
Класс ItemWriter close ():
@Override
public void close() throws Exception {
gsonWriter.endArray();
gsonWriter.flush();
gsonWriter.close();
subjectAreaCode = categoryCode+"/"+subCategoryCode+"/";
logger.info("***Exception catch from writer for the file:"+outFile+"\n"+stepcontext.getException());
if (file.length() == 2) {
file.delete();
gahRptExecStatUpdDAO.updateBatchRptStatus(outFile, GAHRptStatusConstants.NO_ROWS_TO_PROC);
}