首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle UCP重新连接选项

Oracle UCP重新连接选项
EN

Stack Overflow用户
提问于 2013-10-17 08:15:16
回答 1查看 2.1K关注 0票数 2

我们有以下用于Oracle UCP的spring bean配置。出于某种原因,如果数据库被退回,那么池应该会自动重新建立连接,而不需要重新启动我的the服务器。看起来下面的bean配置不起作用。我的意思是,连接池的连接不是用新连接验证的。有人能检查一下bean的配置并提供重新连接的建议/选项吗?

代码语言:javascript
复制
<bean id="jpaDataSource" class="oracle.ucp.jdbc.PoolDataSourceFactory"
    factory-method="getPoolDataSource">
    <property name="URL" value="${app.jdbc.url}" />
    <property name="user" value="${app.jdbc.username}" />
    <property name="password" ref="password"/>
    <property name="connectionFactoryClassName" value="oracle.jdbc.pool.OracleDataSource" />
    <property name="connectionPoolName" value="SVC_POOL" />
    <property name="minPoolSize" value="1" />
    <property name="maxPoolSize" value="5" />
    <property name="initialPoolSize" value="1" />
    <property name="validateConnectionOnBorrow" value="true"/>
    <property name="inactiveConnectionTimeout" value="120"/>
</bean>

使用上面的配置,在DB重启后,我得到了以下异常:

代码语言:javascript
复制
Caused by: org.hibernate.TransactionException: JDBC rollback failed
        at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:200)
        at org.hibernate.ejb.TransactionImpl.rollback(TransactionImpl.java:107)
        ... 61 more
Caused by: java.sql.SQLRecoverableException: Closed Connection
        at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3921)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at oracle.ucp.jdbc.proxy.JDBCConnectionProxyFactory.invoke(JDBCConnectionProxyFactory.java:274)
        at com.sun.proxy.$Proxy24.rollback(Unknown Source)
        at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:213)
        at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:192)

编辑:

我在新的机器上尝试了同样的配置,它工作得很完美。在我的一台机器(我正在使用maven tomcat:run goal来运行作业)中,我不确定这个异常。

EN

回答 1

Stack Overflow用户

发布于 2013-10-25 02:07:30

尽管这里的文档http://docs.oracle.com/cd/E11882_01/java.112/e12265/connect.htm#CHDIDJGH说oracle会执行内部ping来检查数据库,但您是否尝试通过设置sql setSQLForValidateConnection(字符串)

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

https://stackoverflow.com/questions/19416134

复制
相关文章

相似问题

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