@oberontrik

Как правильно использовать соединения с базой, получаемые от tomcat'a?

Добрый день!
Я доверил tomcat'y установку подключений к базе.
<resource-ref>
        <res-ref-name>jdbc/TestDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
</resource-ref>

Как я понимаю, tomcat будет поддерживать пул соединений и отдавать их по запросу.
Но мне не до конца понятен "правильный" вариант использования.
Во первых, в какой момент происходит получение коннекта? (2 ил 3 -я строчка?)
InitialContext cxt = new InitialContext();
DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/TestDB");
Connection сonnection = ds.getConnection();

В какой момент нужно "брать" коннект, а в какой его освобождать. (И каким образом его освобождать??)
К примеру стоит ли брать его при инициализации servlet'a и отдавать при разрушении? Или же правильнее будет брать его в момент получения запроса и отдавать после его обработки?
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
DataSource потокобезопасный, его можно получать в процессе инициализации и сохранять в поле. А вот Connection нет и лучше его использовать в пределах одного метода:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try (Connection con = ds.getConnection()) {
        // применяете
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы