近期项目使用SpringMVC,并配置DBCP BasicDataSource作为数据源。因特殊需求,web session的有效时间需要设置为很长,导致有可能DB connection会被mysql回收,所以需要配置DBCP可以在执行sql前检查connection的有效性,如已失效,希望能获得一个新的有效connection(自动重连)。
已有配置(最简化):
<!-- DataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
只需添加如下一个新的属性即可,
<property name= "validationQuery" value="select 1" /> <!-- validate the connection before executing query, if it's invalid, the connect will be rebuild by DBCP -->
具体可参考Apache commons DBCP 配置 http://commons.apache.org/proper/commons-dbcp/configuration.html
相关推荐
设置了removeAbandoned=true时,系统会在removeAbandonedTimeout秒后回收无效的Connection。 4. maxWait:超时等待时间,以毫秒为单位。设置了maxWait时,客户端会等待maxWait毫秒后激发回收事件。 配置示例 以下...
Apache Commons DBCP(Database Connection Pool)是一个开源的数据库连接池组件,它提供了数据源对象,方便管理和复用数据库连接,从而提高应用性能。 要解决这个问题,你需要确保你的Java项目正确地包含了Apache ...
3. **事务支持**:`BasicDataSource`支持JDBC的事务管理,可以设置自动提交的开关,以及控制事务的隔离级别。 4. **连接池的初始化**:你可以预先配置一定数量的连接在启动时就存在于池中,这样可以减少初次请求...
Apache Commons DBCP(Database Connection Pool)是一个开源的、基于Apache Commons项目的数据源池组件。它提供了一个实现JDBC(Java Database Connectivity)规范的连接池,可以显著提高数据库操作的性能,因为...
- **defaultAutoCommit**:连接池创建的连接的默认自动提交状态,默认为`true`。 - **defaultReadOnly**:连接池创建的连接的默认只读状态,默认未设置。 - **defaultTransactionIsolation**:连接池创建的连接的...
4. **故障恢复**:连接池可以检测连接状态,自动重连或回收损坏的连接。 5. **事务支持**:提供事务管理,简化应用程序的事务处理逻辑。 ### 实战应用 在实际开发中,使用数据库连接池通常需要以下步骤: 1. ...
2. 创建数据源实例:在Java代码或配置文件中创建BasicDataSource实例,并设置相关属性。 ```java BasicDataSource ds = new BasicDataSource(); ds.setUrl("jdbc:mysql://localhost:3306/test"); ds.setUsername(...
在这个例子中,我们首先创建了一个BasicDataSource实例,并设置了数据库连接的相关属性。然后,我们通过调用`getConnection()`方法获取连接,执行SQL查询并处理结果。注意,我们使用了try-with-resources语句,确保...
DBCP连接池还有一些高级特性,如连接验证、自动重连、连接健康检查等,可以根据应用需求进行配置。同时,DBCP虽然历史悠久且稳定,但随着技术的发展,已经有一些更现代、功能更强大的数据库连接池替代品,如HikariCP...
C3P0是另一个流行的数据库连接池实现,提供了更高级的功能,如连接测试和自动重连。配置C3P0的过程类似,但使用的是`ComboPooledDataSource`类: ```java ComboPooledDataSource cpds = new ComboPooledDataSource...
- 配置连接池通常涉及设置最大连接数、最小连接数、超时时间等参数,以平衡资源使用和响应速度。 6. **事务管理** - JDBC提供了对事务的API,如`Connection.setAutoCommit(false)`开启手动事务,`Connection....
2. **自动重连**:如果数据库连接由于某种原因断开,DBCP2可以尝试自动重新建立连接,确保应用程序的连续性。 3. **事务支持**:DBCP2支持JDBC事务管理,可以配置为自动提交或手动提交事务,满足不同场景下的需求。...
DBCP(BasicDataSource)是一个基础的连接池实现,而C3P0则提供了一些额外的功能,如自动测试连接、自动重连等。 在实际项目中,根据系统的负载、并发量以及数据库的特性选择合适的连接池实现,并进行合理配置,...
例如,在Hibernate中,通过getSession().connection()可以获取连接,但不能直接关闭,因为连接由Session管理,会在事务提交或回滚时自动释放。而在JdbcTemplate中,通过jdbc.getDataSource().getConnection()获取的...
3. **获取和释放连接**:使用`BasicDataSource`提供的`getConnection()`方法获取数据库连接,用完后通过`Connection.close()`返回给连接池,而不是关闭连接。这一步骤非常重要,因为它确保连接能够被其他线程重用。 ...
`ConnectionPool`类提供了一些方法来获取和设置这些属性,如`getInitialConnections()`、`setInitialConnections()`等,这使得在运行时可以动态调整连接池的配置。 此外,类中可能还包含以下功能: - `get...
3. **自动管理连接:** 连接池会自动检测并处理坏掉的连接,保证应用的稳定运行。 4. **配置灵活:** 提供多种配置选项,可以根据实际需求调整连接池的行为。 **与其它数据库连接池的对比:** DBCP虽然简单易用,但...
3. 获取和释放连接:通过`BasicDataSource`提供的`getConnection()`方法获取数据库连接,使用完毕后调用`close()`方法归还连接,但实际并不会关闭,而是返回给连接池。 4. 销毁数据源:在应用程序关闭时,应调用`...