Възстановяване на клиент за заявка на JDBC

Изпълнявам комбинацията от 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 пул, който има колектор за принудителни връзки, базиран на изчакване, не ми харесва много, но ще трябва да го използвам, освен ако не намеря по-добър вариант.

И така, въпроси Някой знае ли този проблем и основните подробности? Какъв според вас е най-добрият начин да се справите?

Благодаря


person bobah    schedule 19.11.2012    source източник
comment
можете ли да публикувате заявката, която виси. BoneCP е по-доброто решение според мен   -  person Shamis Shukoor    schedule 19.11.2012
comment
@sheldonCooper - заявката е съхранено извикване на процедура, грешка в някакъв вложен код от страната на DB е причината за прекъсването, нямам SQL под ръка. Защо BoneCP е по-добър?   -  person bobah    schedule 19.11.2012
comment
С BoneCP можете да имате дялове, което според мен не е възможно с други и http://jolbox.com/index.html?page=http://jolbox.com/benchmarks.html   -  person Shamis Shukoor    schedule 20.11.2012


Отговори (1)


Ако имате директен достъп до java.sql.Statement, опитайте да зададете времето за изчакване.

statement.setQueryTimeout(int seconds);
person WeMakeSoftware    schedule 19.11.2012
comment
различно ли е от предаването на queryTimeout=xxx; на шофьора? Опитах това първото нещо и не помогна - person bobah; 19.11.2012
comment
Предполагам, че това е същото - person WeMakeSoftware; 19.11.2012