由于之前使用的 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/
原文链接:https://blog.csdn.net/xuanjiewu/article/details/79878041
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
复制或转载请以超链接形式注明转自起风了,原文地址《tomcat 8 中使用JTDS 报 java.lang.AbstractMethodError 异常的解决办法》
还没有人抢沙发呢~