myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Freedman (JIRA)" <...@myfaces.apache.org>
Subject [jira] Resolved: (PORTLETBRIDGE-51) State is lost at random and postback request is deal as new one
Date Wed, 22 Oct 2008 20:49:44 GMT

     [ https://issues.apache.org/jira/browse/PORTLETBRIDGE-51?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Michael Freedman resolved PORTLETBRIDGE-51.
-------------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.0.0
         Assignee: Michael Freedman

Checked-in a new version of the bridge's faces-config.xml which excludes a number of request
attributes added by MyFaces during request processing.  One in particular, "jsf_sequence",
is used by MyFaces as a cache of the id for the View_state to restore.  By keeping this around
we would revert to the prior view when refreshing a current view because MyFaces would ignore
the request information and use this cached information instead.

> State is lost at random and postback request is deal as new one
> ---------------------------------------------------------------
>
>                 Key: PORTLETBRIDGE-51
>                 URL: https://issues.apache.org/jira/browse/PORTLETBRIDGE-51
>             Project: MyFaces Portlet Bridge
>          Issue Type: Bug
>         Environment: Firefox 2.0.0.17
> windows xp
> running portlet demo using maven jetty plugin and pluto
> myfaces core 1.2.x running with server side state saving
>            Reporter: Leonardo Uribe
>            Assignee: Michael Freedman
>             Fix For: 1.0.0
>
>
> I have one machine with firefox 3.0.3 and windows vista, and the problem is not present.
The machine with firefox 2.0.0.17 and windows xp has the problem.
> A correct request (firefox 3.0.3, opera 9 or IE 7) output on the log (stdout) something
like this:
> 2008-10-21 19:25:47.666:/portlet-bridge-demo:INFO:  PortletExternalContextImpl.g
> etViewId: found jsf target viewId = view:/helloworld/index.jsp
> 2008-10-21 19:25:47.681:/portlet-bridge-demo:INFO:  dumpScopeId: ACTION_PHASE
> 2008-10-21 19:25:47.681:/portlet-bridge-demo:INFO:  Elements in scope: portlet-b
> ridge-demo:19hv18thfnrd9:view:-25ecdd41:11d21e77bb0:-7fdb
> 2008-10-21 19:25:47.681:/portlet-bridge-demo:INFO:       org.apache.myfaces.port
> let.faces.includeInScope.requestParameters
> 2008-10-21 19:25:47.681:/portlet-bridge-demo:INFO:       org.apache.myfaces.port
> let.faces.includeInScope.facesViewRoot
> 2008-10-21 19:25:47.681:/portlet-bridge-demo:INFO:       org.apache.myfaces.el.u
> nified.resolver.managedbean.beansUnderConstruction
> 2008-10-21 19:25:47.713:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.jsp.JspStateManagerImpl.RESTORED_SERIALIZED_VIEW
> 2008-10-21 19:25:47.713:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.DefaultViewHandlerSupport.CACHED_SERVLET_MAPPING
> 2008-10-21 19:25:47.713:/portlet-bridge-demo:INFO:       jsf_sequence
> 2008-10-21 19:25:47.713:/portlet-bridge-demo:INFO:       namebean
> 2008-10-21 19:25:47.713:/portlet-bridge-demo:INFO:       org.apache.myfaces.shar
> ed_impl.renderkit.RendererUtils.RenderKitImpl
> 2008-10-21 19:25:47.713:/portlet-bridge-demo:INFO:  end dumpScopeId
> Oct 21, 2008 7:25:47 PM org.apache.pluto.driver.PortalDriverFilter doFilter
> INFO: Forwarding to realPath: /pluto/index.jsp
> 2008-10-21 19:25:47.744:/portlet-bridge-demo:INFO:  Unable to locate a SAVESTATE
> _FIELD_MARKER in response.  This could be because your Faces environment doesn't
>  write such a marker or because the bridge doesn't know the marker in use.  If t
> he later, configure the appropriate application init parameter javax.portlet.fac
> es.SAVESTATE_FIELD_MARKER.
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:  dumpScopeId: RENDER_PHASE
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:  Elements in scope: portlet-b
> ridge-demo:19hv18thfnrd9:view:-25ecdd41:11d21e77bb0:-7fdb
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:       org.apache.myfaces.port
> let.faces.includeInScope.requestParameters
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:       org.apache.myfaces.el.u
> nified.resolver.managedbean.beansUnderConstruction
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.jsp.JspStateManagerImpl.RESTORED_SERIALIZED_VIEW
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.DefaultViewHandlerSupport.CACHED_SERVLET_MAPPING
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:       jsf_sequence
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:       namebean
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:       org.apache.myfaces.shar
> ed_impl.renderkit.RendererUtils.RenderKitImpl
> 2008-10-21 19:25:48.760:/portlet-bridge-demo:INFO:  end dumpScopeId
> A request using firefox 2.0.0.17 looks like this:
> 2008-10-21 19:26:46.822:/portlet-bridge-demo:INFO:  PortletExternalContextImpl.g
> etViewId: found jsf target viewId = view:/helloworld/index.jsp
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:  dumpScopeId: ACTION_PHASE
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:  Elements in scope: portlet-b
> ridge-demo:yh4tse3ctjqw:view:-25ecdd41:11d21e77bb0:-7fda
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       org.apache.myfaces.port
> let.faces.includeInScope.requestParameters
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       org.apache.myfaces.port
> let.faces.includeInScope.facesViewRoot
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       org.apache.myfaces.el.u
> nified.resolver.managedbean.beansUnderConstruction
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.jsp.JspStateManagerImpl.RESTORED_SERIALIZED_VIEW
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.DefaultViewHandlerSupport.CACHED_SERVLET_MAPPING
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       jsf_sequence
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       namebean
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:       org.apache.myfaces.shar
> ed_impl.renderkit.RendererUtils.RenderKitImpl
> 2008-10-21 19:26:46.837:/portlet-bridge-demo:INFO:  end dumpScopeId
> Oct 21, 2008 7:26:46 PM org.apache.pluto.driver.PortalDriverFilter doFilter
> INFO: Forwarding to realPath: /pluto/index.jsp
> 2008-10-21 19:26:46.869:/portlet-bridge-demo:INFO:  Unable to locate a SAVESTATE
> _FIELD_MARKER in response.  This could be because your Faces environment doesn't
>  write such a marker or because the bridge doesn't know the marker in use.  If t
> he later, configure the appropriate application init parameter javax.portlet.fac
> es.SAVESTATE_FIELD_MARKER.
> 2008-10-21 19:26:46.869:/portlet-bridge-demo:INFO:  dumpScopeId: RENDER_PHASE
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:  Elements in scope: portlet-b
> ridge-demo:yh4tse3ctjqw:view:-25ecdd41:11d21e77bb0:-7fda
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:       org.apache.myfaces.port
> let.faces.includeInScope.requestParameters
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:       org.apache.myfaces.el.u
> nified.resolver.managedbean.beansUnderConstruction
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.jsp.JspStateManagerImpl.RESTORED_SERIALIZED_VIEW
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.DefaultViewHandlerSupport.CACHED_SERVLET_MAPPING
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:       jsf_sequence
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:       namebean
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:       org.apache.myfaces.shar
> ed_impl.renderkit.RendererUtils.RenderKitImpl
> 2008-10-21 19:26:46.884:/portlet-bridge-demo:INFO:  end dumpScopeId
> Oct 21, 2008 7:26:48 PM org.apache.pluto.driver.PortalDriverFilter doFilter
> INFO: Forwarding to realPath: /pluto/index.jsp
> 2008-10-21 19:26:48.163:/portlet-bridge-demo:INFO:  PortletExternalContextImpl.g
> etViewId: found jsf target viewId = view:/helloworld/hello.jsp
> 2008-10-21 19:26:48.163:/portlet-bridge-demo:INFO:  History for mode: view : /he
> lloworld/hello.jsp?javax.portlet.faces.PortletMode=view&__jpfbReqScopeId=portlet
> -bridge-demo%3Ayh4tse3ctjqw%3Aview%3A-25ecdd41%3A11d21e77bb0%3A-7fda&javax.faces
> .ViewState=CX8k%2BpTXi4XRIwnlHJaWVyc31c23xqtKQKd4yZOqnb9H8Xs6FKjAxuC58ztDpvj1O2O
> 1%2B8C%2F2gMMzdqOlEnLOB4LrckaiKM%2Bu3h3WzFSRkY%3D
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:  Unable to locate a SAVESTATE
> _FIELD_MARKER in response.  This could be because your Faces environment doesn't
>  write such a marker or because the bridge doesn't know the marker in use.  If t
> he later, configure the appropriate application init parameter javax.portlet.fac
> es.SAVESTATE_FIELD_MARKER.
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:  dumpScopeId: RENDER_PHASE
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:  Elements in scope: portlet-b
> ridge-demo:yh4tse3ctjqw:view:-25ecdd41:11d21e77bb0:-7fda
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:       org.apache.myfaces.port
> let.faces.includeInScope.requestParameters
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:       org.apache.myfaces.el.u
> nified.resolver.managedbean.beansUnderConstruction
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.jsp.JspStateManagerImpl.RESTORED_SERIALIZED_VIEW
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:       org.apache.myfaces.appl
> ication.DefaultViewHandlerSupport.CACHED_SERVLET_MAPPING
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:       jsf_sequence
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:       namebean
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:       org.apache.myfaces.shar
> ed_impl.renderkit.RendererUtils.RenderKitImpl
> 2008-10-21 19:26:48.179:/portlet-bridge-demo:INFO:  end dumpScopeId
> The interesting thing about this is that the  RENDER_PHASE is executed twice (there are
not two different request, just one).
> This event happens at random, so sometimes the app works as expected, and others when
you click the link or button, the state is lost and the same page is rendered (no transition
occurs and the RENDER_PHASE is executed twice).
> Michael suggest this solution: If you add this params to faces-config.xml
>             <bridge:excluded-attribute>org.apache.myfaces.application.jsp.JspStateManagerImpl.*</bridge:excluded-attribute>
>             <bridge:excluded-attribute>org.apache.myfaces.el.unified.resolver.managedbean.*</bridge:excluded-attribute>
>             <bridge:excluded-attribute>org.apache.myfaces.shared_impl.renderkit.RendererUtils.*</bridge:excluded-attribute>
>             <bridge:excluded-attribute>org.apache.myfaces.application.DefaultViewHandlerSupport.*</bridge:excluded-attribute>
>             <bridge:excluded-attribute>jsf_sequence</bridge:excluded-attribute>
> The problem disappear and the application works correctly.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message