Мы видим ситуации, когда наша база данных соединение из org.apache.commons.dbcp.basicdataSource
умирает с ошибками сокета записи:
com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: socket write error
все последующие попытки написать Конечно, соединение не удается:
com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
после обновления кода, чтобы поймать такие исключения и запрашивать новое соединение, когда это происходит, это Альтену снова. Я правильно подозреваю, что звонить DataSource # GetConnection ()
на самом деле не дает новое соединение каждый раз, когда он называется? Разве это не просто не используемое существующее соединение, которое закрыто?
Если я правильно, какой правильный способ выбросить старое соединение и запросить новый?
Отредактировать: вот еще более заклинание Что я хотел бы знать:
Connection c1, c2;
c1 = DatabaseManager.getConnection();
// c1.close() not called
c2 = DatabaseManager.getConnection();
- это «C1 == C2» истинное утверждение? Или были выделены два соединения? И если это последнее, подобно бы, как это представляет собой «утечку бассейна соединения»:
Connection c1;
c1 = DatabaseManager.getConnection();
// c1.close() not called
c1 = DatabaseManager.getConnection();