Senhores, sou iniciante e to com esse impasse para configuração da persistencia utilizando filter, coloquei alguns flags e o código corre normalmente, porém sempre lança a exceção erro HTTP 500. Se alguem puder ajudar com o erro, ou conhecer uma outra forma de configurar essa classe, conto com a ajuda de voces!
Segue a pagina de exceção:
[code]type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax.servlet.ServletException
com.financeiro.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:48)
root cause
javax.servlet.ServletException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
com.financeiro.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:34)
root cause
java.lang.StackOverflowError
java.util.concurrent.ConcurrentHashMap.get(Unknown Source)
com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:95)
com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:117)
com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:58)
com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:256)
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:378)
com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:358)
com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
etc…[/code]
Segue a classe de captura que implementa Filter:
[code]public class ConexaoHibernateFilter implements Filter {
private SessionFactory sf;
public void init(FilterConfig config) throws ServletException {
this.sf = HibernateUtil.getSessionFactory();
}
public void destroy() {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException {
try {
this.sf.getCurrentSession().beginTransaction();
chain.doFilter(servletRequest, servletResponse);
this.sf.getCurrentSession().getTransaction().commit();
this.sf.getCurrentSession().close();
System.out.println("Passei por aqui");
} catch (Throwable ex) {
try {
if (this.sf.getCurrentSession().getTransaction().isActive()) {
this.sf.getCurrentSession().getTransaction().rollback();
}
} catch (Throwable t) {
t.printStackTrace();
System.out.println(t.getMessage());
}
throw new ServletException(ex);
}
}
}[/code]
Classe com metodos de conexão do Hibernate:
[code]public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.configure("hibernate.cfg.xml");
return cfg.buildSessionFactory();
} catch (Throwable e) {
System.out.println("Criação inicial do objeto SessionFactory falhou. Erro: " + e);
throw new ExceptionInInitializerError(e);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}[/code]
Nota que as linhas apontadas na exceção são:
e
A configuração do web.xml está correta pois consigo visualizar os flags na hora da requisição… Qualquer ajuda será bem vinda!