Boa tarde galera. Estou utilizando filtros para comitar e fechar a sessao de um sisteminha, mas estou enfrentando um problema e gostaria da ajuda de voces. Como estou utilizando Hibernate, Struts e Filtros. Na minha Action eu efetuo o Crud, mas o commit e o session.close esta sendo feito em um filter. Dae acontece o seguinte. Se acaso der algum erro no commit como por exemplo restricao de integridade de um dado que nao deveria ser excluido eu apenas estou conseguindo pegar o stackTrace, getMessage,getCause e imprimir no console. Gostaria de tratar essa excessao e deixar para o usuario uma mensagem intuitiva junto com o getCause desta excessao em uma pagina. A rotina commit e o fechamento da sessao esta sendo efetuados na resposta do filtro, por isso eu nao consigo mandar essa Excessao como um atributo para a pagina. O que devo fazer para que o usuario veja em uma pagina uma mensagem intuitiva e o getCause dessa excessao? Obrigado pela ajuda.
Filtros
public class HibernateFilter implements Filter {
private FilterConfig config;
private static Log log = LogFactory.getLog(HibernateFilter.class);
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
try {
chain.doFilter(req, resp);
log.debug("Committing the database transaction");
HibernateUtil.comitTransacao();
} catch (HibernateException he) {
he.printStackTrace();
} finally {
HibernateUtil.closeSessao();
}
}
public void init(FilterConfig config) throws ServletException {
this.config = config;
log.debug("Inicializando o Filtro...");
}
}
Web.xml
<filter>
<filter-name>Hibernate</filter-name>
<filter-class>br.com.MGFSuporte.filtros.HibernateFilter</filter-class>
</filter>
<filter>
<filter-name>LoginFiltro</filter-name>
<filter-class>br.com.MGFSuporte.filtros.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Hibernate</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFiltro</filter-name>
<url-pattern>/pages/*</url-pattern>
</filter-mapping>