栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

java.sql.SQLException:在连接缓存中发现无效或陈旧的连接

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java.sql.SQLException:在连接缓存中发现无效或陈旧的连接

当连接池中的连接不再主动连接到数据库时,将出现“无效或陈旧的连接”错误。以下是几种可能导致这种情况的情况

  1. dba手动从数据库中止连接。例如,如果使用“ ALTER SYSTEM KILL SESSION”终止了连接
  2. 如果连接池中存在连接但未使用很长时间,并且由于数据库强制超时而断开连接(idle_time)
  3. 数据库重启
  4. 网络事件导致连接断开,可能是由于网络不可用或防火墙断开了已打开太长时间的连接。

如果要设置

InactivityTimeout
,则必须确保它小于
IDLE_TIME
数据库强制执行的值。您可以通过
IDLE_TIME
以下查询获取

select * from dba_profiles dp, dba_users duwhere dp.profile = du.profile and du.username ='YOUR_JDBC_USER_NAME';

使用connectionCacheProperties时,请始终确保将

PropertyCheckInterval
属性设置为小于超时的值。默认值为900秒,这意味着高速缓存守护程序线程将仅每15分钟运行一次并强制执行超时。因此,您始终希望将其设置为低于超时属性的值。

我将始终确保使用0作为MinLimit。

稍微重写您的配置文件将使其:

<bean id="dataSource"  destroy-method="close"><property name="connectionCachingEnabled" value="true" /><property name="URL" value="${app.jdbc.url}" /><property name="user" value="${app.jdbc.username}" /><property name="password" value="${app.jdbc.password}" /><property name="connectionCacheProperties">   <props merge="default">    <prop key="MinLimit">0</prop>    <prop key="MaxLimit">200</prop>    <prop key="InitialLimit">1</prop>    <prop key="ConnectionWaitTimeout">120</prop>    <prop key="InactivityTimeout">180</prop>    <prop key="ValidateConnection">true</prop>    <prop key="PropertyCheckInterval">150</prop>   </props>   </property></bean>

当您尝试验证从池中获得的旧连接时,网络实际上已断开时,您也可能会收到“无效或陈旧的连接错误”。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号