Oracle
 sql >> база данни >  >> RDS >> Oracle

c3p0 виси на getConnection, когато има повреда в мрежата

Сблъсках се със същия проблем. В моя случай това беше причинено от JDBC драйвера, който не беше настроен да изчаква при грешки на сокета. Направих следните допълнения към моя C3P0 ComboPooledDataSource конфигурация:

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 се прилагат, когато C3P0 създаде Connection обект. Тези две свойства по-специално ще доведат до хвърляне на изключение, ако връзката на сокета е неактивна за повече от 30 секунди.

Ако не се свързвате към база данни на Oracle, има подобни свойства за други JDBC драйвери за други доставчици на бази данни. Някои от тях са показани в долната част на тази страница .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подгответе тестови данни на Oracle с blob колона

  2. Как да разрешим java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver по време на изпълнение?

  3. Как да извлека само стойност на датата от полето за дата в Oracle?

  4. Не мога да вмъкна арабски знаци в базата данни на Oracle

  5. скрипт, който изтегля данни от txt файл в клаузата where