sql >> Databáze >  >> RDS >> Oracle

java.sql.SQLRecoverableException - opětovné připojení z jdbc

Zdá se, že připojení je přerušeno nějakým firewallem nebo jinou aktivitou. Setkali jsme se s podobným problémem, kdy databáze ukončovala připojení, která byla 30 minut nečinná.

Abychom tento problém překonali, vyladili jsme databázový fond zadáním následujících vlastností

testOnBorrow:-Setting it true will force the pooling provider to run the validation query while handing out the connection to the application.
testWhileIdle:-Setting it true will enable the validation when the connection is sitting idle in the pool.
timeBetweenEvictionRunsMillis:- Setting this property to non-zero will allow the evictor thread to run,which will test the idle connections.

Reprodukce problému bude vyžadovat ukončení připojení na straně databáze. Provedli jsme malý test pomocí mssql, ve kterém můžeme ukončit připojení pomocí Server Tools a fond znovu navazoval připojení.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${myjdbc.driverClassName}" />
    <property name="url" value="${myjdbc.url}" />
    <property name="username" value="${myjdbc.username}" />
    <property name="password" value="${myjdbc.password}" />
    <property name="testOnBorrow" value="true" />
    <property name="testWhileIdle" value="true" />
    <property name="timeBetweenEvictionRunsMillis" value="3000" />
</bean>

Všimněte si, že časBetweenEvictionRunsMillis je v milionech.

Výše uvedená konfigurace zkontroluje neplatné připojení a zruší je z fondu, pokud jsou náhle uzavřena databází nebo firewallem.




  1. Jak nastavím vybranou položku v rozevíracím seznamu

  2. Jak Magento klíčuje skupinu produktů k produktu v databázi

  3. Jak získat poslední den v měsíci z daného data?

  4. Existuje ekvivalent sp_getapplock, sp_releaseapplock v oracle