`
楚若之夜
  • 浏览: 125027 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

数据库重连

 
阅读更多

4.2.10 数据库自动重连
DBCP使用apache的对象池ObjectPool作为连接池的实现,在构造GenericObjectPool时,会生成一个内嵌类Evictor,实现自Runnable接口。如果_timeBetweenEvictionRunsMillis大于0,每过_timeBetweenEvictionRunsMillis毫秒Evictor会调用evict()方法,检查对象的闲置时间是否大于 _minEvictableIdleTimeMillis毫秒(_minEvictableIdleTimeMillis小于等于0时则忽略,默认为30分钟),是则销毁此对象,否则就激活并校验对象,然后调用ensureMinIdle方法检查确保池中对象个数不小于_minIdle。在调用returnObject方法把对象放回对象池,首先检查该对象是否有效,然后调用PoolableObjectFactory 的passivateObject方法使对象处于非活动状态。再检查对象池中对象个数是否小于_maxIdle,是则可以把此对象放回对象池,否则销毁此对象
还有几个很重要的属性,_testOnBorrow、_testOnReturn、_testWhileIdle,这些属性的意义是取得、返回对象和空闲时是否进行验证,检查对象是否有效,默认都为false即不验证。所以当使用DBCP时,数据库连接因为某种原因断掉后,再从连接池中取得连接又不进行验证,这时取得的连接实际已经时无效的数据库连接了。网上很多说DBCP的bug应该都是如此吧,只有把这些属性设为true,再提供_validationQuery语句就可以保证数据库连接始终有效了,oracle数据库可以使用SELECT COUNT(*) FROM DUAL,不过DBCP要求_validationQuery语句查询的记录集必须不为空,可能这也可以算一个小小的BUG,其实只要_validationQuery语句执行通过就可以了。
举例:
ObjectPool connectionPool = new GenericObjectPool(null, maxActive,
GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION, maxIdle,maxWait);

ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
"jdbc:jtds:sqlserver://" + hostName +":"+portnum+ "/" + sid,userName,passWord);

((GenericObjectPool)connectionPool).setTestOnBorrow(true);//设置取从连接池取的连接前对连接进行测试,保证断网后连接池能继续运行。

PoolableConnectionFactory poolableConnectionFactory =
new PoolableConnectionFactory(connectionFactory, connectionPool,
null, null, false, true);

poolableConnectionFactory.setValidationQuery("SELECT 1");

分享到:
评论

相关推荐

    weblogic连接池配置数据库断掉重连的问题

    Weblogic 连接池配置数据库断掉重连的问题 在 Weblogic 中,连接池配置数据库断掉重连是一个非常重要的问题。连接池配置是 Weblogic 中的一种机制,用于管理与数据库的连接。然而,在实际应用中,我们经常会遇到...

    Spring Boot 配置MySQL数据库重连的操作方法

    Spring Boot 配置 MySQL 数据库重连的操作方法 Spring Boot 是一个基于 Java 的框架,用于快速构建生产级别的应用程序。在使用 Spring Boot 时,配置 MySQL 数据库连接是一个非常重要的步骤。然而,在实际应用中,...

    Tomcat项目 重连数据库 配置

    web服务 在服务器上运行一段时间后 期间无任何操作 可能会导致与mysql服务的响应超时 其中有两种方案解决 其一就是配置java 服务的重连机制

    Tomcat6连接池配置详解(自动重连)

    本文将详细介绍如何在Tomcat6中配置连接池,并实现数据库连接的自动重连功能。 #### 二、Tomcat6连接池配置 **1. 修改`conf/server.xml`文件** 在Tomcat6中配置连接池的第一步是修改`conf/server.xml`文件,增加...

    java_数据库连接池_c3p0_使用及参数详解_支持重连

    本文档主要介绍了 C3P0 的基本使用方法及其关键参数配置,特别是针对支持数据库重连的功能进行了详细介绍。 #### 单例模式下的 C3P0 实现 在 Java 应用程序中,为了确保数据库连接池的唯一性,通常采用单例模式来...

    Spring boot 数据库连接断线重连问题

    Spring Boot 数据库连接断线重连问题解决方案 Spring Boot 是一个基于 Java 语言的开源框架,它提供了许多功能来帮助开发者快速构建 Web 应用程序。然而,在使用 Spring Boot 连接数据库时,可能会遇到断线重连的...

    基于PB数据库自动连接的设计与实现

    ### 基于PB数据库自动连接的设计与实现 #### 概述 在现代软件开发过程中,数据库连接技术是一项至关重要的内容。特别是在使用PowerBuilder(PB)进行数据库系统开发时,如何高效地实现数据库的自动连接直接影响到...

    数据库断开重连

    ArcGIS Engine进行二次开发时,如果数据库连接断开后,再执行任何操作都没有反应,只能重新启动程序,WorkspaceFactory实现了IWorkspaceFactoryStatus

    KBMMW数据库断线重连DEMO

    KBMMW数据库断线重连DEMO是一个基于Delphi开发的示例程序,它展示了如何在KBMMW(Kite Business Middleware)框架下处理数据库连接中断的情况,并实现自动重连功能。KBMMW是一个用于构建企业级应用的中间件,它提供...

    配置JBOSS自动重链接数据库

    配置JBOSS自动重链接数据库 JBOSS是一种基于Java的应用服务器,它提供了强大的功能来支持企业级应用程序。其中一个重要的功能是数据库连接池管理,通过配置JBOSS的数据库连接池,可以实现自动重链接数据库,从而...

    django数据库自动重连的方法实例

    Django数据库连接超过wait_timeout导致连接丢失时自动重新连接数据库 https://github.com/zhanghaofe…(本地下载) 安装 pip install django_db_reconnect 注意仅支持pymysql,使django使用pymysql需要先安装包并...

    oracle数据库重联及日志输出及配置文件框架

    在这个项目中,我们关注的是Oracle数据库在VC9.0(即Visual Studio 2008)环境下与应用程序的交互,特别是重连机制、日志文件输出以及配置文件的管理。 首先,让我们来探讨“Oracle数据重连”这一核心概念。在实际...

    java异常直连(JAVA连接数据库)

    "异常直连"这个概念可能是指在尝试建立数据库连接时,不通过任何中间层(如ORM框架),而是直接使用JDBC(Java Database Connectivity)API来处理可能出现的异常情况。下面我们将详细探讨Java连接数据库的过程、异常...

    如何实现iFix与关系数据库连接_如何实现iFix与关系数据库连接_

    8. **故障恢复与监控**:配置适当的错误处理机制,如断线重连,以及设置日志记录,以便在出现问题时进行故障排查。 通过以上步骤,iFIX可以无缝地与关系数据库集成,实现数据的实时同步和长期存储。这不仅有利于...

    vb编写的自动连接数据库代码

    在VB(Visual Basic)编程环境中,连接数据库是常见的任务,特别是在开发管理信息系统时。VB提供了多种方式来实现数据库连接,其中最常用的是ADO(ActiveX Data Objects)模型。标题所提及的“vb编写的自动连接...

    sqlyog数据库连接工具

    此外,它还提供了自动重连和断线恢复功能,确保在网络不稳定的情况下仍能保持与数据库的连接。 对于数据库查询和数据操作,SQLyog内置的SQL编辑器功能强大,支持智能代码补全、语法高亮和查询执行计划分析。用户...

    JAVA 建立与断开数据库的连接

    在Java编程中,与数据库建立和断开连接是常见的任务,尤其在开发Web应用程序或数据驱动的应用时。这里我们将深入探讨如何使用Java JDBC(Java Database Connectivity)API来完成这一过程,以及相关的最佳实践。 ...

    Qt 多线程连接数据库——数据库连接池

    * 数据库连接池特点: * 获取连接时不需要了解连接的名字... * 连接断开了后会自动重连 * 当无可用连接时,获取连接的线程会等待一定时间尝试继续获取,直到取到有效连接或者超时返回一个无效的连接 * 关闭连接很简单

    pb数据库的连接信息

    8. **断开和重连**: 应用程序可能需要根据需要断开和重新建立数据库连接,以节省资源或处理网络问题。PB提供了相应的API函数来实现这一功能。 9. **错误处理**: 在处理数据库连接时,必须考虑可能出现的错误,...

Global site tag (gtag.js) - Google Analytics