今天在学习dbcp连接池的过程中出现了
AbstractMethodError:oracle.jdbc.driver.T4CConnection.isValid(I)Z
的错误提示。
部分代码如下:
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.OracleDriver");
try {
Context ctx=new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/Tomcat-dbcpDataSourceJNDI");
connection = dataSource.getConnection();
System.out.println("OK");
} catch (NamingException e) {
e.printStackTrace();
}
return connection ;
}
当运行至connection = dataSource.getConnection();时提示了错误。此时DataSource是有值的,只是无法获得connection对象。
出现此bug时我的Tomcat的版本为:Tomcat 8.4.45 ,oracle版本为: 11.2.0.1.0 jdbc版本为:ojdbc14 。
在我将jdbc版本更换为 ojdbc7时发现问题解决了。
当dataSource.getConnection()出现错误时,请检查自己的jdbc版本以尝试解决错误。