ICEfaces
  1. ICEfaces
  2. ICE-5369

Clicking on a link in IceFacesPortlet deployed in Web Space Server fails during direct access

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.2
    • Fix Version/s: 1.8.2-EE-GA_P02
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      GlassFish Web Space Server

      Description

      When you directly access the IceFaces Portlet deployed in Web Space Server and click on a link within the portlet, it fails with the following exception:

      [#|2010-02-04T14:42:02.960+0000|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=27;_ThreadName=httpSSLWorkerThread-8082-0;|2010-02-04 14:42:02,956 ERROR [httpSSLWorkerThread-8082-0] com.icesoft.faces.facelets.D2DFaceletViewHandler - Problem in renderResponse: /send-receive-updates Not Found in ExternalContext as a Resource
      java.io.FileNotFoundException: /send-receive-updates Not Found in ExternalContext as a Resource
      at com.sun.facelets.impl.DefaultFaceletFactory.resolveURL(DefaultFaceletFactory.java:121)
      at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:91)
      at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:268)
      at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:159)
      at com.icesoft.faces.context.BridgeFacesContext$SwitchViewHandler.renderView(BridgeFacesContext.java:783)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
      at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
      at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:19)
      at com.icesoft.faces.context.View$2$1.respond(View.java:48)
      at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:201)
      at com.icesoft.faces.context.View$2.serve(View.java:78)
      at com.icesoft.faces.context.View.servePage(View.java:150)
      at com.icesoft.faces.webapp.http.core.MultiViewServer.service(MultiViewServer.java:67)
      at com.icesoft.faces.webapp.http.common.ServerProxy.service(ServerProxy.java:11)
      at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet$4.service(MainSessionBoundServlet.java:149)
      at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
      at com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
      at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
      at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)

      Steps to reproduce:
      1. Create IceFaces Portlet(eg:IceFacesPortletLinkTest) that has a commandLink and deploy it.
      2. Add it on a public page of Web Space Server(eg: http://localhost:8080/web/guest/page1)
      3. Click on the link in IceFaces Portlet, it works fine
      4. Now close the browser.
      5. Open the browser and access the page directly(i.e access http://localhost:8080/web/guest/page1)
      6. Now when you click on the link in IceFaces Portlet, it throws an exception(as mentioned above).

      Cause:
      After debugging the sources, we found this was because of the way the pattern is matched.
      After step#5 above, if you view the page source, you see that the value of "sendReceiveUpdatesURI" is '/IceFacesPortletLinkTest/block/send-receive-updates;jsessionid=79bf8441f1e6cbc65be1555d53f7'. In com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer, the value returned by the method request.getURI().getPath() is "/IceFacesPortletLinkTest/block/send-receive-updates;jsessionid=79bf8441f1e6cbc65be1555d53f7", but the pattern used to match is
      ".*block\/send\-receive\-updates$". As the URL ends with jsessionid, the match does not happen, resulting in the failure. The jsessionid is getting attached to the url because this is the first request from the server to the new browser session.

      We think that this can be fixed by modifying the Pattern.

        Issue Links

          Activity

          Hide
          Philip Breau added a comment -

          This should be fixed as of svn rev 21954, for http://jira.icefaces.org/browse/ICE-5369

          Show
          Philip Breau added a comment - This should be fixed as of svn rev 21954, for http://jira.icefaces.org/browse/ICE-5369
          Hide
          Ken Fyten added a comment -

          This issue is resolved by the fix for ICE-5871.

          Show
          Ken Fyten added a comment - This issue is resolved by the fix for ICE-5871 .

            People

            • Assignee:
              Ken Fyten
              Reporter:
              Deepak Gothe
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: