Хикари: 2.4.7Жизненный цикл соединения JDBC для пула соединений (Хикари) повторное
PostgreSQL JDBC драйвера: 9.4-1201-jdbc41
Я пытаюсь понять, что должно быть сделано для java.sql.Connection
объекта для он будет снова доступен в пуле соединений ?
Я только что представил подключение к многопоточному приложению, которое было , ранее вставая/разрывая соединения с каждым оператором SQL.
То, что я заметил, после введения Хикари, является то, что как только я ударил maximumPoolSize
каждую попытку после этого HikariDataSource.getConnection
потерпит неудачу из-за connectionTimeout
. Поэтому мне кажется, что я как-то не «освобождаю» это подключение.
Типичное использование Connection
объекта:
# omits Exception handling, parameter substitution, result evaluation.
PreparedStatement preparedStatement = hikariDataSource.getConnection().prepareStatement(sql);
preparedStatement.executeQuery();
preparedStatement.close();
Есть ли что-нибудь еще, что, как ожидается, будет сделано в связи с этим, чтобы получить его право на повторное использование в пуле соединений?
Autocommit
есть. Connection.close()
, если не делать что-то особенное, если оно представлено Хикари, похоже на то, чего я хотел избежать.
Спасибо за быстрый ответ. Выбрал [источник] (https://github.com/brettwooldridge/HikariCP/blob/dev/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java#L228) и выглядит так: ваше утверждение on - Я вижу поведение рециркуляции, происходящее в 'Connection.close' и' PoolEntry.recycle() '. Отдаст ему трещину и вернется с первыми и зелеными клещами. – markdsievers
Или лучше: используйте try-with-resources –