java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://192.168.1.136:3306/shop, username = root. Terminating connection pool. Original Exception: ------
java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.1.136:3306/shop
at java.sql.DriverManager.getConnection(DriverManager.java:604)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:242)
at com.jolbox.bonecp.BoneCP.<init>(BoneCP.java:289)
at Netpet.Web.Data.pool.Pool2.configure(Pool2.java:118)
at Netpet.Web.Data.pool.Pool2.getConnection(Pool2.java:25)
at Netpet.Web.Data.ConnectionPool.GetConnection1(ConnectionPool.java:92)
at Netpet.Web.Data.ConnectionPool.GetConnection(ConnectionPool.java:72)
at Netpet.Web.Data.ConnectionPool.GetConnection(ConnectionPool.java:56)
at Netpet.Web.Data.Netpet.BaseConfig.Config(BaseConfig.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at Netpet.Web.Config.InitConfig.InitAllConfigTrue(InitConfig.java:162)
at Netpet.Web.Config.InitConfig.InitAllConfig(InitConfig.java:97)
at Netpet.Web.InitServer.init(InitServer.java:40)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
------
at com.jolbox.bonecp.BoneCP.<init>(BoneCP.java:296)
at Netpet.Web.Data.pool.Pool2.configure(Pool2.java:118)
at Netpet.Web.Data.pool.Pool2.getConnection(Pool2.java:25)
at Netpet.Web.Data.ConnectionPool.GetConnection1(ConnectionPool.java:92)
at Netpet.Web.Data.ConnectionPool.GetConnection(ConnectionPool.java:72)
at Netpet.Web.Data.ConnectionPool.GetConnection(ConnectionPool.java:56)
at Netpet.Web.Data.Netpet.BaseConfig.Config(BaseConfig.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at Netpet.Web.Config.InitConfig.InitAllConfigTrue(InitConfig.java:162)
at Netpet.Web.Config.InitConfig.InitAllConfig(InitConfig.java:97)
at Netpet.Web.InitServer.init(InitServer.java:40)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.1.136:3306/shop
at java.sql.DriverManager.getConnection(DriverManager.java:604)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:242)
at com.jolbox.bonecp.BoneCP.<init>(BoneCP.java:289)
... 31 more
使用bonecp连接池总是报这个错误,经过半天的测试终于找到了原因,
初始化数据库连接时没有写:Class.forName("com.mysql.jdbc.Driver");
代码如下:
public synchronized static void configure(Properties props) throws SQLException{ if(pools != null && pools.size() > 0){return;} try { // load the database driver (make sure this is in your classpath!) Class.forName("com.mysql.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); return; } // setup the connection pool BoneCPConfig config = new BoneCPConfig(); config.setJdbcUrl("jdbc:mysql://"+GlobalConfig.mysqlDbIp+":3306/shop"); // jdbc url specific to your database, eg jdbc:mysql://127.0.0.1/yourdb config.setUsername(GlobalConfig.mysqlDbUserName); config.setPassword(GlobalConfig.mysqlDbPwd); //设置每60秒检查数据库中的空闲连接数 config.setIdleConnectionTestPeriod(60); //设置连接空闲时间 config.setIdleMaxAge(240); //设置每个分区中的最大连接数 30 config.setMaxConnectionsPerPartition(5); //设置每个分区中的最小连接数 10 config.setMinConnectionsPerPartition(5); //当连接池中的连接耗尽的时候 BoneCP一次同时获取的连接数 config.setAcquireIncrement(5); //连接释放处理 config.setReleaseHelperThreads(3); //设置分区 分区数为3 config.setPartitionCount(3); //设置配置参数 BoneCP connectionPool = new BoneCP(config); // setup the connection pool pools.put(DatabaseConfig.DEFAULT_NAME, connectionPool); BoneCPConfig config2 = new BoneCPConfig(); config2.setJdbcUrl("jdbc:mysql://"+GlobalConfig.mysqlDbIp+":3306/account"); // jdbc url specific to your database, eg jdbc:mysql://127.0.0.1/yourdb config2.setUsername(GlobalConfig.mysqlDbUserName); config2.setPassword(GlobalConfig.mysqlDbPwd); //设置每60秒检查数据库中的空闲连接数 config2.setIdleConnectionTestPeriod(60); //设置连接空闲时间 config2.setIdleMaxAge(240); //设置每个分区中的最大连接数 30 config2.setMaxConnectionsPerPartition(5); //设置每个分区中的最小连接数 10 config2.setMinConnectionsPerPartition(5); //当连接池中的连接耗尽的时候 BoneCP一次同时获取的连接数 config2.setAcquireIncrement(5); //连接释放处理 config2.setReleaseHelperThreads(3); //设置分区 分区数为3 config2.setPartitionCount(1); //设置配置参数 BoneCP connectionPool2 = new BoneCP(config2); // setup the connection pool pools.put(DatabaseConfig.PAY_NAME, connectionPool2); }