You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Dani <mc...@wanadoo.es> on 2003/04/18 15:48:01 UTC

exhausted pool

My connection pool comes exhausted. What's the problem? I'm using mysql.

This is the exception:

java.sql.SQLException: DBCP could not obtain an idle db connection, pool
exhausted


And this is the code I use:

A class OperacionesBD that manages connections and has a method that creates
a connection:

public void getConexion() throws NamingException, SQLException {
 if (conexion == null){
  Context  ctxContexto = null;  // Contexto de conexión
  DataSource  dtsDataSource;  // Conexión jndi
   try

    ctxContexto = new InitialContext();
    dtsDataSource = (DataSource) ctxContexto.lookup ("java:comp/env/jdbc/" +
dataSource);
    conexion = dtsDataSource.getConnection();
   }catch (NamingException e) {
    e.printStackTrace();
    conexion = null;
    throw e;
   }catch (SQLException e){
    e.printStackTrace();
    conexion = null;
    throw e;
   }finally

    if ( ctxContexto != null ){
     try {
      ctxContexto.close();
     }catch(Exception

      exctx.printStackTrace();
     }
    }
   }
 }
}

The connection is closed here:

public void close() throws SQLException {
  if (conexion == null){
   try {
    conexion.close();
   } catch (SQLException e) {
    e.printStackTrace();
    throw e;
   }
  }
}

Here is an example of OperacionesBD using:

public ArrayList getListaPacientes(String dataSource, String select) throws
NamingException, SQLException{
   OperacionesBD conexion = null;
   // retorno de método
   ResultadosBD resultados =  null;
   try {
    conexion = new OperacionesBD(dataSource);
    // Realiza la conexión a la base de datos
    conexion.getConexion();

    // Realiza la consulta que devuelve el resultado en el objeto
ResultadosBD
    resultados =  conexion.getData(select, null);
   }catch(NamingException e){
    System.out.println("ListaUsuariosBean :: Error en nom bre BD" + e);
    throw e;
   }catch (SQLException e) {
    System.out.println("ListaUsuariosBean :: Error sql BD" + e);
    throw e;
   }finally{
    // Cierre de conexión
    try {
     conexion.close();
    }catch(SQLException e){
     System.out.println("ListaUsuariosBean :: Error cerrando conexión a BD"
+ e);
    }catch (Exception e) {
     System.out.println("ListaUsuariosBean :: Error cerrando conexión a BD "
+ e);
    }
    // Convierte el resultado en un arrayList de pacientes
    return resultados.toObjectArray("gsp.struts.bean.PacienteBean");
   }

  }


What's the problem??? Thanks




---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Re: exhausted pool

Posted by Phil Steitz <ph...@steitz.com>.
I think you mean if (connexion != null) below.  You should also set 
conexion = null after the close.

> public void close() throws SQLException {
>   if (conexion == null){
>    try {
>     conexion.close();
>    } catch (SQLException e) {
>     e.printStackTrace();
>     throw e;
>    }
>   }
> }
>


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org