Spring JDBC DAO에서 많은 양의 데이터를 처리 중이다. DAO는 BlockingQueue (take()을 사용하여 바운드 된 객체에서 반복 연산자를 반환합니다. 검색 작업은 별도의 스레드 (ExecutorService 사용)에서 일어나고 있습니다.Spring에서 동시에 JDBC ResultSet에 액세스하기
이 스레드 내부에서 다음과 같은 동작이 나타납니다. 검색은 작동하지만 ResultSet에 대한 특정 호출로 인해 호출이 중단됩니다. 이러한 호출은
- isClosed() 및
- isLast()
하지만
- isAfterLast() 또는
- isBeforeFirst (이다) 또는
- isFirst() 메서드)
은 분명히 나는 마지막 요소가 반복자 hasNext (거짓 산출 차단 큐에 특별한 요소를 삽입하기 위해 (무엇인지 알 필요) . 나는 ResultSet BlockingQueue에 객체를 넣기 전에 행 번호를 찾아 냄으로써이 문제를 해결할 수 있습니다. ResultSets로 작업하기위한 스레드 안전 방법이 있습니까?
멀티 스레드 데이터 소스로 전환 (필자는 C3PO ComboPooledDataSource을 테스트했습니다.) 도움이되지 않습니다.
참고 :이 문제가 처음으로 (잘못) 나에 의해 확인되었다 here
흠, 애매한 ..... – skaffman