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

c3p0 hænger på getConnection, når der er en netværksfejl

Jeg stødte på det samme problem. I mit tilfælde var det forårsaget af, at JDBC-driveren ikke blev sat op til timeout ved socketfejl. Jeg lavede følgende tilføjelser til min C3P0 ComboPooledDataSource konfiguration:

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);
//--------------------------------------------------------------------------------------

...

Oracle-driveregenskaberne anvendes, når C3P0 opretter Connection objekt. Disse to egenskaber vil især medføre, at en undtagelse bliver kastet, hvis stikforbindelsen er inaktiv i mere end 30 sekunder.

Hvis du ikke opretter forbindelse til en Oracle-database, er der lignende egenskaber for andre JDBC-drivere for andre databaseleverandører. Nogle af dem er vist nær bunden af ​​denne side .




  1. forståelse af Java JDBC-fejl

  2. SSIS kan ikke gemme pakker og genstarter Visual Studio

  3. MySql PHP vælg antal forskellige værdier fra kommaseparerede data (tags)

  4. SQL Server-systemdatabaser – Gendan systemdatabaser