Oracle陈旧的连接

时间:2015-04-09 15:30:15

标签: spring oracle jdbc database-connection connection-pooling

我的应用中偶尔出现此错误:

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>

据我所知,当应用程序闲置一段时间时会发生这种情况,但并不是很容易重现。

此外 - 此功能中发生的另一件事是检索连接可能需要很长时间才能回来,这通常发生在应用程序闲置很长时间时。

任何人都有任何想法可能会错误配置?

由于

1 个答案:

答案 0 :(得分:0)

是的,我以前见过。我建议使用Apache DBCP(https://commons.apache.org/proper/commons-dbcp/)进行连接池管理。