sql >> Database >  >> RDS >> Oracle

c3p0 loopt vast bij getConnection wanneer er een netwerkfout is

Ik kwam hetzelfde probleem tegen. In mijn geval werd dit veroorzaakt doordat het JDBC-stuurprogramma niet was ingesteld op een time-out bij socketfouten. Ik heb de volgende toevoegingen gedaan aan mijn C3P0 ComboPooledDataSource configuratie:

cpds = new ComboPooledDataSource();
...

//--------------------------------------------------------------------------------------
// NOTE: Once you decide to use cpds.setProperties() to set some connection properties,
//       all properties must be set, including user/password, otherwise an exception
//       will be thrown
Properties prop = new Properties();
prop.setProperty("oracle.net.CONNECT_TIMEOUT",
    Integer.toString(JDBC_CONNECTION_TIMEOUT_IN_MILLISECONDS));
prop.setProperty("oracle.jdbc.ReadTimeout",
    Integer.toString(JDBC_SOCKET_TIMEOUT_IN_MILLISECONDS));
prop.setProperty("user", username);
prop.setProperty("password", password);
cpds.setProperties(prop);
//--------------------------------------------------------------------------------------

...

De eigenschappen van het Oracle-stuurprogramma worden toegepast wanneer C3P0 de Connection maakt object. Met name deze twee eigenschappen zorgen ervoor dat er een uitzondering wordt gegenereerd als de socketverbinding langer dan 30 seconden inactief is.

Als u geen verbinding maakt met een Oracle-database, zijn er vergelijkbare eigenschappen voor andere JDBC-stuurprogramma's voor andere databaseleveranciers. Sommigen van hen worden weergegeven onderaan deze pagina .




  1. PHP Postgres:laatste invoeg-ID ophalen

  2. mysql - enige manier om te helpen zoeken in volledige tekst met een andere index?

  3. Ontdekking en classificatie van SQL-gegevens

  4. Hoe exporteer ik alle gegevens van een tabel naar een invoegbaar sql-formaat?