Fa ai galera, estou implementando um pool de conexão com o C3P0 para evitar de conectar toda hora, mas não está pegando uma unica conexão, ele conecta toda hora com tempo comum, dando continuidade ao problema de conexão:
Utilizei o timemillis para calcular o tempo de conexão na console:
Sistema OK! - Conectado
Tempo: 2911
Conexão Fechada
Conexão Fechada
INSERT: 0-6, -1
22/01/2012 13:16:21 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
INFO: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge0yt8l1nta9i4d2cft|f47bf5, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge0yt8l1nta9i4d2cft|f47bf5, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://meuhost.com.br/bd, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 5, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
Sistema OK! - Conectado
Tempo: 2992
Conexão Fechada[/code]
Ele repete isso em todas as conexões que faço, ou seja não está aproveitando a conexão existente
minha classe de conexão do pool é:
[code]package dao;
import java.beans.PropertyVetoException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import Administrador.DadosConn;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DaoConexao {
private Properties props;
ComboPooledDataSource cpds;
public DaoConexao() {
this.configurarDataSourceRAC();
}
private void configurarDataSourceRAC() {
cpds = new ComboPooledDataSource();
try {
DadosConn d = new DadosConn();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl(d.getUrl());
cpds.setUser(d.getUsuario());
cpds.setPassword(d.getSenha());
cpds.setMinPoolSize (1);
cpds.setAcquireIncrement (5);
cpds.setMaxPoolSize (5);
} catch (PropertyVetoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConexaoRAC(){
try{
return cpds.getConnection();
}catch (SQLException sqle){
sqle.printStackTrace();
return null;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
public static void liberarRecursosBD(ResultSet rs, Statement ps, Connection conn){
try{
if (ps != null)
ps.close();
if (rs != null)
rs.close();
if (conn != null)
conn.close();
}catch (SQLException sqle){
sqle.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}
}
E para pegar uma nova conexão eu faço assim:
con = daoConexao.getConexaoRAC();
O que pode esta havendo de errado?
A configuração do ComboPooledDataSource esta errada? ou pode ser melhorada?