Napotkałem ten sam problem. W moim przypadku było to spowodowane tym, że sterownik JDBC nie był ustawiony na przekroczenie limitu czasu w przypadku awarii gniazda. Wprowadziłem następujące dodatki do mojego ComboPooledDataSource
C3P0:konfiguracja:
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);
//--------------------------------------------------------------------------------------
...
Właściwości sterownika Oracle są stosowane, gdy C3P0 tworzy Connection
obiekt. W szczególności te dwie właściwości spowodują zgłoszenie wyjątku, jeśli połączenie z gniazdem będzie nieaktywne przez ponad 30 sekund.
Jeśli nie łączysz się z bazą danych Oracle, istnieją podobne właściwości dla innych sterowników JDBC dla innych dostawców baz danych. Niektóre z nich są pokazane u dołu ta strona .