2013-11-27 107 views
1

我是一个java编程的新手,我正在努力学习。Java连接池与BoneCP奇怪的错误

我有一个数据库MySQL和我管理与连接池的连接,BoneCP是我使用的库。

用于创建池的代码是这样的:

 BoneCPConfig config = new BoneCPConfig();          // create a new configuration object 
     config.setJdbcUrl( R.database.url + R.database.dbName);      // set the JDBC url 
     config.setUsername(R.database.userName);          // set the username 
     config.setPassword(R.database.password);          // set the password 

     config.setMinConnectionsPerPartition(2); 
     config.setMaxConnectionsPerPartition(5); 
     config.setPartitionCount(3); 


     try{ 

      connectionPool = new BoneCP(config);          // setup the connection pool 

     }catch(Exception e){ 

      System.out.println(e); 

     } 

当我需要发送请求的连接DB I赶上这一行代码的连接: 康恩= R.database.connectionPool.getConnection ();

我认为在这一点上都可以,我没有任何错误。

一分钟后,控制台这样说:

 [BoneCP-pool-watch-thread] ERROR com.jolbox.bonecp.BoneCP - Failed to acquire connection to jdbc:mysql://localhost:3306/test_db. Sleeping for 7000 ms. Attempts left: 0 
    java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test_db 
at java.sql.DriverManager.getConnection(DriverManager.java:596) 
at java.sql.DriverManager.getConnection(DriverManager.java:215) 
at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:363) 
at com.jolbox.bonecp.BoneCP.obtainInternalConnection(BoneCP.java:269) 
at com.jolbox.bonecp.ConnectionHandle.<init>(ConnectionHandle.java:242) 
at com.jolbox.bonecp.PoolWatchThread.fillConnections(PoolWatchThread.java:115) 
at com.jolbox.bonecp.PoolWatchThread.run(PoolWatchThread.java:82) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744) 



    [BoneCP-pool-watch-thread] ERROR com.jolbox.bonecp.CustomThreadFactory - Uncaught Exception in thread BoneCP-pool-watch-thread 
    java.lang.NoClassDefFoundError: com/jolbox/bonecp/hooks/ConnectionState 
at com.jolbox.bonecp.ConnectionHandle.markPossiblyBroken(ConnectionHandle.java:382) 
at com.jolbox.bonecp.ConnectionHandle.<init>(ConnectionHandle.java:244) 
at com.jolbox.bonecp.PoolWatchThread.fillConnections(PoolWatchThread.java:115) 
at com.jolbox.bonecp.PoolWatchThread.run(PoolWatchThread.java:82) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744) 

这是奇怪的问题!

非常感谢!

回答

0
No suitable driver found for jdbc:mysql://localhost:3306/test_db 

这似乎意味着,你不必在你的classpath java的MySQL JDBC驱动程序,看看MySQL的可用的连接器,并确保适当的JAR包括此驱动程序是在classpath。

MySQL Connectors

+0

你好,非常感谢你的回答。我已经在项目的类路径中安装了这个库,并且我能够查询数据库......这个错误是在几分钟的不活动之后调用的,但是我可以再次重新连接到数据库而没有问题。问题是这个问题的原因是什么! XD –

+0

当我重新部署项目时,我得到了:SEVERE:Web应用程序[/ tom]似乎已经启动了一个名为[BoneCP-pool-watch-thread]的线程,但未能阻止它。这很可能造成内存泄漏。 2013年11月28日上午9点26分49秒org.apache.catalina.core.ApplicationContext日志 –