0

接続プール オブジェクトを使用して DB2 でクエリを実行しようとすると、深刻な問題に直面しています。私のアプリケーションは WebSphere 7 にデプロイされ、AIX ボックス上にあり、DB2 は別の AIX ボックスを実行しています。問題は断続的です。ファイルを検索すると、server.log以下の例外がキャプチャされました。

java.net.SocketException: There is no process to read data written to a pipe. at 
java.net.SocketOutputStream.socketWrite0(Native Method) at 
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:103) at 
java.net.SocketOutputStream.write(SocketOutputStream.java:147) at 
com.ibm.db2.jcc.t4.fb.b(fb.java:1685) at 
com.ibm.db2.jcc.t4.fb.a(fb.java:1633) at 
com.ibm.db2.jcc.t4.a.D(a.java:416) at 
com.ibm.db2.jcc.t4.a.r(a.java:380) at 
com.ibm.db2.jcc.am.n.a(n.java:219) at
com.ibm.db2.jcc.am.go.b(go.java:4302) at 
com.ibm.db2.jcc.am.go.fc(go.java:741) at 
com.ibm.db2.jcc.am.go.executeQuery(go.java:711)

しかし、接続オブジェクトを作成しようとすると、上記の問題は発生せず、既存の接続プール オブジェクトでのみ問題が発生します。

4

1 に答える 1

0

接続オブジェクトを分析した後、修正されました。基本的に接続プール オブジェクトに問題がある場合があり、接続オブジェクトは閉じられませんが、システム IO が上記の問題を引き起こしている可能性があります。この問題を解決するには、JDBC Api connection.isValid(0) を使用して接続を検証します。値を o として指定すると、実行のタイムアウトが指定されていないことを意味します。基本的に上記のメソッドは、接続パイプラインが期待どおりに機能していることを確認します。true を返す場合は問題ありません。false を返すオブジェクトと同じオブジェクトを使用し、適切なロジックを記述して接続オブジェクトを作成できます。

于 2013-03-12T17:37:43.887 に答える