[richfaces-issues] [JBoss JIRA] (RF-11809) NPE on clearSkinCaches after HttpServletRequest wrapping

Fab Mars (Issue Comment Edited) (JIRA) jira-events at lists.jboss.org
Fri Dec 23 03:31:18 EST 2011


    [ https://issues.jboss.org/browse/RF-11809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12652982#comment-12652982 ] 

Fab Mars edited comment on RF-11809 at 12/23/11 3:31 AM:
---------------------------------------------------------

You are right, the Req wrapping trick also generate doesn't work anymore on JSF2, as it causes a number of weird side effects with the lifecycle, and the FC or something else vanishes.
Let's close this issue and I4ll use ocpsoft rewrite for my "pretty url" original need.
                
      was (Author: fabmars):
    You are right, the Req wrapping trick also generate doesn't work anymore on JSF2, as it causes a number of weird side effects with the lifecycle, and the FC or something else vanishes.
Let's close this issue.
                  
> NPE on clearSkinCaches after HttpServletRequest wrapping
> --------------------------------------------------------
>
>                 Key: RF-11809
>                 URL: https://issues.jboss.org/browse/RF-11809
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.1.0.CR2
>         Environment: Win7 x86, Glassfish 3.1.2 promoted, JDK 1.6.0u29
>            Reporter: Fab Mars
>              Labels: glassfish_v3, jsf21, richfaces4, skin, waiting_on_user
>
> I have a homemade "pretty URL" mechanism I've been using on JSF1.2 and RF 3.3 in the past.
> It uses a phase listener that operates during RESTORE_VIEW/before.
> At the end of its parsing, it computes the "real" viewId to display and does:
>     PrettyUrlRequestWrapper wrapper = new PrettyUrlRequestWrapper(request);
>     wrapper.setViewId(computedViewId);
>     context.getExternalContext().setRequest(wrapper);
> When I don't use it and call directly .jsf pages, all works fine with RF 4.1.0CR2.
> When I use it, I get this error:
> GRAVE: null
> javax.servlet.ServletException
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
> 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> 	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
> 	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
> 	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
> 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
> 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
> 	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
> 	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
> 	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
> 	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
> 	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
> 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
> 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
> 	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
> 	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
> 	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
> 	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
> 	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
> 	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.NullPointerException
> 	at org.richfaces.skin.SkinFactoryImpl.clearSkinCaches(SkinFactoryImpl.java:94)
> 	at org.richfaces.skin.SkinFactoryPreRenderViewListener.processEvent(SkinFactoryPreRenderViewListener.java:35)
> 	at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
> 	at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168)
> 	at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2144)
> 	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:302)
> 	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:246)
> 	at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:670)
> 	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108)
> 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
> 	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
> 	... 26 more
> ATTENTION: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
> java.lang.NullPointerException
> 	at org.richfaces.skin.SkinFactoryImpl.clearSkinCaches(SkinFactoryImpl.java:94)
> 	at org.richfaces.skin.SkinFactoryPreRenderViewListener.processEvent(SkinFactoryPreRenderViewListener.java:35)
> 	at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
> 	at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168)
> 	at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2144)
> 	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:302)
> 	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:246)
> 	at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:670)
> 	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108)
> 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
> 	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
> 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> 	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
> 	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
> 	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
> 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
> 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
> 	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
> 	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
> 	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
> 	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
> 	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
> 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
> 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
> 	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
> 	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
> 	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
> 	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
> 	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
> 	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
> 	at java.lang.Thread.run(Thread.java:662)
> Well, clearSkinCackes uses only FacesContext.
>     static void clearSkinCaches(FacesContext context) {
>         context.getAttributes().remove(BASE_SKIN_KEY);
>         context.getAttributes().remove(SKIN_KEY);
>     }
> If you check on the debugger, FC is indeed null then. That's unexpected and I'm not sure this is normal.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the richfaces-issues mailing list