tomcat 8 中使用JTDS 报 java.lang.AbstractMethodError 异常的解决办法

由于之前使用的 Tomcat版本为6.0.41,版本较低,漏洞太多,安全检测总被扫描出来,所以升级到 Tomcat8.5.29,用的SQLSERVER2008数据库,一连接总报错:

Caused by: java.lang.AbstractMethodError
        at org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:924)
        at org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:282)
        at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:364)
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2355)
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2338)
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2067)
        at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1543)

网上找了半天解决办法都没有找到,最后终于找到如下这篇文章解决了问题,非常感谢博主的分享!

原因就是

后经过网上查找相关资料显示tomcat 7 与tomcat 8 的DBCP (数据库连接池) 使用的规范不一样,tomcat 7及之前的版本用的是DBCP1,而tomcat 8 使用的是DBCP2 规范. 而DBCP2 中将测试数据库连接中的 isValid()接口实现换成了 validationQuery()
因此我们如果想在tomcat 8 中使用JTDS 就必须在 Resource 加上一条 validationQuery
<Resource name="jdbc/clgl" type="javax.sql.DataSource"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
maxIdle="30"
maxWait="5000"
username="sa"
password="sa"
url="jdbc:jtds:sqlserver://localhost:1433/clgl;charset=gbk;SelectMethod=CURSOR"
maxActive="150"

validationQuery="select 1"/>

此外,还需要把tomcat\lib 下的 jtds-1.2.jar 换成 jtds-1.3.jar,否则会报错;

转自: http://mzjwx.blog.163.com/blog/static/7167883320154561547275/


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值