2014-07-11 1 views
0

봄 배치의 여러 csv 파일을 읽기 위해 파티션을 사용하고 있습니다.일괄 처리 건너 뛰기 제한 초과했지만 리소스를 해제하지 않습니다.

나는 skip-limit = 2를 넣었고 csv는 예외가있는 레코드를 2 개 이상 포함합니다. 또한 FlatFileParseException 예외가 skip-limit < = 2가 될 때까지 코드가 레코드를 건너 뜁니다. 이제 3 번을 기록하여 FlatFileParseException을 던지고 skip-limit가 초과되어 SkiplimitException을 발생시킵니다.

그러나 나는 건너 뛰기 제한을 초과 한 다음 같은 파일을 다른 폴더로 이동하려고 시도하지만 IOException을 발생시키지 않고 일부 작업을 수행하고 있습니다. 나는 그것에 약간의 R & D를 시험해 보았고, csv 파일 자원이 여전히 열려 있음을 발견했다.

그래서 어떻게 이런 종류의 시나리오를 처리 할 수 ​​있습니까? 최대한 많이 도와주세요 ... :

답변

0

이 오류는 리소스가 모두 단계의 마지막 단계 (끝나기 쉬운 단어 포함)와 "잠긴"전에 해제되므로 발생합니다. 삭제할 경우
/를 csv로 이동 당신은 당신이 이동/실패 자원을 복사 두 번째 단계에서 그렇게해야한다,. 이전 단계에서 단지 리소스를 삭제해야하는 당신을 기억하는 플래그를 설정

쉬운을 테스트 (하지만 성공적인 시도가 될 것이라고 확신하지 못합니다)라고 대답하면 FlatFileItemReader.close()으로 전화를 걸 수 있지만 일반적인 SB 리소스 수명주기를 방해 할 수 있습니다.

+0

안녕 루카 귀하의 의견을 주셔서 감사하지만 우리는 이런 식으로 해결할 수 있습니다. 파일을 여는 대신 모든 바이트를 byte []로 가져 가야합니다. abd는 byte [] 배열에서 모든 바이트를 읽으므로 물리적으로 파일을 열지 않습니다. – saurabhygk