Закрытие соединений JDBC в пуле

Наш стандартный раздел кода для использования JDBC - это ...

Connection conn = getConnection(...);
Statement  stmt = conn.conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                ResultSet.CONCUR_READ_ONLY);
ResultSet  rset = stmt.executeQuery (sqlQuery);

// do stuff with rset

rset.close(); stmt.close(); conn.close();

Вопрос 1: При использовании пула соединений нужно ли закрывать соединение в конце? Если да, то не потеряна ли цель объединения? А если нет, как источник данных узнает, когда конкретный экземпляр Connection освобожден и может быть повторно использован? Я немного запутался в этом, любые указатели приветствуются.

Вопрос 2: близок ли следующий метод к стандартному? Похоже на попытку получить соединение из пула, и если DataSource не может быть установлен, используйте старомодный DriverManager. Мы даже не уверены, какая часть выполняется во время выполнения . Повторяя вышеупомянутый вопрос, следует ли закрыть соединение, исходящее из такого метода?

Спасибо, - MS.

synchronized public Connection getConnection (boolean pooledConnection)
                                                        throws SQLException {
        if (pooledConnection) {
                if (ds == null) {
                        try {
                                Context envCtx = (Context)
                                        new InitialContext().lookup("java:comp/env");
                                ds = (DataSource) envCtx.lookup("jdbc/NamedInTomcat");
                                return ds.getConnection();
                        } catch (NamingException e) {
                                e.printStackTrace();
                }}
                return (ds == null) ? getConnection (false) : ds.getConnection();
        }
        return DriverManager.getConnection(
                "jdbc:mysql://"+ipaddy+":"+dbPort +"/" + dbName, uName, pWord);
}

Редактировать: Я думаю, мы получаем объединенное соединение, так как мы не видим трассировку стека.

104
задан Eyal 9 May 2013 в 11:53
поделиться