您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

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

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

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" 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>

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

SQLServer 2022/1/1 18:15:34 有426人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶