2013-10-17 15 views
0

Oracle UCP에 대해 다음과 같은 스프링 빈 구성이 있습니다. 어떤 이유로 DB가 바운스되면 풀은 자동으로 웹 서버를 다시 시작하지 않고 연결을 다시 설정해야합니다. 아래의 빈 설정이 작동하지 않는 것처럼 보입니다. 연결 풀의 연결이 새 연결로 유효성 검사되지 않습니다. 어떤 사람은 빈 설정을 검토하고 제안/옵션을 제공하여 다시 연결 할 수 있습니까? 위의 설정으로 Oracle UCP 재 연결 옵션

<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 다시 시작한 후 다음과 같은 예외를 얻을 :

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을 사용하여 작업을 실행하는 목표 실행).

답변

0

여기에 문서 http://docs.oracle.com/cd/E11882_01/java.112/e12265/connect.htm#CHDIDJGH는 오라클 데이터베이스, 당신은 우리가 setSQLForValidateConnection를 통해 SQL을 (설정해야합니다 생각하지 않습니다는 SQL setSQLForValidateConnection (문자열)

+0

를 설정하려고 않은 경우 내부 ping이 확인 않는다고하지만 끈). 기본적으로 'validateConnectionOnBorrow'속성은 해당 쿼리를 내부적으로 처리합니다. 의견을 보내 주셔서 감사합니다. – Raghu