You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by se...@bb.com.br on 2002/12/27 23:00:37 UTC

How to Pooling preparedStatements

Hi,

 I am using the dbcp package to pool my connections in our intranet.
 It works very, very well with regular statements but i can't do it work
with preparedStatements.
Below is the method that i use. When i try to get a prepStatement i receive
this:

"Connection is closed".

Where is the mistake?

Thanks,

Sérgio Bonifácio.

public DataSource setupDataSource(DBAlias alias)throws Exception {

     GenericObjectPool connectionPool = new GenericObjectPool(null);
     connectionPool.setMaxActive(alias.getMaxConexoesSimultaneas());
     connectionPool.setMaxIdle(alias.getMaxConexoesOciosas());

     //classe para possibilitar o uso de preparedStatements pelo pool
     StackKeyedObjectPoolFactory stmPoolFactory = new
StackKeyedObjectPoolFactory();

     ConnectionFactory connectionFactory =
          new DriverManagerConnectionFactory(
                         alias.getURIConexao(),
                         alias.getUser(),
                         alias.getSenha());

     PoolableConnectionFactory poolableConnectionFactory =
          new PoolableConnectionFactory(
                         connectionFactory,
                         connectionPool,
                         stmPoolFactory,
                         null,
                         false,
                         true);


     //obtem o data source do objectPool
     PoolingDataSource dataSource =      new
PoolingDataSource(connectionPool);

     System.out.println("Pool "+alias.getNomeAlias()+" configurado:");
     System.out.println("maximo de conexoes ativas: "+
alias.getMaxConexoesSimultaneas());
     System.out.println("maximo de conexoes ociosas: "
+alias.getMaxConexoesOciosas());

     return dataSource;

}