2012-11-19 5 views
0

나는 마이크로 소프트 JDBC 드라이버와 DBCP의 조합을 실행 한 쿼리에 걸려 볼 수 있어요 : 보인다 (도움이되지 않는 비 제로 쿼리 시간 제한과 드라이버를 구성JDBC 쿼리 클라이언트 복구를 걸어

... 
    at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1654) ~[sqljdbc4-3.0.jar:na] 
    at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3694) ~[sqljdbc4-3.0.jar:na] 
    at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:5022) ~[sqljdbc4-3.0.jar:na] 
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:388) ~[sqljdbc4-3.0.jar:na] 
    ... 

이 중단 때 소켓에서 읽는 동안 다른 유형의 시간 초과입니다).

응용 프로그램의 소켓 읽기 제한 시간을 변경하고 싶지 않습니다.

시간 제한 기반 강제 연결 수집기가있는 C3P0 풀로 변경되었으므로 너무 좋아하지 않지만 더 나은 옵션을 찾지 않으면 사용해야합니다.

그럼 질문이 있으십니까? 누구든지이 문제와 기본 세부 정보를 알고 있습니까? 처리하는 가장 좋은 방법은 무엇이라고 생각하십니까?

감사

+0

중단 쿼리를 게시 할 수 있습니다. BoneCP 내 의견에 더 나은 솔루션이다. –

+0

@sheldonCooper - 쿼리는 저장된 proc 호출이고, DB 측의 일부 중첩 코드의 버그가 전화 끊기의 이유이며, 나는 SQL을 가지고 있지 않다. BoneCP가 더 좋은 이유는 무엇입니까? – bobah

+0

BoneCP를 사용하면 다른 사람들과 공유 할 수없는 파티션을 가질 수 있습니다. http://jolbox.com/index.html?page=http://jolbox.com/benchmarks.html –

답변

0

직접 java.sql.Statement의에 액세스 할 수있는 경우, 타임 아웃을 설정해보십시오.

statement.setQueryTimeout(int seconds); 
+0

은 "queryTimeout = 트리플 엑스;" 운전자에게? 나는 그 일을 처음 시도했지만 도움이되지 않았다. – bobah

+0

그게 같은 것 같아. – WeMakeSoftware