Pessoal estou tendo dificuldade com uma aplicação web e se algum pudesse me auxiliar eu ficarei muito grato…
Minha aplicação roda com JSF1.2 e Hibernate.
Eu tenho um filtro na minha aplicação para controlar as sessoes do hibernate. Ate ai blz…O fikltro é executado em toda requisição e se houver problema é feito rolback. Abaixo o codigo do filtro:
public class HibernateSessionFilter implements Filter{
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){
HibernateUtil.currentSession().getTransaction().rollback();
e.printStackTrace();
throw new ServletException(e);
}finally{
HibernateUtil.closeCurrentSession();
}
}
Ok ate ai blz…
porem eu tenho um ActionListenerImpl que server para capturar exceções e redirecionar para uma outra pagina
public class ExceptionHandler extends ActionListenerImpl{
@Override
public void processAction(ActionEvent event)
throws AbortProcessingException {
// Obtem o contexto JSF
FacesContext context = FacesContext.getCurrentInstance();
try {
// Executa o método da classe Pai
super.processAction(event);
} catch (Exception e) {
// Se ocorrer um erro inesperado, exibe a mensagem abaixo
context.addMessage("erros",
new FacesMessage(FacesMessage.SEVERITY_FATAL,
e.getLocalizedMessage(), null));
// Redireciona para a pagina de erro.
context.getApplication().getNavigationHandler().handleNavigation(
context, null, "ERROR");
throw new AbortProcessingException(e.getMessage());
}
}
O que ocorre é q qnd gerada a exceção o listenner pega o erroe por mais q eu o lance novamente o meu filtro nunca recebe a excecao gerada e ai nunca da o rolback.
Se algum souber como solucionar ou se alguem ja utilizou um controle das sessoes do hibernate no listenner por favor se manifeste.