Frank Zhang
2011-12-17 00:49:46 UTC
Hi All:
Our code is using apache dbcp library and mysql-connector as JDBC driver other than tomcat own tomcat-dbcp.jar. we always put mysql-connector at CATALINA_HOME/lib while put commons-dbcp-1.4.jar
at CATALINA_HOME/webapps/client/WEB-INF/lib/. This worked fairly well in tomcat 6.0.2x and even in 6.0.33. In 6.0.35 I encountered the error "java.sql.SQLException: No suitable driver found for" during the booting time which looks like mysql-connector not in classpath. Considering it's working all right before, my suspect is 6.0.35 silently changed its class loading way. Could somebody give me some hints? Thanks.
Accidentally, I tried putting mysql-connector to CATALINA_HOME/webapps/client/WEB-INF/lib/, but no better result.
--------------- the error ----------------
[java] java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/cloud?autoReconnect=true&prepStmtCacheSize=517&cachePrepStmts=true
[java] at java.sql.DriverManager.getConnection(DriverManager.java:640)
[java] at java.sql.DriverManager.getConnection(DriverManager.java:200)
[java] at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75)
[java] at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
[java] at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1181)
[java] at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
[java] at com.cloud.utils.db.Transaction.getStandaloneConnectionWithException(Transaction.java:199)
[java] at com.cloud.utils.db.Transaction.getStandaloneConnection(Transaction.java:208)
[java] at com.cloud.utils.db.DbUtil.getConnectionForGlobalLocks(DbUtil.java:59)
[java] at com.cloud.utils.db.DbUtil.getGlobalLock(DbUtil.java:204)
[java] at com.cloud.utils.db.GlobalLock.lock(GlobalLock.java:153)
[java] at com.cloud.upgrade.DatabaseIntegrityChecker.check(DatabaseIntegrityChecker.java:208)
[java] at com.cloud.utils.component.ComponentLocator.runCheckers(ComponentLocator.java:240)
[java] at com.cloud.utils.component.ComponentLocator.parse(ComponentLocator.java:211)
[java] at com.cloud.utils.component.ComponentLocator.getLocatorInternal(ComponentLocator.java:795)
[java] at com.cloud.utils.component.ComponentLocator.getLocator(ComponentLocator.java:833)
[java] at com.cloud.utils.component.ComponentLocator.getComponent(ComponentLocator.java:383)
[java] at com.cloud.utils.component.ComponentLocator.getComponent(ComponentLocator.java:376)
[java] at com.cloud.servlet.CloudStartupServlet.init(CloudStartupServlet.java:46)
[java] at javax.servlet.GenericServlet.init(GenericServlet.java:212)
[java] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
[java] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
[java] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
[java] at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
[java] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
[java] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
[java] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
[java] at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
[java] at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
[java] at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
[java] at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
[java] at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
[java] at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
[java] at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
[java] at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
[java] at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
[java] at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
[java] at org.apache.catalina.core.StandardService.start(StandardService.java:525)
[java] at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
[java] at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[java] at java.lang.reflect.Method.invoke(Method.java:616)
[java] at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
[java] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Our code is using apache dbcp library and mysql-connector as JDBC driver other than tomcat own tomcat-dbcp.jar. we always put mysql-connector at CATALINA_HOME/lib while put commons-dbcp-1.4.jar
at CATALINA_HOME/webapps/client/WEB-INF/lib/. This worked fairly well in tomcat 6.0.2x and even in 6.0.33. In 6.0.35 I encountered the error "java.sql.SQLException: No suitable driver found for" during the booting time which looks like mysql-connector not in classpath. Considering it's working all right before, my suspect is 6.0.35 silently changed its class loading way. Could somebody give me some hints? Thanks.
Accidentally, I tried putting mysql-connector to CATALINA_HOME/webapps/client/WEB-INF/lib/, but no better result.
--------------- the error ----------------
[java] java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/cloud?autoReconnect=true&prepStmtCacheSize=517&cachePrepStmts=true
[java] at java.sql.DriverManager.getConnection(DriverManager.java:640)
[java] at java.sql.DriverManager.getConnection(DriverManager.java:200)
[java] at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75)
[java] at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
[java] at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1181)
[java] at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
[java] at com.cloud.utils.db.Transaction.getStandaloneConnectionWithException(Transaction.java:199)
[java] at com.cloud.utils.db.Transaction.getStandaloneConnection(Transaction.java:208)
[java] at com.cloud.utils.db.DbUtil.getConnectionForGlobalLocks(DbUtil.java:59)
[java] at com.cloud.utils.db.DbUtil.getGlobalLock(DbUtil.java:204)
[java] at com.cloud.utils.db.GlobalLock.lock(GlobalLock.java:153)
[java] at com.cloud.upgrade.DatabaseIntegrityChecker.check(DatabaseIntegrityChecker.java:208)
[java] at com.cloud.utils.component.ComponentLocator.runCheckers(ComponentLocator.java:240)
[java] at com.cloud.utils.component.ComponentLocator.parse(ComponentLocator.java:211)
[java] at com.cloud.utils.component.ComponentLocator.getLocatorInternal(ComponentLocator.java:795)
[java] at com.cloud.utils.component.ComponentLocator.getLocator(ComponentLocator.java:833)
[java] at com.cloud.utils.component.ComponentLocator.getComponent(ComponentLocator.java:383)
[java] at com.cloud.utils.component.ComponentLocator.getComponent(ComponentLocator.java:376)
[java] at com.cloud.servlet.CloudStartupServlet.init(CloudStartupServlet.java:46)
[java] at javax.servlet.GenericServlet.init(GenericServlet.java:212)
[java] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
[java] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
[java] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
[java] at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
[java] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
[java] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
[java] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
[java] at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
[java] at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
[java] at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
[java] at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
[java] at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
[java] at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
[java] at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
[java] at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
[java] at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
[java] at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
[java] at org.apache.catalina.core.StandardService.start(StandardService.java:525)
[java] at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
[java] at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[java] at java.lang.reflect.Method.invoke(Method.java:616)
[java] at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
[java] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)