最的一个项目,由原JDBC 自写getConnection 改为apache dbcp 的连接池后。开始还不到出问题,但是数据访问频繁后,出如下错误
严重: 获取connection失败 :data=>org.apache.commons.dbcp.BasicDataSource@1cbb5ad:error=>Cannot get a connection, pool error Timeout waiting for idle object
public class ConnectionSource {
private static Log logger = LogFactory
.getLog("com.java.ods.framework.jdbc.ConnectionSource");
private static BasicDataSource dataSource = null;
public ConnectionSource() {
}
public static void init() {
if (dataSource != null) {
try {
dataSource.close();
} catch (Exception e) {
logger.error("关闭dataSource失败 :data=>" + dataSource + ":error=>"
+ e.getMessage());
}
dataSource = null;
}
try {
Properties p = new Properties();
p.setProperty("driverClassName", "com.mysql.jdbc.Driver");
p
.setProperty(
"url",
"jdbc:mysql://localhost:3306/orderDishesSystem?useUnicode=true&characterEncoding=gbk");
p.setProperty("password", "mysql");
p.setProperty("username", "root");
p.setProperty("maxActive", "500");
p.setProperty("maxIdle", "100");
p.setProperty("maxWait", "1000");
p.setProperty("removeAbandoned", "false");
p.setProperty("removeAbandonedTimeout", "120");
p.setProperty("testOnBorrow", "true");
p.setProperty("logAbandoned", "true");
dataSource = (BasicDataSource) BasicDataSourceFactory
.createDataSource(p);
} catch (Exception e) {
logger.error("产出dataSource失败 :data=>" + dataSource + ":error=>"
+ e.getMessage() + e);
}
}
public static synchronized Connection getConnection() {
Connection conn = null;
try {
if (dataSource == null) {
init();
}
if (dataSource != null) {
conn = dataSource.getConnection();
}
} catch (SQLException e) {
logger.error("获取connection失败 :data=>" + dataSource + ":error=>"
+ e.getMessage());
}
return conn;
}
public static void main(String[] args) {
logger.info(ConnectionSource.getConnection());
}
}
望各位指指招,小弟有礼了.
分享到:
相关推荐
本篇将详细探讨如何解决在Struts框架中遇到的`java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource`异常。 `org.apache.commons.dbcp.BasicDataSource`是Apache Commons DBCP库中的一个类...
这个异常表明在运行时,系统无法找到指定的类,即Apache Commons DBCP的BasicDataSource,这是一个常用的数据库连接池组件。 Apache Commons DBCP(Database Connection Pool)是Apache提供的一个数据库连接池实现...
3. **池化策略**:DBCP 支持不同类型的池化策略,如 LIFO(后进先出)、FIFO(先进先出)等,以优化连接的分配和回收。 4. **配置参数**:DBCP 允许开发者通过配置文件或代码设置各种参数,如最大活动连接数、最大...
6. **异常处理**:了解在使用过程中可能出现的异常情况,如连接超时、空闲连接检测等,并知道如何处理这些异常。 在压缩包的文件名称列表中,虽然没有具体的文件内容,但通常会包含DBCP的JAR文件,这些文件是运行和...
以下是一些关于DBCP及其依赖Jar包的重要知识点: 1. **数据库连接池原理**:数据库连接池维护了一组已建立的数据库连接,当应用程序需要时,它会从池中获取一个连接,使用完毕后归还,而不是直接关闭。这种方式避免...
5. **异常处理**:当连接池中的连接出现错误时,DBCP能够捕获并处理这些异常,确保应用的稳定性。 6. **性能优化**:DBCP通过合理地管理和重用数据库连接,减少了数据库的开销,提高了整体系统性能。 在实际使用中...
在SpringMVC中配置DBCP来连接MySQL数据库,我们需要了解以下几个关键知识点: 1. **数据库连接池**:数据库连接池在初始化时会创建一定数量的数据库连接,这些连接可以在多个请求之间共享,避免了频繁创建和关闭...
DBCP(Database Connection Pool)是Apache Commons项目中的一个数据库连接池组件,全称为Apache Commons DBCP。它允许开发者在应用程序中实现高效的数据库连接管理,通过复用已存在的数据库连接来减少每次请求时...
如果超过这个时间仍无法获取到连接,则抛出异常。 #### 四、C3P0配置详解 再来看C3P0的配置: ```xml ${jdbcHospital.driverClassName}"/> ${jdbcHospital.url}"/> ${jdbcHospital.username}"/> ${...
DBCP会检查连接是否仍能正常工作,如有异常则标记为不可用并可能替换新的连接。 5. 销毁连接:当连接池达到最大连接数或连接空闲时间过长,未被使用的连接可能会被回收销毁。 DBCP的配置文件通常为XML格式,其中...
开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发...
4. **API使用**:阐述如何使用DBCP提供的API来获取和关闭数据库连接,以及如何进行异常处理。 5. **性能优化**:讨论DBCP的性能调优策略,如设置合适的连接池大小、启用连接验证和空闲检查频率等。 6. **与其他...
在实际应用中,使用DBCP时需要注意以下几点: 1. 配置文件:需要正确配置DBCP的属性,例如`maxActive`(最大活动连接数)、`maxIdle`(最大空闲连接数)、`minIdle`(最小空闲连接数)等,以确保性能和资源的合理...
DBCP(Database Connection Pool)是Apache软件基金会的一个开源项目,全称为Apache Commons DBCP,它提供了一个数据库连接池的实现。数据库连接池在多线程、高并发的环境中非常关键,因为它可以有效地管理和复用...
Apache Commons DBCP(Database Connection Pool)是Java开发中常用的一个数据库连接池组件,它属于Apache Commons项目的一部分。DBCP提供了数据库连接池的功能,能够有效地管理和复用数据库连接,提高应用性能并...
- `maxWait`:当池中没有可用连接时,等待新连接的最大时间,超过则抛出异常。 - `testOnBorrow`和`testOnReturn`:在借用和归还连接时是否进行有效性检查。 - `validationQuery`:用于验证连接是否有效的SQL查询。 ...
标题"commons-dbcp jar包"指的是Apache Commons DBCP库的Java归档(JAR)文件。这个库是Spring框架在进行数据库连接管理时的一个常用组件,尤其是在开发基于Java的企业级应用时。"spring开发的必备jar包"表明了在...
Apache Commons DBCP 1.2.2 是一个在Java应用程序中管理数据库连接池的开源库。这个版本的DBCP是Apache Commons项目的一部分,旨在提供一个健壮、高性能的数据库连接池实现,以提高Java应用的数据库访问效率。在本篇...
2. **连接验证**:在从池中分配连接之前,DBCP可以进行验证,确保返回给应用的连接是可用的,避免了因无效连接导致的异常。 3. **池化PreparedStatement**:DBCP还可以池化预编译的SQL语句(PreparedStatement对象...