Tenho uma aplicação que trabalha com dois bancos, um local e um remoto…
Usando o Hibernate , a idéia é…
*Se banco remoto está funcionando, utiliza banco remoto
*Senão utiliza banco local
*Assim que conexão com banco remoto voltar, utilizar banco remoto
Para isso criei dois sessionFactory…um remoto e um para o banco local…
No hibernateUtil, tenho um método chamado getSession() que deve seguir as regrinhas que citei acima
public static Session getSession() {
try{
Session session = sessionFactoryBancoRemoto.openSession();
if (session.isConnected())
return session;
else{
session = null;
return sessionFactoryBancoLocal.openSession();
}
}catch(Exception ex){
return sessionFactoryBancoLocal.openSession();
}
}
O problema é que mesmo que eu derrube o servidor de banco de dados, ele sempre retorna true na compração “session.isConnected()”, portanto sempre retornará a conexão do banco remoto, mesmo não estando conectado a ele
Tentei fazer com socket, como sujerido em outros tópicos daqui, mas daí ele somente verificaria se a máquina está ativa e não necessariamente se o servidor está funcionando… também daria pra fazer criando uma conexão manualmente, mas daí a cada vez que acessar o banco, ele criaria uma nova conexão…perdendo desempenho na aplicação…
Não teria uma maneira de verificar se a conexão está ativa pelo sessionFactory ou pela sessão em si?