0 Replies Latest reply on May 19, 2010 4:21 AM by marioosh.net

    FacesServlet wrapper and catching exceptions

    marioosh.net

      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 {
       log.debug("INIT");
       
       
       
      facesServlet = new FacesServlet();
       facesServlet.init(servletConfig);
       
       
       
      System.getProperties().put("org.apache.el.parser.COERCE_TO_ZERO", "false");
       }
       
       
       
      public void destroy() {
       facesServlet.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()));
       
       
      }
       }
       
       
       
      }