0 Replies Latest reply on Dec 9, 2011 9:05 AM by Benjamin Janssens

    Seam does'nt catch exception

    Benjamin Janssens Newbie

      Hello


      I try to handle exception in my project.


      In my components.xml :


      <core:init jndi-pattern="OrderForm-0.0.1-SNAPSHOT/#{ejbName}/local" debug="false"/>
      





      In web.xml :


           <filter-mapping>
              <filter-name>Seam Filter</filter-name>
              <url-pattern>*.xhtml</url-pattern>
              <servlet-name>Faces Servlet</servlet-name>
              <dispatcher>FORWARD</dispatcher>
              <dispatcher>REQUEST</dispatcher>
              <dispatcher>INCLUDE</dispatcher>
          </filter-mapping>
          <context-param>
              <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
              <param-value>.xhtml</param-value>
          </context-param>
          <context-param>
              <param-name>facelets.DEVELOPMENT</param-name>
              <param-value>false</param-value>
          </context-param>
      '
      
      In my OrderformHome.java :
      
      '
      public void checkOrderLineWarning() throws OrderformException {
      
           if (getInstance().getOrderLineOrderforms() == null || getInstance().getOrderLineOrderforms().size() < 1) {
                  //throw new OrderformException(Utils.getMessageBundle("validate_orderline_atleast"), null);
                    throw new RuntimeException("simulate runtime exception");
              }
      }
      



      My OrderformException.java :


      @ApplicationException(rollback=true)
      @Redirect(viewId = "/error.xhtml")
      public class OrderformException extends Exception{
      
          public OrderformException() {}
      }
      



      pages.xml :


      [...]
      
      <exception class="java.lang.RuntimeException">
              <redirect view-id="/error.xhtml">
                  <message>Unexpected failure</message>
              </redirect>
          </exception>
          <exception>
              <redirect view-id="/error.xhtml">
                  <message severity="error">Unexpected error, please try again</message>
              </redirect>
          </exception>
      </pages>
      



      And whatever if I throw OrderformException or RuntimeException, all I have is a trace in the console (my application freeze, no ajax call would work :
         




      13:57:17,960 SEVERE [application] java.lang.RuntimeException: simulate runtime exception
      javax.faces.el.EvaluationException: java.lang.RuntimeException: simulate runtime exception
              at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
              at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
              at javax.faces.component.UICommand.broadcast(UICommand.java:387)
              at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
              at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
              at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
              at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
              at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
      [...]
      Caused by: java.lang.RuntimeException: simulate runtime exception
              at com.orderform.session.OrderformHome.checkOrderLineWarning(OrderformHome.java:1494)
              at com.orderform.session.OrderformHome.calOrderLine(OrderformHome.java:883)
              at com.orderform.session.OrderformHome.removeOrderLine(OrderformHome.java:920)
      [...]
      13:57:17,964 ERROR [LifecyclePhase] Error executing INVOKE_APPLICATION 5 phase.
      javax.faces.FacesException: #{orderformHome.removeOrderLine}: java.lang.RuntimeException: simulate runtime exception
              at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
              at javax.faces.component.UICommand.broadcast(UICommand.java:387)
              at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
              at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
              at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
              at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
              at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
              at org.jboss.portletbridge.lifecycle.InvokeApplicationPhase.executePhase(InvokeApplicationPhase.java:57)
              at org.jboss.portletbridge.lifecycle.LifecyclePhase.execute(LifecyclePhase.java:72)
              at org.jboss.portletbridge.lifecycle.UpdateModelPhase.executeNextPhase(UpdateModelPhase.java:49)
              at org.jboss.portletbridge.lifecycle.LifecyclePhase.execute(LifecyclePhase.java:99)
              at org.jboss.portletbridge.lifecycle.ProcessValidatorsPhase.executeNextPhase(ProcessValidatorsPhase.java:50)
              at org.jboss.portletbridge.lifecycle.LifecyclePhase.execute(LifecyclePhase.java:99)






      Am I missing something ?