我遇到了一个奇怪的生产问题。环境如下:
任何帮助都将不胜感激。
敬礼。
- JBOSS 4.0.2
- SQL Server 2005
- Driver JTDS 1.2.5
不时会出现以下情况:
某个SQL命令执行失败,错误信息为:
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>
任何帮助都将不胜感激。
敬礼。