Pool de Conexão por favor!

Pessoal, já pesquisei em tudo quanto é lugar, e por ser algo que todos devem utilizar gostaria de saber se alguém tem um exemplo de pool de conexões com Tomcat/Firebird eu fiz uma classe para conexão pegando os dados do Data Source, mas e agora???
Abaixo minha classe:

import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import javax.servlet.*;

public class DBConnBean
{
   public static Connection getConnection( ServletContext context )
   {
      Connection conn = null;

      try
      {
         String datasource = context.getInitParameter( "datasource" );
         InitialContext ic = new InitialContext();
         DataSource ds = (DataSource)ic.lookup( datasource );

         if ( ds != null )
            conn = ds.getConnection();
         else
         {
            try
            {
               String driverClass = context.getInitParameter( "driverClass" );
               String urlConnection = context.getInitParameter( "urlConnection" );
               String username = context.getInitParameter( "username" );
               String password = context.getInitParameter( "password" );

               DriverManager.registerDriver( (Driver)Class.forName( driverClass ).newInstance() );
               conn = DriverManager.getConnection( urlConnection, username, password );
               
            } catch ( ClassNotFoundException cnfex ) {
               System.out.println("ClassNotFoundException ocorreu ao criar uma conexao" +
                                  " a partir dos parametros iniciais da aplicacao: " + cnfex.getMessage() );
               cnfex.printStackTrace();
            } catch ( IllegalAccessException iaex ) {
               System.out.println("IllegalAccessException ocorreu ao criar uma conexao" +
                                  " a partir dos parametros iniciais da aplicacao: " + iaex.getMessage() );
               iaex.printStackTrace();
            } catch ( InstantiationException iex ) {
               System.out.println("InstantiationException ocorreu ao criar uma conexao" +
                                  " a partir dos parametros iniciais da aplicacao: " + iex.getMessage() );
               iex.printStackTrace();
            }
         }
      } catch (NamingException nex) {
         System.out.println("NamingException ocorreu ao criar uma conexao: " + nex.getMessage() );
         nex.printStackTrace();
      } catch (SQLException sqlex) {
         System.out.println("SQLException ocorreu ao criar uma conexao:" + sqlex.getMessage() );
         sqlex.printStackTrace();
      }
      if (conn == null)
         throw new RuntimeException("Nao foi aberta a conexao com o bando de dados!!!");
      return conn;
   }
}   

E seu datasource, você criou?
E qual o problema exatamente que você está encontrando?

eu criei o DataSource corretamente, e a conexão com o Banco é efetuada com sucesso, minha dúvida é eu estou utilizando um pool ou estou toda hora abrindo e fechando conexões com o banco de dados? Se estiver utilizando um pool, está é a melhor forma?

Cê tá fazendo é uma tremenda bagunça.
Quando você faz:

conn = ds.getConnection();

Você já está alocando uma conexão do pool. Pra que você está fazendo tudo novamente naquele bloco try?

não conheço muito sobre isso, mais procure pelo

c3p0! Ele serve para controlar o Pool de conexões!

Talvez te ajude!
Se eu tiver atrapalhando,me desculpe!

Abraços!
Thiago

O driver do Firebird, Jaybird, já tem um pool de conexões, veja a documentação em:

http://jaybirdwiki.firebirdsql.org/config/Configuration

Ou diretamente em:

http://jaybirdwiki.firebirdsql.org/config/connection_pool.html

Boa sorte…

se vc estiver usando o jayBird para conexao com o BDuse isto…

import org.firebird.pool.*;

abraços