Gostaria de saber se há alguma forma de testar se um banco esta ativo antes de iniciar o processo de conexão (uma consulta por exemplo), evitando que a aplicação fique tentando conectar se o banco estiver fora do ar… Estou utilizando JPA+hibernate e banco de dado oracle 7, onde tenho configurado minhas conexões no arquivo persistence.xml e por conta de algumas particularidade do meu ambiente tenho que alterar as conexões via código java dependendo de alguns parâmetros ex:
properties.put("hibernate.connection.url", "jdbc:oracle:thin:@xx.xx.x.xx:1521:P");
properties.put("hibernate.connection.username", "usuario");
properties.put("hibernate.connection.password", "senha");
Ocorre que o banco de dados, fica fora do ar em alguns momentos, e isso prejudica a aplicação que fica tentando conectar sem sucesso. Quando o banco volta a funcionar, verificando a tabela V$SESSION, as sessões das tentativas que não foram bem sucedidas são abertas ao mesmo tempo e ficam lá inativas e sem fechar.
Quando o banco esta funcionando corretamente a sessões abrem e fecham normalmente e tudo funciona da forma correta.
Não gostaria de entrar nos méritos de configuração do banco mas sim evitar que a aplicação ficasse tentando conectar se o banco estiver fora do ar.
Obrigado.