0 Replies Latest reply on May 19, 2010 4:21 AM by m m

    FacesServlet wrapper and catching exceptions

    m m Newbie

      I have another problem with handling exceptions in jsf / richfaces.


      I have wrapper for FacesServlet to handling exceptions, but it catch only some exceptions, why ??
      For example java.net.SocketException (connection to db) haven't be caught.


      Another problem is that FacesContext context = FacesContext.getCurrentInstance();  return null in catch...

      Is a way to get context and add Faces Message... ?


      package test;
      import java.io.IOException;
      import javax.faces.application.FacesMessage;
      import javax.faces.context.FacesContext;
      import javax.faces.webapp.FacesServlet;
      import javax.servlet.ServletConfig;
      import javax.servlet.ServletException;
      import javax.servlet.ServletRequest;
      import javax.servlet.ServletResponse;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import org.apache.log4j.Logger;
       * Wrapper 
       * @author marioosh
      public class FacesServletWrapper extends HttpServlet {
       private Logger log = Logger.getLogger(getClass());
       private FacesServlet facesServlet;
      public void init(ServletConfig servletConfig) throws ServletException {
      facesServlet = new FacesServlet();
      System.getProperties().put("org.apache.el.parser.COERCE_TO_ZERO", "false");
      public void destroy() {
      public ServletConfig getServletConfig() {
       return facesServlet.getServletConfig();
      public String getServletInfo() {
       return facesServlet.getServletInfo();
      public void service(ServletRequest request, ServletResponse response)
       throws ServletException, IOException {
       try {
       facesServlet.service(request, response);
       } catch (Throwable e) {
       log.debug("FacesServletWrapper - error captured!");
      FacesContext context = FacesContext.getCurrentInstance(); /// <---- null :((
       context.addMessage(FacesMessage.FACES_MESSAGES, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.toString()));