私は奇妙な生産上の問題に直面しています。環境は次のとおりです。
- JBOSS4.0.2
- SQL Server 2005
- ドライバー JTDS 1.2.5
時々、次のシナリオが発生します。
SQL コマンドの実行に失敗する
java.sql.SQLException: I/O Error: Read timed out
(1日2回くらいなら我慢できる)
しかし、その瞬間から、プールがそれを認識せずに接続が無駄になっているように見えます。
java.sql.SQLException: Invalid state, the Connection object is closed.
その瞬間から。JBOSS を再起動するだけで解決します。これは、私が持っているという事実にもかかわらず発生します
<check-valid-connection-sql>select getdate()</check-valid-connection-sql>
私のデータソース定義で設定します。
接続自体を再構築するか、例外を明示的にスローしてこれを修正するカスタム ValidConnectionChecker を使用できるかどうか疑問に思っていました。多分誰かが他の提案を持っています。
これが私の完全な DS 定義です。
<local-tx-datasource>
<jndi-name>MyDS</jndi-name>
<connection-url>jdbc:jtds:sqlserver://192.168.35.235:1433/MyDb;user=user1;password=pwd;appName=MyApp;loginTimeout=15;socketTimeout=120</connection-url>
<driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
<user-name>user1</user-name>
<password>pwd</password>
<min-pool-size>10</min-pool-size>
<max-pool-size>25</max-pool-size>
<blocking-timeout-millis>60000</blocking-timeout-millis>
<idle-timeout-minutes>1</idle-timeout-minutes>
<check-valid-connection-sql>select getdate()</check-valid-connection-sql>
</local-tx-datasource>
任意の助けが必要です。
よろしく