Pessoal estou tentando um pequeno problema no meu pool de conexão.
É o seguinte:
Quando iniciamos pela primeira vez o programa, é criada 20 conexões e ficam lá a espera…
O Problema surge quando o servidor cai, ou por motivos de energia ou qualquer um outro…
Como posso verificar se existe uma conexão ativa com o banco, pq caso não exista tenho que limpar todas as variaveis e criar a conexão outra vez. Infelizmente isso não está acontecendo e não consigo fazer login na aplicação.
JAVA / ORACLE
Aqui está o código:
public synchronized Connection obterConexao( boolean esperar) throws PoolConexoesException{
Connection conexao = null;
Iterator iterator = conexoesLivres.iterator();
if(iterator.hasNext()) {
conexao = (Connection)iterator.next();
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;
}
