2012-11-19 43 views
0

我正在運行Microsoft 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更好的解決方案 - 查詢是一個存儲過程調用,在數據庫方面的一些嵌套的代碼中的錯誤被掛斷的原因,我沒有在手中的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 = XXX;」給司機?我想,第一件事就是它並沒有幫助 – bobah

+0

我想這是同樣的事情 – WeMakeSoftware