Boa noite,
Estou com um problema que não consigo resolver, meu projeto está com Vraptor3 e estou usando o Hibernate e o banco Postgresql.
Quando a aplicação sobe, cria uma conexão com o banco e funciona tudo perfeitamente, mas se, por algum motivo, essa conexão é perdida (eu testo excluindo a conexão no próprio banco na tabela pg_stat_activity), o meu projeto não está identificando que a conexão foi perdida. Faço um session.isOpen() e retorna true.
Criei um interceptor que faz uma query simples (select 1 from tabela) apenas para testar a conexão e, assim consigo verificar que a conexão foi perdida, mas como faço para que a conexão seja recriada?
Seguem alguns códigos:
@Component
public class PersistenciaProcesso extends PersistenciaManager<Processo> implements PersistenciaProcessoDao {
public PersistenciaProcesso(Session session) {
super(session);
}
}
@Component
public abstract class PersistenciaManager<T> {
protected Session session;
private Class<T> entityBeanType;
public PersistenciaManager(Session session) {
this.session = session;
initializer();
}
@SuppressWarnings("unchecked")
private void initializer() {
ParameterizedTypeImpl paramGenerics = (ParameterizedTypeImpl) getClass().getGenericSuperclass();
entityBeanType = (Class<T>) paramGenerics.getActualTypeArguments()[0];
}
}
Abs,
Renato.