背景:使用c3p0连接池,jetty下正常,发布到tomcat报如下错误,最后排查是因为没配置driverClass
报错如下:
[WARN]-[Thread: Task-Thread-for-com.mchange.v2.async.ThreadPerTaskAsynchronousRunner@2547fcd8]-[com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run()]: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@108445f1 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:278)
at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:223)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
代码如下:
public static C3p0Plugin createC3p0Plugin() {
PropKit.use("config");
C3p0Plugin cp = new C3p0Plugin(PropKit.get("jdbc.url"),
PropKit.get("jdbc.username"), PropKit.get("jdbc.password"),
PropKit.get("jdbc.driverClassName") ); // 使用C3P0
return cp;
}
如上错误因为未配置PropKit.get(“jdbc.driverClassName”) 导致,但jetty下正常,很诡异,记录一下。