标签: apache-commons-dbcp

JDBC的连接池选项:DBCP与C3P0

什么是可用于Java/JDBC的最佳连接池库?

我正在考虑2个主要候选人(免费/开源):

我在博客和其他论坛上阅读了很多关于它们的内容,但无法做出决定.

这两个是否有任何相关的替代方案?

java connection-pooling jdbc c3p0 apache-commons-dbcp

311
推荐指数
10
解决办法
20万
查看次数

如何修复:"使用池时没有找到适合jdbc:mysql:// localhost/dbname的驱动程序"错误?

我正在尝试创建与我的数据库的连接,当我使用main方法测试我的代码时,它可以无缝地工作.但是,当尝试通过Tomcat 7访问它时,它会失败并显示错误:

No suitable driver found for jdbc:mysql://localhost/dbname. 
Run Code Online (Sandbox Code Playgroud)

我正在使用汇集.我在WEB-INF/lib和.classpath中放入了mysql连接器(5.1.15),dbcp(1.4)和pool(1.4.5)库.我正在使用Eclipse IDE.我的数据库驱动程序代码是:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.apache.tomcat.dbcp.dbcp.ConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.PoolingDriver;
import org.apache.tomcat.dbcp.pool.impl.GenericObjectPool;

public class DatabaseConnector {
    public static String DB_URI = "jdbc:mysql://localhost/dbname";
    public static String DB_USER = "test";
    public static String DB_PASS = "password";

    // Singleton instance
    protected static DatabaseConnector _instance;

    protected String _uri;
    protected String _username;
    protected String _password;

    /**
     * Singleton, so no public constructor
     */
    protected DatabaseConnector(String uri, String username, String password) { …
Run Code Online (Sandbox Code Playgroud)

mysql jdbc tomcat7 apache-commons-dbcp

92
推荐指数
6
解决办法
45万
查看次数

DBCP - 针对不同数据库的validationQuery

我使用DBCP池,我想使用testOnBorrowtestOnReturn来测试连接是否仍然有效.
不幸的是,我必须设置属性validationQuery以使其工作.

问题:validationQuery应该有什么价值?

我知道,那个:validationQuery必须是一个SQL SELECT语句,至少返回一行.

问题是我们使用各种数据库(DB2,Oracle,hsqldb).

java connection-pooling apache-commons-dbcp

78
推荐指数
2
解决办法
6万
查看次数

2011/2012中的Java JDBC连接池库选择?

我应该将哪个JDBC连接池库用于新的应用程序项目(而不是Web应用程序)?

我应该选择BoneCP吗?我没有任何巨大的要求.我只需要一个好的,易于使用的数据库连接池,即正在开发中.图书馆,作者可以回复错误报告,回答一些具体问题等.

顺便说一下,实际上,我只使用MySQL.我发现,MySQL驱动程序支持DriverManager接口,但我不确定它是否实际上是连接池.

connection-pooling jdbc c3p0 bonecp apache-commons-dbcp

71
推荐指数
4
解决办法
2万
查看次数

tomcat-dbcp vs commons-dbcp

这两个连接池库之间似乎存在很多混淆.我想知道哪一个更好(如果有的话)?

以下是我想提出的一些观点......有人可以验证吗?

  1. Tomcat DBCP:使用默认的tomcat-dbcp.jar,它将出现在tomcat/lib目录中.您不需要 web-inf/lib中的commons-dbcp.jar或commons-pool.jar库.DB驱动程序应放在tomcat/lib中.

  2. Tomcat DBCP数据源类是org.apache.tomcat.dbcp.dbcp.BasicDataSource.Commons DBCP数据源类是org.apache.commons.dbcp.BasicDataSource.

  3. 这两者之间的唯一区别可以在这篇博客中找到.不知道信息是否正确.

  4. 官方Tomcat文档清楚地提到大多数类刚刚被重新命名和重新打包.

所以问题是:哪一个使用哪一个更好

java apache-commons apache-commons-dbcp

68
推荐指数
4
解决办法
5万
查看次数

Spring JDBC连接池的最佳实践

我有一个基本的Spring JDBC应用程序,它具有非常基本的配置:

<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
   <property name="url" value="jdbc:oracle:thin:@1.1.1.1:1521:XXX"/>
   <property name="username" value="username"/>
   <property name="password" value="password"/>
</bean>

<bean id="dbThing" class="com.DbThing">
   <property name="dataSource" ref="myDataSource"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

我想介绍一个连接池,并在阅读了几个线程后,我对使用哪个池库感到有点困惑.

似乎在SO上有更多学分的图书馆是CP30DBCP.由于我使用的是Oracle,我还可以使用驱动程序提供的池数据源.我知道有更多的库可用 - 例如新的Apache Tomcat 7池库.

有没有我应该避免的图书馆?

我应该在给定的库中使用任何推荐的配置吗?

你想分享的任何"战争故事"?

java spring connection-pooling c3p0 apache-commons-dbcp

38
推荐指数
4
解决办法
8万
查看次数

方法org.postgresql.jdbc4.Jdbc4Connection.isValid(int)尚未实现

我正在尝试使用postgres 9.1配置dbcp2

当我运行我的应用程序时,它会抛出异常:

Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:575)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:639)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:664)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:704)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:195)
    at com.springinpractice.ch02.service.impl.ContactServiceImpl.getContact(ContactServiceImpl.java:64)
    at com.springinpractice.ch02.ConsoleApp.main(ConsoleApp.java:16)
Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.)
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2152)
    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1903)
    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1413)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
    ... 7 more
Caused by: org.postgresql.util.PSQLException: Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.
    at org.postgresql.Driver.notImplemented(Driver.java:753)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.isValid(AbstractJdbc4Connection.java:109) …
Run Code Online (Sandbox Code Playgroud)

postgresql jdbc apache-commons-dbcp

32
推荐指数
3
解决办法
3万
查看次数

BasicDatasource和PoolingDatasource之间的区别

org.apache.commons.dbcp BasicDatasource和PoolingDataSoure有什么区别?两者都支持连接池吗?什么时候使用它们?

java connection-pooling apache-commons-dbcp

31
推荐指数
1
解决办法
1万
查看次数

Apache Commons DBCP连接对象问题,org.apache.tomcat.dbcp.dbcp.PoolingDataSource中的Thread:ClassCastException $ PoolGuardConnectionWrapper

我正在使用Apache Commons DBCP(commons-dbcp.jar)连接池.

一旦我从池中获得了连接,它就会被包含在课堂中org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.

我的要求是将一个字符串数组传递给Oracle中的pl/sql存储过程.

以下是我在以下代码片段中所做的事情:

Connection dbConn = ConnectionManager.ds.getConnection();
//The above statement returns me an connection wrapped in the class
//org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.

org.apache.commons.dbcp.DelegatingConnection del = new org.apache.commons.dbcp.DelegatingConnection(dbConn.getConnection());
con = del.getInnermostDelegate();

cs = con.prepareCall("call SP_NAME(?,?,?,?)");
oracle.sql.ArrayDescriptor arDesc= oracle.sql.ArrayDescriptor.createDescriptor("ARRAY_NAME", (OracleConnection) con);

CallableStatement c_stmt = conn.prepareCall("begin update_message_ids_ota
(:x); end;" );
c_stmt.setArray( 1, array_to_pass );
c_stmt.execute();
Run Code Online (Sandbox Code Playgroud)

在执行上面的代码时,我得到以下异常:

java.lang.ClassCastException:org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper无法在oracle.sql.ArrayDescriptor.createDescriptor中强制转换为oracle.jdbc.OracleConnection

我试图在几乎所有的网站和论坛中找到解决方案,但无法得到满意的答案或解决方案.

java jdbc apache-commons-dbcp

28
推荐指数
4
解决办法
5万
查看次数

Oracle通用连接池(UCP)有多好

有没有人有在实际生产负载下使用Oracle UCP的经验?它是否能很好地处理数据库重新连接?有任何多线程问题吗?有没有人将它与C3P0或Apache DBCP进行比较?

java connection-pooling jdbc c3p0 apache-commons-dbcp

26
推荐指数
2
解决办法
3万
查看次数