Я столкнулся со странной производственной проблемой.Среда выглядит следующим образом:
- JBOSS 4.0.2
- SQL Server 2005
- Драйвер JTDS 1.2.5
Время от времени довремя выполнения следующего сценария.
Команде SQL не удается выполнить команду Excute с
java.sql.SQLException: I/O Error: Read timed out
(я могу с этим смириться, если это произойдет два раза в день или около того)
Но с этого момента соединение, похоже, теряется, и пул его не распознал, так как с этого момента я постоянно получаю
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>
Любая помощь оценена.
С уважением