Saya mengalami masalah yang sama. Dalam kasus saya, itu disebabkan oleh driver JDBC yang tidak disetel ke batas waktu pada kegagalan soket. Saya membuat tambahan berikut pada ComboPooledDataSource
C3P0 saya konfigurasi:
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);
//--------------------------------------------------------------------------------------
...
Properti driver Oracle diterapkan ketika C3P0 membuat Connection
obyek. Kedua properti ini secara khusus akan menyebabkan pengecualian dilempar jika koneksi soket tidak aktif selama lebih dari 30 detik.
Jika Anda tidak terhubung ke database Oracle, ada properti serupa untuk driver JDBC lain untuk vendor database lainnya. Beberapa dari mereka ditampilkan di dekat bagian bawah halaman ini .