`
hizhangqi
  • 浏览: 89439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DBCP 老出异常 望各位给点意见

阅读更多

最的一个项目,由原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());
	}
}

 

望各位指指招,小弟有礼了.

 

 

1
2
分享到:
评论
2 楼 hizhangqi 2011-05-05  
谢谢,已解决,的确是没有关闭。关闭之后目前没有出现问题.
1 楼 ahgf 2011-04-29  
从代码上看不出什么问题。我的个人感觉是要检查每个获取Connection的地方,在使用完毕后,是否在finnally里关闭了。否则只要有一个地方没有关闭,就会越积越多,导致没有空闲连接可以获取。
下面是我以前用的监控数据库连接的语句,仅供参考:
select  machine,program,logon_time,status from v$session where schemaname='test' order by logon_time desc

select * from v$locked_object;

select  b.MACHINE, b.PROGRAM , count(*) from v$process a, v$session b where a.ADDR = b.PADDR and  b.USERNAME is not null   group by  b.MACHINE  , b.PROGRAM order by count(*) desc;

相关推荐

    NotFoundException: org.apache.commons.dbcp.BasicDataSource异常的解决方法

    本篇将详细探讨如何解决在Struts框架中遇到的`java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource`异常。 `org.apache.commons.dbcp.BasicDataSource`是Apache Commons DBCP库中的一个类...

    Struts的java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource异常的解决方法

    这个异常表明在运行时,系统无法找到指定的类,即Apache Commons DBCP的BasicDataSource,这是一个常用的数据库连接池组件。 Apache Commons DBCP(Database Connection Pool)是Apache提供的一个数据库连接池实现...

    commons-dbcp-1.4

    3. **池化策略**:DBCP 支持不同类型的池化策略,如 LIFO(后进先出)、FIFO(先进先出)等,以优化连接的分配和回收。 4. **配置参数**:DBCP 允许开发者通过配置文件或代码设置各种参数,如最大活动连接数、最大...

    dbcp连接池常用包

    6. **异常处理**:了解在使用过程中可能出现的异常情况,如连接超时、空闲连接检测等,并知道如何处理这些异常。 在压缩包的文件名称列表中,虽然没有具体的文件内容,但通常会包含DBCP的JAR文件,这些文件是运行和...

    DBCP依赖Jar包

    以下是一些关于DBCP及其依赖Jar包的重要知识点: 1. **数据库连接池原理**:数据库连接池维护了一组已建立的数据库连接,当应用程序需要时,它会从池中获取一个连接,使用完毕后归还,而不是直接关闭。这种方式避免...

    commons-dbcp-1.2.2

    5. **异常处理**:当连接池中的连接出现错误时,DBCP能够捕获并处理这些异常,确保应用的稳定性。 6. **性能优化**:DBCP通过合理地管理和重用数据库连接,减少了数据库的开销,提高了整体系统性能。 在实际使用中...

    dbcp所需要jar

    在SpringMVC中配置DBCP来连接MySQL数据库,我们需要了解以下几个关键知识点: 1. **数据库连接池**:数据库连接池在初始化时会创建一定数量的数据库连接,这些连接可以在多个请求之间共享,避免了频繁创建和关闭...

    创建dbcp连接,dbcp(Spring)

    DBCP(Database Connection Pool)是Apache Commons项目中的一个数据库连接池组件,全称为Apache Commons DBCP。它允许开发者在应用程序中实现高效的数据库连接管理,通过复用已存在的数据库连接来减少每次请求时...

    DBCP连接池DBCP和C3P0配置

    如果超过这个时间仍无法获取到连接,则抛出异常。 #### 四、C3P0配置详解 再来看C3P0的配置: ```xml ${jdbcHospital.driverClassName}"/> ${jdbcHospital.url}"/> ${jdbcHospital.username}"/> ${...

    开源数据库连接池dbcp

    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开发工具 commons-dbcp2-2.1.1开发...

    commons-dbcp-1.4.jar依赖包

    4. **API使用**:阐述如何使用DBCP提供的API来获取和关闭数据库连接,以及如何进行异常处理。 5. **性能优化**:讨论DBCP的性能调优策略,如设置合适的连接池大小、启用连接验证和空闲检查频率等。 6. **与其他...

    commons-dbcp-1.3

    在实际应用中,使用DBCP时需要注意以下几点: 1. 配置文件:需要正确配置DBCP的属性,例如`maxActive`(最大活动连接数)、`maxIdle`(最大空闲连接数)、`minIdle`(最小空闲连接数)等,以确保性能和资源的合理...

    dbcp jar包 dbcp jar 包

    DBCP(Database Connection Pool)是Apache软件基金会的一个开源项目,全称为Apache Commons DBCP,它提供了一个数据库连接池的实现。数据库连接池在多线程、高并发的环境中非常关键,因为它可以有效地管理和复用...

    commons中的DBCP连接池jar

    Apache Commons DBCP(Database Connection Pool)是Java开发中常用的一个数据库连接池组件,它属于Apache Commons项目的一部分。DBCP提供了数据库连接池的功能,能够有效地管理和复用数据库连接,提高应用性能并...

    DBCP数据库连接池所需的3个jar包

    - `maxWait`:当池中没有可用连接时,等待新连接的最大时间,超过则抛出异常。 - `testOnBorrow`和`testOnReturn`:在借用和归还连接时是否进行有效性检查。 - `validationQuery`:用于验证连接是否有效的SQL查询。 ...

    commons-dbcp jar包

    标题"commons-dbcp jar包"指的是Apache Commons DBCP库的Java归档(JAR)文件。这个库是Spring框架在进行数据库连接管理时的一个常用组件,尤其是在开发基于Java的企业级应用时。"spring开发的必备jar包"表明了在...

    dbcp 1.2.2

    Apache Commons DBCP 1.2.2 是一个在Java应用程序中管理数据库连接池的开源库。这个版本的DBCP是Apache Commons项目的一部分,旨在提供一个健壮、高性能的数据库连接池实现,以提高Java应用的数据库访问效率。在本篇...

    dbcp需要jar包

    2. **连接验证**:在从池中分配连接之前,DBCP可以进行验证,确保返回给应用的连接是可用的,避免了因无效连接导致的异常。 3. **池化PreparedStatement**:DBCP还可以池化预编译的SQL语句(PreparedStatement对象...

Global site tag (gtag.js) - Google Analytics