同じ問題が発生しました。私の場合、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
を作成するときに適用されます。 物体。特にこれらの2つのプロパティにより、ソケット接続が30秒を超えて非アクティブになると、例外がスローされます。
Oracleデータベースに接続していない場合は、他のデータベースベンダーの他のJDBCドライバにも同様のプロパティがあります。それらのいくつかは、このページ 。