https://issues.apache.org/jira/browse/DBCP-342
DBCP-93 DBCP-339 DBCP-342 都是同一个问题
问题描述:
在常见connectionPool的时候,由于SQLException(例如密码错误等)导致在王connectionPool添加连接的时候发生异常,旧的处理时直接抛出,不会返回
在下一次调用getConnection的时候依旧会发生这个问题,但是connectionPool是一个GenericObjectPool,connectionPool.addObject()添加连接失败,connectionPool这个对象本身还是存在的,因为createConnectionPool方法每次是会创建一个新的GenericObjectPool用来赋给connectionPool,这样上一次创建的connectionPool就成了orphaned connectionPool
而connectionPool本身有一个Evictor TimerTask,这个任务会调用ensureMinIdle()确保最小空闲的连接个数,如果不够则会继续创建
Once the database is back up, all these orphaned connectionPool's evitor threads will attempt to created minIdle connections to the database. This exhausts the max num connections on the database.
当数据库恢复正常时,所有创建的connectionPool都会去连接数据库,从而导致创建大量连接,也可能导致数据库挂掉
解决方法:
try {
for (int i = 0 ; i < initialSize ; i++) {
connectionPool.addObject();
}
} catch (Exception e) {
closeConnectionPool();
throw new SQLException("Error preloading the connection pool", e);
}
在抛出异常后 将connectionPool关闭,从而不会产生孤立的连接池(orphaned connectionPool)
分享到:
相关推荐
DBCP2通过预先创建并维护一定数量的数据库连接,为多个请求提供服务,从而实现连接复用,降低了系统资源的消耗。这种连接池技术在大型Web应用、企业级系统中被广泛采用。 DBCP2的2.2.0版本可能包含以下主要组件和...
首先,Commons DBCP全称为Apache Commons Database Connection Pooling,是Apache软件基金会提供的一个开源数据库连接池实现。DBCP2-2.1.1是该组件的一个版本,它在前一版本的基础上进行了优化和增强,提供了更稳定...
DBCP(Database Connection Pool)是Java应用中常用的数据库连接池实现之一,它允许在多个请求之间重用数据库连接,从而避免了频繁创建和销毁连接带来的开销。 在"commons-dbcp2-2.5.0-bin"压缩包中,包含了DBCP2的...
数据库连接池(Database Connection Pool,简称 DBCP)是一种在多用户并发环境下高效管理数据库连接的技术。它通过预先创建一定数量的数据库连接并存储在内存池中,供多个应用程序共享,从而避免了频繁地创建和关闭...
Apache Commons DBCP2是Apache软件基金会开发的一个数据库连接池组件,它在Java应用程序中用于管理数据库连接。这个“commons-dbcp2-2.1.1.zip”压缩包包含了DBCP2的特定版本(2.1.1)所需的全部资源,特别是其中的...
"commons-dbcp" 是Apache Commons项目的一部分,这是一个包含多个模块的Java库,提供了各种通用的实用工具类。DBCP是其中专用于数据库连接池管理的模块。标签"commons-dbcp"暗示我们关注的是Apache Commons组织下的...
Apache Commons DBCP(Database Connection Pool)是Java开发中常用的一个数据库连接池组件,它属于Apache Commons项目的一部分。DBCP提供了数据库连接池的功能,能够有效地管理和复用数据库连接,提高应用性能并...
它维护了一个连接池,并提供了获取和释放连接的方法。 2. `PoolableConnection`:这是DBCP中用于封装真实数据库连接的对象,它实现了`java.sql.Connection`接口,添加了连接池管理的额外逻辑。 3. `PoolManager`:...
DBCP(Database Connection Pool)是Apache软件基金会的Commons DBCP项目提供的一个数据库连接池组件,它在Java应用程序中用于管理和复用数据库连接。连接池是提高数据库应用性能的重要手段,通过预先创建并维护一定...
数据库连接池在初始化时会创建一定数量的数据库连接,这些连接可以在多个请求之间复用,避免了频繁地创建和关闭物理数据库连接,从而减少了系统开销。 在Java应用中,DBCP通常与其他数据库驱动一起使用,如MySQL ...
Apache Commons DBCP 1.4 是一个在Java应用程序中管理数据库连接池的开源库。这个版本是在2009年发布的,它基于Jakarta DBCP项目,并且是Apache Commons的一部分,提供了一套完善的数据库连接池解决方案。Apache ...
- 注意线程安全问题,确保多个线程并发访问连接池时不会出现竞态条件。 DBCP虽然历史悠久,但在许多现代应用中已被其他更先进的连接池实现如HikariCP、C3P0、Druid等替代,这些连接池通常提供更好的性能和更丰富的...
而DBCP通过维持一个数据库连接池,可以在多个请求之间复用已建立的连接,从而减少了连接创建和释放的开销。 "commons-dbcp-1.4.zip"是该库的1.4版本压缩包,包含DBCP的源码、类库和其他相关资源。这个版本的DBCP...
它通过`BasicDataSource`类实现了数据源接口,该类内部维护了一个连接池,包括连接的创建、分配、回收和销毁等操作。 2. **连接生命周期管理** 在DBCP2中,`PoolableConnection`类代表池中的连接,它扩展了`...
DBCP,全称为Jakarta-Commons-DBCP,是一个基于Apache组织开发的开源数据库连接池组件。在Java应用程序中,DBCP可以帮助管理和优化数据库连接,提高应用性能和资源利用率。数据库连接池在多线程环境下尤其重要,因为...
Apache Commons是一个包含多个模块的开源库,提供了许多实用的Java工具类和组件。 1. **Apache Commons DBCP**(Database Connection Pool): - DBCP 是一个数据库连接池实现,它允许开发者在应用中高效地管理...
这个压缩包包含了与DBCP相关的多个jar文件,用于在Java应用中管理和复用数据库连接,提高系统的性能和效率。下面我们将详细探讨DBCP、Java数据库连接池以及这些jar文件的作用。 1. **数据库连接池(DBCP)**: ...
DBCP(Database Connection Pool)是Apache组织提供的一种开源数据库连接池组件,主要包含两个核心库:`commons-dbcp-1.2.2.jar`和`commons-pool-1.3.jar`。这两个JAR文件在Java应用程序中用于管理和复用数据库连接...
Java DBCP(Database Connection Pool)是Apache软件基金会下的Jakarta项目提供的一种数据库连接池实现。它是基于JDBC(Java Database Connectivity)的,主要用于管理数据库连接,提高数据库操作的性能和效率。...
Apache Commons DBCP,全称为"Database Connection Pool",是Apache软件基金会开发的一个开源项目,主要提供数据库连接池服务。这个项目的源代码压缩包名为"commons-dbcp-1.0-src.zip",其中包含了用于创建、管理和...