Tôi gặp phải vấn đề tương tự. Trong trường hợp của tôi, nguyên nhân là do trình điều khiển JDBC không được thiết lập để hết thời gian chờ khi lỗi ổ cắm. Tôi đã thực hiện các bổ sung sau vào C3P0 ComboPooledDataSource
của mình cấu hình:
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);
//--------------------------------------------------------------------------------------
...
Các thuộc tính trình điều khiển Oracle được áp dụng khi C3P0 tạo Connection
sự vật. Đặc biệt, hai thuộc tính này sẽ gây ra một ngoại lệ nếu kết nối ổ cắm không hoạt động trong hơn 30 giây.
Nếu bạn không kết nối với cơ sở dữ liệu Oracle, có các thuộc tính tương tự cho các trình điều khiển JDBC khác cho các nhà cung cấp cơ sở dữ liệu khác. Một số trong số chúng được hiển thị gần cuối trang này .