首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >终止Spring连接

终止Spring连接
EN

Stack Overflow用户
提问于 2016-04-15 17:30:22
回答 2查看 757关注 0票数 0

我有一个应用程序,其中DB连接是由Spring配置创建的(然后传递给hibernate)。以下是春季文件中的默认参数。

代码语言:javascript
复制
<bean id="localDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName">
    <value>${database.driver}</value>
    </property>
    <property name="url">
    <value>${dbUrl}</value>
    </property>
    <property name="username">
    <value>${dbUser}</value>
    </property>
    <property name="password">
    <value>${dbPassword}</value>
    </property>
</bean>

但是,在特定环境中,Oracle DB连接在一定时间后会被网络设置关闭。我们最初认为连接的关闭是因为连接处于空闲状态。我们添加了validationQuery,以便定期在服务器上发布一个查询,这样连接就不会空闲。

代码语言:javascript
复制
<bean id="localDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName">
    <value>${database.driver}</value>
    </property>
    <property name="url">
    <value>$dbUrl</value>
    </property>
    <property name="username">
    <value>$dbUser</value>
    </property>
    <property name="password">
    <value>$dbPassword</value>
    </property>
    <property name="validationQuery">
    <value>SELECT 1 FROM dual</value>
    </property>
    <property name="testWhileIdle">
    <value>true</value>
    </property>
    <property name="testOnReturn">
    <value>true</value>
    </property>
    <property name="timeBetweenEvictionRunsMillis">
    <value>1000</value>
    </property>
</bean>
  1. 即使在上述设置之后,连接仍在关闭。
  2. 还注意到,当应用程序空闲2-3个小时(不同)时,验证查询将停止在服务器上执行,然后网络设置将关闭连接。

我的问题是,添加validationQuery是否保证连接不是空闲的?应用程序在第一次登录尝试中失败,没有抛出任何DB连接;但是在2-3次尝试之后才能工作。不知道这里发生了什么。

EN

回答 2

Stack Overflow用户

发布于 2016-04-15 20:01:50

validationQuery仅用于测试从连接池检索到的连接。请参阅:https://commons.apache.org/proper/commons-dbcp/configuration.html

此外,我还看到了org.apache.commons.dbcp.BasicDataSource和甲骨文(11和12)的一些奇怪行为。与org.apache.tomcat.dbcp.dbcp.BasicDataSource相比,我们的稳定性要好得多。配置选项非常接近(可能相同吗?)对于commons实现,因此转换是一个简单的过程。

票数 1
EN

Stack Overflow用户

发布于 2016-04-15 21:40:08

另外,C3P0连接池库比DBCP要好得多。我在过去一直有问题与DBCP,自从切换到C3P0至今没有任何问题..。

http://www.mchange.com/projects/c3p0/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36653424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档