JTDS和JBOSS JDBC连接池问题,有什么解决方案吗?也许自定义ValidConnectionChecker?

huo*_*o73 4 jboss jtds jdbc

我面临一个奇怪的生产问题.环境如下:

  • JBOSS 4.0.2
  • SQL Server 2005
  • 驱动程序JTDS 1.2.5

以下的szenario会不时发生.

SQL命令无法执行

 java.sql.SQLException: I/O Error: Read timed out 
Run Code Online (Sandbox Code Playgroud)

(我可以忍受,如果它只是每天发生两次左右)

但是从那一刻起,连接似乎被浪费了,没有游泳池认出它,正如我不断收到的那样

java.sql.SQLException: Invalid state, the Connection object is closed.
Run Code Online (Sandbox Code Playgroud)

从那一刻开始.唯一有帮助的是重启JBOSS.尽管我有这个事实,但仍然会发生这种情况

 <check-valid-connection-sql>select getdate()</check-valid-connection-sql>
Run Code Online (Sandbox Code Playgroud)

在我的数据源定义中设置.

我想知道我是否可以使用自定义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>
Run Code Online (Sandbox Code Playgroud)

任何帮助appriciated.

问候

小智 7

尝试将驱动程序类行更改为net.sourceforge.jtds.jdbcx.JtdsDataSource.net.sourceforge.jtds.jdbc.Driver未实现javax.sql.ConnectionPoolDataSource接口.来源:http: //jtds.sourceforge.net/faq.html#features

  • 这可能吗?您真的可以使用DataSource代替JBoss中的Driver吗? (3认同)