我正在运行Microsoft JDBC驱动程序和DBCP的组合,并查看一个查询:
...
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 :(得分:0)
如果您可以直接访问java.sql.Statement,请尝试设置超时。
statement.setQueryTimeout(int seconds);