Bom dia Pessoal. Preciso de uma Ajuda da Comunidade.
A vários meses tenho um problema referente Pool de Conexão: Tomcat 6.0 + Oracle 10g. Pelo menos três ao dia o Tomcat apresenta a seguinte mensagem:
Pool Connection: Cannot get a connection, pool error Timeout waiting for idle object
Neste caso, sou obrigado a reiniciar o TOMCAT. Já revisei as classes e todas as conexões são abertas e fechadas.
Meu context.xml está configurado da seguinte maneira:
<Context>
<Resource
name="jdbc/bdzen"
type="javax.sql.DataSource"
username="USUÁRIO DO BANCO"
password="SENHA DO BANCO"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@192.168.4.10:1521:f3ipro"
maxActive="30"
maxIdle="8"
maxWait="6000"/>
</Context>
EXEMPLO DE MÉTODO:
public Vector leMontadoras() {
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
Vector v = new Vector();
try {
[b]con = BDPoolConexaoZen.conectar();[/b]
String sql = "select codigo, descricao from cat_montadora order by descricao";
stmt = con.prepareStatement(sql);
rs = stmt.executeQuery(sql);
while (rs.next()) {
v.add(rs.getString(1));
v.add(rs.getString(2));
}
} catch (Exception e) {
System.err.println("Erro Repositorio.leMontadoras..."+e.getMessage());
} finally {
try { if (rs != null) { rs.close(); }} catch (SQLException e) { }
try { if (stmt != null) { stmt.close();}} catch (SQLException e) { }
[b] try { if (con != null) { con.close();}} catch (SQLException e) { }[/b]
}
return v;
}
EXEMPLO DO MÉTODO POOL CONEXAO:
public class BDPoolConexaoZen {
public BDPoolConexaoZen() { }
public static Connection conectar() {
PreparedStatement stmt = null;
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/bdzen");
Connection con = ds.getConnection();
return con;
} catch(Exception e) {
System.err.println("Erro ao Conectar no Pool Connection: "+e.getMessage());
}
return null;
}
Conto com a Ajuda de Todos.
Abraços e Obrigado
Renato