Pool de Conexão por favor!

6 respostas
santoro

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

6 Respostas

Rafael_Nunes

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

santoro

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?

Rafael_Nunes

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?

Thiago_Senna

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

carloca

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…

T

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

import org.firebird.pool.*;

abraços

Criado 12 de maio de 2005
Ultima resposta 21 de nov. de 2007
Respostas 6
Participantes 5