Pessoal, não estou conseguindo intercepitar uma requisição em qualquer pagina jsf toda vez que que eu abro uma session do hibernate…
obs: quando eu removo o filter do web.xml…a pagina funciona…
veja o erro
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Filter execution threw an exception
root cause
java.lang.Error: Unresolved compilation problem:
br.com.util.HibernateUtil.openSession(HibernateUtil.java:25)
br.com.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:21)
as classes:
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;
//classe HibernateSessionFilter
public class HibernateSessionFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc)
throws IOException, ServletException {
HibernateUtil.openSession();
try {
HibernateUtil.currentSession().beginTransaction();
fc.doFilter(req, res);
HibernateUtil.currentSession().getTransaction().commit();
} catch (Exception e) {
e.getMessage();
e.getStackTrace();
throw new ServletException(e);
} finally {
HibernateUtil.closeCurrentSession();
}
}
public void init(FilterConfig c) throws ServletException {
// TODO Auto-generated method stub
}
}
//clase HibernateUtil
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
private static Logger logger = Logger.getLogger(HibernateUtil.class);
private static SessionFactory sessionFactory;
private static ThreadLocal<Session> sessions = new ThreadLocal<Session>();
static {
sessionFactory = new AnnotationConfiguration().configure()
.buildSessionFactory();
}
public static Session openSession() {
if (sessions.get() != null) {
logger.error("there was a session for this thread alredy ");
}
sessions.set(sessionFactory.openSession());
return sessions.get();
}
public static void closeCurrentSession() {
sessions.get().close();
sessions.set(null);
}
public static Session currentSession() {
return sessions.get();
}
web xml
HibernateSessionFilter
br.com.caelum.fj26.util.HibernateSessionFilter
quem puder ajudar… valeu!!
