Rulio
Maio 21, 2007, 8:33pm
#1
Pessoal alguém já deve ter passado por isso…
Como posso verificar a conexão ativa com um banco de dados ?
Não vale dizer que é fazendo uma consulta… heheheheh
Deve existir algum método, num é possível que ninguém nunca deve ter passado por isso
Quando a conexão com o banco caí, o sistema não é alertado e o pool ainda continua cheio e ninguém consegue logar.
ph_ms
Maio 21, 2007, 8:36pm
#2
nada do tipo:
if(conexao!=null)
antes de fazer alguma transação
???
Cara,
a Classe Connection do package java.sql.Connection tem um método com um retorno boolean que se chama isClosed() , você pode verificar antes de fazer qualquer manipulação da sua base de dados!!..
Qualquer coisa posta ai!!!
Rulio
Maio 21, 2007, 9:14pm
#4
mas o objeto conexao não pode ser utilizado pq pra todos efeitos ele acha que está funcionando, mas a conexão caiu faz tempo
Connection conexao = null;
Iterator iterator = conexoesLivres.iterator();
existeConexaoAtiva();
if(iterator.hasNext()) {
conexao = (Connection)iterator.next();
//verifica se existe uma conexão ativa com o ORACLE
conexoesLivres.remove(conexao);
conexoesOcupadas.add(conexao);
} else {
if(numeroConexoesCriadas < numeroMaximoConexoes) {
String msg = "Thread: " + Thread.currentThread().getName();
msg += " | " + "Conexoes criadas: " + numeroConexoesCriadas;
msg += " | " + "Maximo de Conexoes: " + numeroMaximoConexoes;
System.out.println(msg);
try {
conexao = criarNovaConexao();
numeroConexoesCriadas++;
conexoesOcupadas.add(conexao);
} catch(SQLException e){
throw new PoolConexoesException("Erro ao criar conexao", e);
}
} else {
if(esperar) {
try {
wait();
} catch(InterruptedException e){
throw new PoolConexoesException("Erro na interrupção da Thread.", e);
}
conexao = obterConexao(esperar);
} else {
throw new PoolConexoesException("Não há conexões disponíveis!");
}
}
}
return conexao;
Cara, se quer saber se tem conexão ativa sem manipular o objeto Connection???
meio estranho ein!!! posta o código do método existeConexaoAtiva() ae!!