【发布时间】:2015-06-15 01:45:59
【问题描述】:
在我的应用程序中每隔一段时间我都会收到此错误:
ERROR 2015-04-09 08:30:13,724 [http-bio-8080-exec-2] mojo.jdbc.MojoAlertDataAccess: Invalid or Stale Connection found in the Connection Cache
java.sql.SQLException: Invalid or Stale Connection found in the Connection Cache
at oracle.jdbc.pool.OracleImplicitConnectionCache.getConnection(OracleImplicitConnectionCache.java:421)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:395)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:179)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157)
at mojo.jdbc.MojoAlertDataAccess.getAllAlertTypes(MojoAlertDataAccess.java:807)
所以目前我在 Spring 中有一个数据源定义为:
<bean id="globalDSRead" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL" value="${mojo.jdbc.read.url}"/>
<property name="user" value="${mojo.jdbc.read.username}"/>
<property name="password" value="${mojo.jdbc.read.password}"/>
<property name="connectionCacheProperties">
<value>
PropertyCheckInterval:10
MinLimit:1
MaxLimit:200
InitialLimit:1
ConnectionWaitTimeout:30
InactivityTimeout:30
ValidateConnection:true
</value>
</property>
</bean>
据我所知,当应用闲置一段时间后会发生这种情况,但重现起来并不容易。
另外 - 此函数中发生的另一件事是连接的检索可能需要很长时间才能恢复,这通常发生在应用程序长时间处于空闲状态时。
任何人都知道什么可能会被错误配置?
谢谢
【问题讨论】:
-
您的应用程序服务器和数据库服务器之间是否有防火墙,可能会在一段时间(一个小时左右)后丢弃空闲的 TCP 连接?另请参阅此处评分最高的答案:stackoverflow.com/questions/25589694/…
标签: spring oracle jdbc database-connection connection-pooling