0

Microsoft JDBC ドライバーと DBCP の組み合わせを実行していますが、1 つのクエリがハングアップしています。

    ...
    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 プールに変更しました。あまり好きではありませんが、より良いオプションが見つからない限り、それを使用する必要があります。

それで、質問 誰かがこの問題と根底にある詳細を知っていますか? それを処理する最善の方法は何だと思いますか?

ありがとう

4

1 に答える 1

0

java.sql.Statement に直接アクセスできる場合は、タイムアウトを設定してみてください。

statement.setQueryTimeout(int seconds);
于 2012-11-19T15:09:57.787 に答える