La fermeture de Connexions JDBC dans la Piscine

Notre standard section de code pour l'utilisation de JDBC est...

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();

Question 1: Lors de l'utilisation d'un Pool de Connexion, doit-on fermer la Connexion à la fin? Si oui, n'est-ce pas le but de la mise en commun perdu? Et si non, en quoi la source de données de savoir quand une instance particulière de la Connexion est libérée et peut être réutilisé? Je suis un peu confus sur ce point, tous les pointeurs apprécié.

Question 2: la méthode suivante tout proche du standard? Ressemble à une tentative pour obtenir une connexion à partir de la piscine, et si la source de données ne peut pas être établie, l'utilisation de l'ancienne, DriverManager. Nous ne sommes même pas sûrs de la pièce qui est arriver exécutée au moment de l'exécution.
Répéter la question ci-dessus, doit-on fermer la Connexion en sortant d'une telle méthode?

Je vous remercie, MME

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);
}

Edit: je pense que nous sommes les pools de connexion, car nous ne voyons pas une trace de la pile.