1

我听说 jbdc 在多线程访问方面存在问题。我还在另一篇文章中听说过 boneCP 推荐,但我想知道是否有其他人使用过另一个他们发现异步内容简单且高性能的

Apache 版本也表示它可能无法在 java 1.6 以上运行,我正在使用 java.runtime.version: 1.7.0_07-b11

4

1 回答 1

1

在实践中尝试了其他一些 API 后,我最终选择了 BoneCP。我在 Java 1.7 中使用它,即使在高并发情况下也能很好地工作。此外,开发人员在报告问题时会做出响应。

我以前使用过 C3P0,但在我切换到 BoneCP 后,它有一些非常奇怪的错误消失了。如果您对 C3P0 进行一些挖掘,您会发现它已经好几年没有受到影响,并且刚刚恢复开发。它在我的应用程序中出现了奇怪的问题。

我使用MysqlConnectionPoolDataSource来自普通 Mysql JDBC 包的。然后我只是设置如下(您可以根据需要调整设置):

pbds = new BoneCPDataSource();      
pbds.setDatasourceBean(mysqlcpds);
pbds.setMinConnectionsPerPartition(1);              
pbds.setMaxConnectionsPerPartition(10);    
pbds.setIdleConnectionTestPeriodInMinutes(60);
pbds.setIdleMaxAgeInMinutes(240);
pbds.setPartitionCount(1);

然后,您只需Connection从该对象中获取 s(它是线程安全的。)我使用来自多个线程的相同代码;Java 7 try-with-resources块特别方便,避免了很多样板文件(finally不需要并且保证关闭连接):

try( Connection conn = pbds.getConnection() ) { 

    ... do stuff with conn

} catch (SQLException e) {          
    e.printStackTrace();
} 
于 2013-03-23T03:54:10.450 回答