HibernateSessionFilter

0 respostas
elugo

Bom dia, Tenho em minha aplicação a seguinte implementação do HibernateSessionFilter:

package br.com.fitness.util;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class HibernateSessionFilter implements Filter{

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HibernateUtil.openSession();
		try {
		HibernateUtil.currentSession().beginTransaction();
		chain.doFilter(request, response);
		HibernateUtil.currentSession().getTransaction().commit();
		} catch (Exception e) {
			throw new ServletException(e);
		} finally {
			HibernateUtil.closeCurrentSession();
		}
	}
	
	public void init(FilterConfig ftConfig) throws ServletException {
		
	}
	
	public void destroy() {
		
	}
}

minha aplicação está executando perfeitamente!! mas…
quando o usuário deixa a aplicação executando mas não acessa por mais de 3 horas ocorre erro!!!

tenho uma classe que implementa PhaseListener, que é responsável em verificar se o usuário está logado e se a sessão expirou…
Se eu deixar minha aplicação executando por aproximadamente 1 hora sem interação com o usuário e logo após tentar acessar alguma
funcionalidade, o sistema redireciona o usuário para tela de login!! como era esperado!!!
mas se este tempo for maior, ocorre um erro acusando a linha chain.doFilter(request, response);
na classe HibernateSessionFilter

é como se a sessão do banco de dados houvesse expirado!!
Alguém já passou por algo semelhante?

Criado 24 de maio de 2010
Respostas 0
Participantes 1