sql >> Database teknologi >  >> RDS >> Oracle

java.sql.SQLRecoverableException - genopret forbindelse fra jdbc

Det ser ud til, at forbindelsen afbrydes af en firewall eller anden aktivitet. Vi har stået over for et lignende problem, hvor databasen afsluttede forbindelserne, som var inaktive i 30 minutter.

For at løse problemet har vi justeret databasepuljen ved at angive følgende egenskaber

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.

Gengivelse af problemet vil kræve at afbryde forbindelsen på databasesiden. Vi har udført en lille test ved hjælp af mssql, hvor vi kan afslutte forbindelsen ved hjælp af serverværktøjerne, og puljen var ved at etablere forbindelsen igen.

<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>

Bemærk, at tidenBetweenEvictionRunsMillis er i millisonds.

Ovenstående konfiguration kontrollerer den ugyldige forbindelse og fjerner dem fra puljen, hvis de pludselig lukkes af databasen eller firewallen.




  1. hvordan ændres Python-versionen brugt af plpython på Mac OSX?

  2. Sådan eksporteres resultaterne af en forespørgsel ved hjælp af MySQL Workbench

  3. Datarevision i NHibernate og SqlServer

  4. Håndtering af langsomme forespørgsler med PostgreSQL