ICEfaces
  1. ICEfaces
  2. ICE-4325

Bug in MainServlet, Jetty continuation does not work anymore, RetryRequest exception from Jetty get caught and not rethrown

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Duplicate
    • Affects Version/s: 1.8
    • Fix Version/s: 1.8.1
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      Jetty 6.1.16, IceFaces tutorial

      Description

      RetryRequest get caught in MainServlet.java due to ICE-4261
      The following causes the problem:
                  //ICE-4261: We cannot wrap RuntimeExceptions as ServletExceptions because of support for Jetty
                  //Continuations. However, if the message of a RuntimeException is null, Tomcat won't
                  //properly redirect to the configured error-page. So we need a new RuntimeException
                  //that actually includes a message.
                  if( e.getMessage() != null ){
                      throw e;
                  }
                  throw new RuntimeException("no message available",e);
      I propose the following fix:
      if (e.getMessage() != null || e.getClass().getCanonicalName().equals("org.mortbay.jetty.RetryRequest")) {
                      throw e;
                  }
                  throw new RuntimeException("no message available",e);

      Unfortunately I was writing a detailed review and I lost it. Damn firefox...

        Issue Links

          Activity

          Hide
          Jerome Bonnet added a comment -

          The MainServlet.java containing the proposed correction, from 1.8.0 src release.

          Show
          Jerome Bonnet added a comment - The MainServlet.java containing the proposed correction, from 1.8.0 src release.
          Hide
          Deryk Sinotte added a comment -

          This issue was fixed for 1.8.1 as part of ICE-4261

          Show
          Deryk Sinotte added a comment - This issue was fixed for 1.8.1 as part of ICE-4261
          Hide
          Deryk Sinotte added a comment -

          Linking as duplicate to parent case.

          Show
          Deryk Sinotte added a comment - Linking as duplicate to parent case.
          Hide
          Jason Porter added a comment -

          Still seeing this one even with ICEfaces 1.8.1 and Jetty 6.1.9:

          [jetty] Jun 26, 2009 2:59:14 PM com.sun.faces.config.ConfigureListener contextInitialized
          [jetty] INFO: Initializing Mojarra (1.2_12-b01-FCS) for context '/icefaces'
          [jetty] 14:59:14,996 INFO [D2DViewHandler]
          [jetty] ICEsoft Technologies, Inc.
          [jetty] ICEfaces 1.8.1
          [jetty] Build number: 7
          [jetty] Revision: 18926
          [jetty]
          [jetty] 14:59:15,126 INFO [ViewRootStateManagerImpl] ViewRootStateManagerImpl constructed with Delegate: com.sun.faces.application.StateManagerImpl@7217aa1c
          [jetty] 14:59:15,137 INFO [D2DViewHandler] ICEfaces JSP parser disabled. This is a Facelets-only configuration.
          [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.identityFilter
          [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.hotDeployFilter
          [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.redirectFilter
          [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.exceptionFilter
          [jetty] 14:59:15,436 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.loggingFilter
          [jetty] 14:59:15,501 INFO [EnvironmentAdaptingServlet] Adapting to Jetty ARP environment
          [jetty] 14:59:15,508 INFO [SeamUtilities] Seam environment detected
          [jetty] 2009-06-26 14:59:15.834::INFO: Started SelectChannelConnector@0.0.0.0:8080
          [jetty] Web application 'icefaces': starting scanner at interval of 5 seconds.
          [jetty] 15:00:19,898 INFO [Contexts] starting up: org.jboss.seam.security.identity
          [jetty] 15:00:19,901 INFO [Contexts] starting up: org.jboss.seam.web.session
          [jetty] 15:00:22,582 INFO [MainServlet] Blocking Request Handler: "auto-detect"
          [jetty] 15:00:22,665 WARN [MainServlet] Push Server not found - the Push Server must be deployed to support multiple asynchronous applications.
          [jetty] 15:00:22,666 INFO [MainServlet] Adapting to Push environment.
          [jetty] 15:00:26,253 WARN [ExceptionFilter] handling uncaught exception
          [jetty] org.mortbay.jetty.RetryRequest
          [jetty] at org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.suspend(SelectChannelConnector.java:440)
          [jetty] at com.icesoft.faces.webapp.http.servlet.JettyAdaptingServlet$ContinuationRequestResponse.captureContinuation(JettyAdaptingServlet.java:59)
          [jetty] at com.icesoft.faces.webapp.http.servlet.JettyAdaptingServlet.service(JettyAdaptingServlet.java:30)
          [jetty] at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63)
          [jetty] at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:62)
          [jetty] at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:22)
          [jetty] at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
          [jetty] at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:153)
          [jetty] at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
          [jetty] at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
          [jetty] at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
          [jetty] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
          [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
          [jetty] at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
          [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
          [jetty] at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
          [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
          [jetty] at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
          [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
          [jetty] at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
          [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
          [jetty] at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
          [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
          [jetty] at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
          [jetty] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
          [jetty] at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
          [jetty] at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
          [jetty] at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
          [jetty] at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
          [jetty] at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
          [jetty] at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
          [jetty] at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
          [jetty] at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
          [jetty] at org.mortbay.jetty.Server.handle(Server.java:324)
          [jetty] at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
          [jetty] at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
          [jetty] at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
          [jetty] at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
          [jetty] at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
          [jetty] at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
          [jetty] at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

          Show
          Jason Porter added a comment - Still seeing this one even with ICEfaces 1.8.1 and Jetty 6.1.9: [jetty] Jun 26, 2009 2:59:14 PM com.sun.faces.config.ConfigureListener contextInitialized [jetty] INFO: Initializing Mojarra (1.2_12-b01-FCS) for context '/icefaces' [jetty] 14:59:14,996 INFO [D2DViewHandler] [jetty] ICEsoft Technologies, Inc. [jetty] ICEfaces 1.8.1 [jetty] Build number: 7 [jetty] Revision: 18926 [jetty] [jetty] 14:59:15,126 INFO [ViewRootStateManagerImpl] ViewRootStateManagerImpl constructed with Delegate: com.sun.faces.application.StateManagerImpl@7217aa1c [jetty] 14:59:15,137 INFO [D2DViewHandler] ICEfaces JSP parser disabled. This is a Facelets-only configuration. [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.identityFilter [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.hotDeployFilter [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.redirectFilter [jetty] 14:59:15,435 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.exceptionFilter [jetty] 14:59:15,436 INFO [SeamFilter] Initializing filter: org.jboss.seam.web.loggingFilter [jetty] 14:59:15,501 INFO [EnvironmentAdaptingServlet] Adapting to Jetty ARP environment [jetty] 14:59:15,508 INFO [SeamUtilities] Seam environment detected [jetty] 2009-06-26 14:59:15.834::INFO: Started SelectChannelConnector@0.0.0.0:8080 [jetty] Web application 'icefaces': starting scanner at interval of 5 seconds. [jetty] 15:00:19,898 INFO [Contexts] starting up: org.jboss.seam.security.identity [jetty] 15:00:19,901 INFO [Contexts] starting up: org.jboss.seam.web.session [jetty] 15:00:22,582 INFO [MainServlet] Blocking Request Handler: "auto-detect" [jetty] 15:00:22,665 WARN [MainServlet] Push Server not found - the Push Server must be deployed to support multiple asynchronous applications. [jetty] 15:00:22,666 INFO [MainServlet] Adapting to Push environment. [jetty] 15:00:26,253 WARN [ExceptionFilter] handling uncaught exception [jetty] org.mortbay.jetty.RetryRequest [jetty] at org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.suspend(SelectChannelConnector.java:440) [jetty] at com.icesoft.faces.webapp.http.servlet.JettyAdaptingServlet$ContinuationRequestResponse.captureContinuation(JettyAdaptingServlet.java:59) [jetty] at com.icesoft.faces.webapp.http.servlet.JettyAdaptingServlet.service(JettyAdaptingServlet.java:30) [jetty] at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63) [jetty] at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:62) [jetty] at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:22) [jetty] at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23) [jetty] at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:153) [jetty] at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [jetty] at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56) [jetty] at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) [jetty] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093) [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) [jetty] at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58) [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jetty] at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jetty] at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jetty] at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jetty] at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) [jetty] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jetty] at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) [jetty] at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) [jetty] at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) [jetty] at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) [jetty] at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) [jetty] at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) [jetty] at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) [jetty] at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) [jetty] at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) [jetty] at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [jetty] at org.mortbay.jetty.Server.handle(Server.java:324) [jetty] at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) [jetty] at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842) [jetty] at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648) [jetty] at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) [jetty] at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) [jetty] at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) [jetty] at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
          Hide
          Deryk Sinotte added a comment -

          I successfully deployed and ran both the auctionMonitor and the component-showcase examples (ant clean jetty6.1) that come with ICEfaces 1.8.1 in Jetty Neither of them displayed the problem you've posted. Perhaps you could see if the same examples run on a clean version of Jetty in your environment to help narrow down the cause. If you find an issue you can reproduce with a simple test case, please open a new JIRA for it. Thanks.

          Show
          Deryk Sinotte added a comment - I successfully deployed and ran both the auctionMonitor and the component-showcase examples (ant clean jetty6.1) that come with ICEfaces 1.8.1 in Jetty Neither of them displayed the problem you've posted. Perhaps you could see if the same examples run on a clean version of Jetty in your environment to help narrow down the cause. If you find an issue you can reproduce with a simple test case, please open a new JIRA for it. Thanks.

            People

            • Assignee:
              Deryk Sinotte
              Reporter:
              Jerome Bonnet
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: