Galera montei um pool de conexão no tomcat, ejá consegui usa-lo, minha duvida é qual a maneira correta de utilizar este pool, eu fiz da seguinte forma:
public static ResultSet consultar(String sql) {//executa consultas de sql
try {
ic = new InitialContext();
dats = (DataSource) ic.lookup("java:/comp/env/banco");
c = dats.getConnection();
Statement st = c.createStatement();
ResultSet res = st.executeQuery(sql);
return (res);
} catch (Exception e) {
System.err.print(e.getMessage());
System.err.print("erro execução sql");
}
return null;
}
mas vi que toda vez que eu fazia uma consulta uma conexão era aberta, assim estourando o numero limite de conexões.
Ai fiz da seguinte forma:
public static ResultSet consultar(String sql) {//executa consultas de sql
try {
if (c == null || c.isClosed()) {
ic = new InitialContext();
dats = (DataSource) ic.lookup("java:/comp/env/banco");
c = dats.getConnection();
}
Statement st = c.createStatement();
ResultSet res = st.executeQuery(sql);
return (res);
} catch (Exception e) {
System.err.print(e.getMessage());
System.err.print("erro execução sql");
}
return null;
}
Mas desta forma, as vezes depois de muito tempo de inatividade do pagina, a conexão com o banco é fechada, quando tento novamente acessa-la da o erro de que o banco não esta conectado, ai tento mais uma vez e entra, ou seja na primeira tentativa ele faz a conexão e gera a mensagem de erro, mas na segunda tentativa funciona corretamente, e outro problema desta forma é que vai gerar uma unica conexão para todos os pedidos, gostaria da opinião de vcs pra saber a melhor forma de se fazer isso.
Obrigado!