Falha na autenticação - Queda do servidor de banco

Olá,

Gostaria de saber se alguém já passou pelo mesmo problema. A autenticação no banco de dados na minha aplicação é feita logo no início da execução. O usuário loga e a conexão com o banco é estabelecida. O problema é que, depois de um tempo, se o banco cair e voltar durante a execução do meu programa, ocorre um problema de autenticação no hibernate. Gostaria de saber se há alguma configuração ou solução para este problema (queda e volta do banco).

Grato.

caso a conexao caia, seria bom que vc deslogasse o usuario e o levasse para a tela de login (inicial) da aplicação

qual o erro?

é mysql?

É Microsoft Sql Server.

A mensagem exata do erro eu não tenho agora, posso postar amanhã. Mas a mensagem do hibernate é relacionada à autenticação para se conectar ao banco.

Valeu! Amanhã posto a frase exata.

Boa tarde…

pela descrição do cenário o problema pode estar na sua forma de iniciar a conexão e construção de uma tolerancia a falha.
Veja se entendi o que você está fazendo:

  • inicia sua aplicação
  • conecta-se ao banco de dados
  • sua aplicacao continua aberta
  • reconectar banco de dados
  • erro lançado

Enquanto isto o banco de dados cai e retoma.

Se for isto, sua aplicação deve estar com uma conexão aberta e você deve estar tentando abrir uma noxa conexão, sendo que por esta ser singleton e não ter percebido a queda do SGBD, tentará estabelecer a mesma conexão, causando a falha (já ocorreu isto com um integrante da minha equipe).

Isto ocorre pq o SGBD não avisa nada de queba a Aplicação, é necessário você verificar (inclusive, se o período de tempo seja bem curto, fazendo reestabelecer a conexão antes de operar novamente).

Se entendi errado envia o erro e explica melhor para poder ajudá-lo.

É exatamente esse o cenário…

Não existe alguma opção de configuração do hibernate para ele se reconectar automaticamente?

E no seu caso, como foi feita a verificação da queda do banco?

Grato.

Nos livros que eu li não vi nada sobre reconexão automatica. O que você pode fazer é utilizar um controle por timeout quando o problema no servidor não é critico. Não lembro agora quais as variaveis de conf. do hibernate para isto mas existe.
No nosso caso, utilizavamos um proxy que sempre ao buscar uma sessão verificava se existia conexão e caso não houvesse reconectavamos por exceção.

Talvez não pareça uma solução muito elegante e até acredito que exista outras maneiras pois o Glassfish, Spring e Hibernate são muito poderosos. Mas é dificil encontrar uma boa literatura e as vezes quando encontramos ja estamos em apuros e fica mais dificil ler. É um erro, eu sei, mas é a realidade também.

Vou ver se dou uma lida melhor e se você não encontrar nada eu posto aqui a solução mais elegante.

Olá Pessoal,

Estou com o mesmo problema descrito. Alguém conseguiu resolver? Já fiz várias tentativas e até agora nada! Vi muita gente dizendo que com o C3P0 resolvia, mas configurei aqui e nada.

valeu.