Problema com método doFilter

1 resposta
erikamilhomem

Estou debugando meu código e descobri que do no método doFilter tem algum problema exatamente
No bloco try do método na linha chain.doFilter(servletRequest, servletResponse);
ela não é executada de forma alguma quando o debug chega na linha antereior(this.sessionFactory.getCurrentSession().beginTransaction();)
tudo certo, é executado, mas não passa disso.

Me ajudem por favor

public class ConexaoHibernateFilter implements Filter {

	private SessionFactory sessionFactory;

	// executado somente quando o aplicativo web é colocado no ar.
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		this.sessionFactory = HibernateUtil.getSessionFactory();

	}

	// interceptação requisição web
	@Override
	public void doFilter(ServletRequest servletRequest,
			ServletResponse servletResponse, FilterChain chain)
			throws ServletException {
		try {
			this.sessionFactory.getCurrentSession().beginTransaction();
			chain.doFilter(servletRequest, servletResponse);
			this.sessionFactory.getCurrentSession().getTransaction().commit();
			this.sessionFactory.getCurrentSession().close();

		} catch (Exception ex) {
			try {
				if (this.sessionFactory.getCurrentSession().getTransaction()
						.isActive()) {
					this.sessionFactory.getCurrentSession().getTransaction()
							.rollback();
				}

			} catch (Throwable t) {
				t.printStackTrace();
			}
			throw new ServletException(ex);
		}

	}

	// executado quando o aplicativo web é destivado do servidor
	@Override
	public void destroy() {

	}

}

1 Resposta

E

Ola, pelo que estou vendo o problema no seu código é que vc abre uma session somente no init() e a fecha no doFilter(), como vc mesmo disse o init() somente é executado uma vez, então quando vc abrir a primeira página logo que sua aplicação é colocada no ar tudo vai funcionar, mas nas página seguintes o doFilter() vai tentar usar uma session que está fechada,
Para corrigir esse erro vc tem que abrir uma session no doFilter().

Criado 20 de abril de 2013
Ultima resposta 5 de jun. de 2013
Respostas 1
Participantes 2