数据库连接池中总会保持有minIdle这个数目的连接,这里的连接如果长时间不使用就会有可能断开。
长时间不使用的数据库连接断开的可能有:
1.数据库本身设有这个,自动断开长时间不使用的连接。
2.网络问题,在长时间连接的过程中出现过网络问题。
3.防火墙问题,防火墙可能会关闭长时间连接,但没有数据流的连接。
出现的异常有:Could not close JDBC Connection,java.sql.SQLException: Already closed.,java.sql.SQLException: 关闭的连接,
出现这种断开的解决可以在数据源里设置一个testOnBorrow为true.在设置这个参数时还要设置validationQuery这个为一个最少返回一条数据的select语句。
org.apache.commons.dbcp.BasicDataSource数据源,非常常用。最近在使用时出现点问题。
DBCP数据源配置好多参数都不是很复杂,
参数 默认值 描述
initialSize 0 初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持
maxActive 8 最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制
maxIdle 8 最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制
minIdle 0 最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建
maxWait 无限 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待
还有一个参数说明一下:testOnBorrow true 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个.
<property name="testOnBorrow">
<value>trues</value>
</property>
这个参数设为true时,还有一个参数的设置:validationQuery:SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录
如果testOnBorrow为true而validationQuery没有设置,或为空,或你给的不是一个select语句且没有数据返回。testOnBorrow也是白设。validationQuery这个的SQL语句一般查询dual表.常用的有SELECT 1 FROM DUAL。最也不要使用SELECT sysdate FROM DUAL.这个语句的效率没有前面说的一个好。WebLogic 就是使用的SELECT 1 FROM DUAL这个sql语句。
<property name="testOnBorrow">
<value>true</value>
</property>
<property name="validationQuery">
<value>SELECT 1 FROM DUAL</value>
</property>
要正式系统中使用的数据源最好是用上这个testOnBorrow。这样可以保证使用的每个数据源都不会出现长时间没有使用中断后。出现Could not close JDBC Connection这种问题。
原文地址:http://sczdd.iteye.com/blog/781221
相关推荐
此外,DBCP数据源还提供了一些其他可选配置,如`maxIdle`(最大空闲连接数)、`maxWait`(等待连接的最大时间)等。 在Spring容器中,为了确保在应用关闭时正确关闭数据源,需要在`<bean>`标签中添加`destroy-...
**配置DBCP数据源步骤** 1. **添加依赖**:要使用DBCP,首先需要在项目的类路径下包含两个关键的jar包,即`commons-dbcp-1.4.jar`和`commons-pool-1.6.jar`。这两个jar包提供了DBCP所需的全部功能。 2. **配置...
这可能意味着DBCP数据源的使用示例或者结合Spring框架的配置。Spring是一个流行的Java应用框架,它支持多种数据源管理,包括DBCP。通过Spring的`DataSource` Bean配置,可以方便地集成DBCP,实现数据库连接的池化...
2. **配置数据源**:在Spring的配置文件(如`applicationContext.xml`)中,定义一个名为`dataSource`的bean,使用DBCP的数据源实现。例如: ```xml <bean id="dataSource" class="org.apache.commons.dbcp....
综上所述,DBCP数据源是Java应用程序中管理和复用数据库连接的有效工具,它的正确配置和使用对于提升应用性能至关重要。同时,了解并比较其他连接池方案,可以帮助选择最适合特定项目需求的解决方案。
在本配置中,我们将探讨如何将Spring MVC与Apache DBCP数据源和JdbcTemplate结合使用,以实现高效、安全的数据库操作。 Apache DBCP(Database Connection Pool)是一个连接池组件,它允许应用在多个用户之间共享...
2. **配置参数**:在配置DBCP数据源时,需要设置一系列参数来控制连接池的行为,例如: - `driverClassName`:指定数据库驱动类名,例如"com.mysql.jdbc.Driver"对于MySQL。 - `url`:数据库连接URL,包括数据库...
**JDBC数据源连接池配置与使用详解** 在Java Web应用中,数据库连接的管理是至关重要的。为了提高性能和资源利用率,开发人员通常会使用数据源连接池。本篇文章将详细讲解JDBC数据源连接池的配置和使用,以帮助你更...
总的来说,DBCP数据源的实现为Java应用提供了一种高效、可配置的数据库连接管理方案,降低了数据库操作的资源消耗,提高了系统性能。在实际应用中,根据项目的规模和性能需求,合理配置和使用DBCP是非常重要的。
DBCP(Database Connection Pool)是Apache软件基金会的Commons项目中的一个组件,全称为"Jakarta Commons DBCP"。它提供了一个数据库连接池服务,允许应用程序管理数据库连接的生命周期,提高数据库操作的效率和...
在Spring框架中,数据库连接管理是一项关键任务,而DBCP(Database Connection Pool)数据源是常用的连接池...在实际开发中,还需根据项目所使用的数据库选择对应的JDBC驱动,并根据应用需求调整DBCP数据源的配置参数。
在配置完成后,通过`dataSource.getConnection()`方法即可获取到数据库连接,使用完毕后,应调用`Connection.close()`方法关闭连接,实际上连接会返回到连接池而不是真正关闭,以便后续使用。 DBCP数据源的优点包括...
DBCP(Jakarta Commons DBCP)数据源是Apache软件基金会的一个开源项目,它提供了一个数据库连接池服务。在Java应用程序中,特别是那些基于Servlet容器(如Tomcat)的应用,DBCP是一个常用的数据库连接管理工具。它...
本案例主要讲解如何使用Tomcat服务器内置的DBCP(Database Connection Pool)数据源来高效、安全地管理数据库连接。DBCP是一个开源的数据库连接池实现,它允许应用程序在不创建新的数据库连接的情况下多次重用已存在...
本文将详细介绍如何在Spring MVC项目中配置并使用多数据源。 #### 1. 概述 在Spring MVC中配置多数据源通常涉及到以下几个步骤: - 在`application.properties`或`application.yml`文件中配置不同的数据源属性。 - ...
在使用DBCP时,正确配置数据源类是非常关键的,这直接影响到数据库连接的效率和系统的稳定性。 在DBCP的数据源配置中,有几个重要的参数需要理解: 1. **removeAbandoned**: 当设置为`true`时,DBCP会监控并回收...
总结,配置Tomcat 6.0的数据源(DBCP)和JNDI使用,主要是通过修改服务器和应用的配置文件,然后在代码中利用JNDI查找机制获取数据源,实现数据库连接的高效管理。通过实践和理解这些步骤,可以提升你的Java Web开发...
Spring框架支持多种数据源的配置方式,包括但不限于基于XML的配置、基于注解的配置以及基于Java配置的方式。本文主要关注基于XML的配置方法。 #### 三、XML配置详解 ##### 1. 数据源配置 数据源的配置通常涉及到...
除了基本配置,我们还可以设置更多的数据源属性来优化连接池的行为,比如最小空闲连接数、最大连接数、超时时间、验证查询等。这些属性可以帮助我们在不同的应用场景中调整资源使用,避免资源浪费和性能瓶颈。 在...
【dbcp数据源详解】 Apache DBCP (Database Connection Pool) 是一个开源的数据库连接池组件,它在Java应用中广泛使用,特别是在基于Spring框架的项目中,为应用程序提供高效、可靠的数据库连接管理。DBCP是Apache ...