ICEfaces
  1. ICEfaces
  2. ICE-5241

Refactored ServletExternalContext.java breaks all Spring webflow applications

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.2, 1.8.2-EE-GA
    • Fix Version/s: 1.8.2-EE-GA_P01, 1.8.3
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEFaces 1.8.2 and Spring webflow

      Description

      Changes for revision 19217 cause the following exception in every Spring webflow page transition. Reloading the page causes the page to appear.

      old code:
       public String getRequestServletPath() {
      // return requestServletPath == null ? initialRequest.getServletPath() : requestServletPath;
                //crazy "workaround": solves the different behaviour MyFaces and Icefaces (including Sun-RI) need from this method
              boolean callFromMyfaces = new Exception().getStackTrace()[1].getClassName().startsWith("org.apache.myfaces");
              if (callFromMyfaces) {
                  return requestServletPath == null ? initialRequest.getServletPath() : requestServletPath;
              } else {
                  String servletPath = (String) initialRequest.getAttribute("javax.servlet.forward.servlet_path");
                  return servletPath == null ? initialRequest.getServletPath() : servletPath;
              }
          }

      new code:
      public String getRequestServletPath() {
              return requestServletPath == null ? initialRequest.getServletPath() : requestServletPath;
          }

      If the refactoring was just for clean up, then it should be reverted. If there was a functional reason for the change, we need a different approach.

      There is an Ivy build issue which masks the problem when building with ICEFaces version 1.8.2, see http://jira.icefaces.org/browse/ICE-5236




      Full stack trace:

      javax.servlet.ServletException: java.lang.Exception: javax.faces.FacesException: Problem in renderResponse: /main Not Found in ExternalContext as a Resource
      com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:158)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:109)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:173)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174)
      org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

      root cause

      java.lang.Exception: javax.faces.FacesException: Problem in renderResponse: /main Not Found in ExternalContext as a Resource
      com.icesoft.faces.context.View.servePage(View.java:152)
      com.icesoft.faces.webapp.http.core.MultiViewServer.service(MultiViewServer.java:67)
      com.icesoft.faces.webapp.http.common.ServerProxy.service(ServerProxy.java:11)
      com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet$4.service(MainSessionBoundServlet.java:149)
      com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
      com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
      com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
      com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:109)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:173)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174)
      org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

      root cause

      javax.faces.FacesException: Problem in renderResponse: /main Not Found in ExternalContext as a Resource
      com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:296)
      com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:159)
      org.springframework.faces.webflow.FlowViewHandler.renderView(FlowViewHandler.java:92)
      com.icesoft.faces.context.BridgeFacesContext$SwitchViewHandler.renderView(BridgeFacesContext.java:782)
      com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
      com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
      com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
      com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:19)
      com.icesoft.faces.context.View$2$1.respond(View.java:48)
      com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:201)
      com.icesoft.faces.context.View$2.serve(View.java:77)
      com.icesoft.faces.context.View.servePage(View.java:149)
      com.icesoft.faces.webapp.http.core.MultiViewServer.service(MultiViewServer.java:67)
      com.icesoft.faces.webapp.http.common.ServerProxy.service(ServerProxy.java:11)
      com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet$4.service(MainSessionBoundServlet.java:149)
      com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
      com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
      com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
      com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:109)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:173)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174)
      org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

      root cause

      java.io.FileNotFoundException: /main Not Found in ExternalContext as a Resource
      com.sun.facelets.impl.DefaultFaceletFactory.resolveURL(DefaultFaceletFactory.java:121)
      com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:91)
      com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:268)
      com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:159)
      org.springframework.faces.webflow.FlowViewHandler.renderView(FlowViewHandler.java:92)
      com.icesoft.faces.context.BridgeFacesContext$SwitchViewHandler.renderView(BridgeFacesContext.java:782)
      com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
      com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
      com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
      com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:19)
      com.icesoft.faces.context.View$2$1.respond(View.java:48)
      com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:201)
      com.icesoft.faces.context.View$2.serve(View.java:77)
      com.icesoft.faces.context.View.servePage(View.java:149)
      com.icesoft.faces.webapp.http.core.MultiViewServer.service(MultiViewServer.java:67)
      com.icesoft.faces.webapp.http.common.ServerProxy.service(ServerProxy.java:11)
      com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet$4.service(MainSessionBoundServlet.java:149)
      com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
      com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
      com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
      com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
      org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:109)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:173)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
      org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
      org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
      org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174)
      org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Greg Dick
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: