使用DBCP时发生AbstractMethodError异常

错误描述:

Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
at org.apache.commons.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:914)
at org.apache.commons.dbcp2.PoolableConnection.validate(PoolableConnection.java:283)
at org.apache.commons.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:357)
at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2304)
at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2287)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2038)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533)
at DBCP.main(DBCP.java:23)

解决方案:
     mysql-connector 版本为 5.0.4 ,那么对应的 dbcp 和 pool 版本应该为 1.4 和 1.6 。
    5.0.4 不应该使用 2.0 及以上版本的 dbcp 和 pool。因为 在 dbcp 中 org.apache.commons.dbcp2.DelegatingConnection 有如下代码:
try {
     return _conn.isValid(timeout);
}
catch (SQLException e) {
    handleException(e);
    return false;
}

上述代码中 isVaild 在 com.mysql.jdbc.Connection (5.0.4 ) 中并未实现上述方法,因此将会抛出抽象方法错误。
    如果需要使用 dbcp 2.0 ,那么 mysql-connector 必须使用 5.1.3 版本。

时间: 2024-12-29 01:57:43

使用DBCP时发生AbstractMethodError异常的相关文章

SQL2008、SQL2013 执行Transact-SQL 语句或者批处理时发生了异常。错误5120

附加数据库的时候遇到问题,问题描述如下: 附加数据库 对于 服务器"服务器名"失败.(Microsoft.SqlServer.Smo) 执行Transact-SQL 语句或者批处理时发生了异常.错误5120 原因权限不够.以管理员身份运行dbms.或者找到数据文件,右键--属性---安全--给用户组添加点权限.

创建数据库失败((Microsoft.SqlServer.Smo)) 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo

机房收费系统完成了,但是我是在笔记本上敲得,没有实现异地发布,结局只能是被PASS掉了~回来重新导出自己的数据库到台式机上,由于我笔记本装的SQL和台式机版本是不一样的,所以遇到一些问题,具体解决方法请参考博客:http://blog.csdn.net/mascf/article/details/38644759 导出脚本成功但是新建数据库又出现问题,新建过程中出现如下问题: (但是忘记截图,关键词如下) 创建数据库失败((Microsoft.SqlServer.Smo)) 执行 Transac

创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL语句或批处理时发生了异常。

房收费系统完成了,但是我是在笔记本上敲得,没有实现异地发布,结局只能是被PASS掉了~回来重新导出自己的数据库到台式机上,由于我笔记本装的SQL和台式机版本是不一样的,所以遇到一些问题,具体解决方法请参考博客:http://blog.csdn.net/mascf/article/details/38644759 导出脚本成功但是新建数据库又出现问题,新建过程中出现如下问题: (但是忘记截图,关键词如下) 创建数据库失败((Microsoft.SqlServer.Smo)) 执行 Transact

JRebel热部署spring mvc时发生的异常。

JRebel: ERROR org.zeroturnaround.bundled.javassist.CannotCompileException: [source error] no such class: handlerMethods        at org.zeroturnaround.bundled.javassist.CtNewMethod.make(JRebel:79)        at org.zeroturnaround.bundled.javassist.CtNewMet

spring4.0+struts2整合,服务器启动时发生的异常

No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.enableAopSupport'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,java.lang.String,javax.servl

一个linux内核模块移植到低版本时发生的异常

在3.10的内核版本下,有一个运行稳定的内核模块,移植到suse11的时候,编译正常,运行则直接出现crash: <4>[ 503.347297] CPU 0 <4>[ 503.347300] Modules linked in: caq_sendmsg(EN) mysendmsg(EN) witdriver(EN) datalink(EN) w83627dhg(EN) tipc(EX) ossmod(EN) pagecachelimit(EN) xfs ip6table_filt

sqlserver数据库脱机时发生异常:由于无法在数据库 &#39;SMS&#39; 上放置锁,ALTER DATABASE 失败。请稍后再试。 ALTER DATABASE 语句失败。 (.Net SqlClient Data Provider)

sqlserver数据库脱机时发生异常,如下: =================================== 设置脱机 对于 数据库“SMS”失败.  (Microsoft.SqlServer.Smo) ------------------------------ 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2500.0+((KJ_PCU_Main).110

升级到JDK8,编译时发生 Error:java: java.lang.ExceptionInInitializerError

编译的时候出现这个问题.使用1.7的jdk没问题,但是由于po主的项目中,使用了java8编写的代码,解决java8兼容问题成为解决这个问题的首选方案. 这个日志太过简单,只告知一个异常信息,这个异常发生的原因主要是由于静态类,静态变量初始化时发生了异常,po的项目是个很早的项目,静态类太多,无法直接定位异常信息到底是如何产生,控制台也没有输出堆栈,这给排查问题带来了极大的不便,第一个要解决的应该就是讲详细的堆栈信息输出,能方便的定位到问题的根源. 注意到第三条Infomation,Compli

JSP Tomcat8.0运行连接池时发生异常【AbstractMethodError oracle.jdbc.driver.T4CConnection.isValid(I)Z】

原创 2015年12月28日 11:38:01 2004 一.Tomcat8.0运行连接池时发生异常: AbstractMethodError oracle.jdbc.driver.T4CConnection.isValid(I)Z 二.如何解决 由于驱动包引起的:原先是用的Oracle 10g 10.2.0.2 JDBC_ojdbc14.jar 但现在必须换成: ojdbc6.jar   即OK! 注意: Tomcat8+JDK1.7+Ojdbc6.jar Oracle驱动包