You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@deltaspike.apache.org by "l.penet@senat.fr" <l....@senat.fr> on 2014/06/10 20:52:13 UTC

NPE when view pooling / CACHE_EL_EXPRESSIONS == alwaysRecompile

Dear all,

I have the following NPE when view pooling is activated and 
CACHE_EL_EXPRESSIONS is set to alwaysRecompile :

java.lang.NullPointerException at 
org.apache.myfaces.view.facelets.el.FaceletStateValueExpression.getValue(FaceletStateValueExpression.java:107) 
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:68) at 
org.apache.el.parser.AstValue.getValue(AstValue.java:161) at 
org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:47) at 
org.apache.el.parser.AstNot.getValue(AstNot.java:44) at 
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) 
at 
org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96) 
at 
javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:377) 
at 
javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1211) 
at 
javax.faces.component.UIComponentBase._isPhaseExecutable(UIComponentBase.java:2440) 
at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1386) 
at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) 
at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) 
at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) 
at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) 
at javax.faces.component.UIForm.processDecodes(UIForm.java:154) at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) 
at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) 
at 
javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) 
at 
javax.faces.component.UIViewRoot._processDecodesDefault(UIViewRoot.java:1687) 
at javax.faces.component.UIViewRoot.access$500(UIViewRoot.java:77) at 
javax.faces.component.UIViewRoot$ApplyRequestValuesPhaseProcessor.process(UIViewRoot.java:1778) 
at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1653) at 
javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:869) at 
org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:42) 
at 
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196) 
at 
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143) 
at 
org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(DeltaSpikeLifecycleWrapper.java:89) 
at 
javax.faces.lifecycle.LifecycleWrapper.execute(LifecycleWrapper.java:46) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at 
fr.senat.faces.filters.HibernateNoCacheFilter.doFilter(HibernateNoCacheFilter.java:123) 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at 
fr.senat.faces.filters.HibernateSessionConversationFilter.doFilter(HibernateSessionConversationFilter.java:128) 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at 
fr.senat.faces.filters.HibernateUserFromPrincipalFilter.doFilter(HibernateUserFromPrincipalFilter.java:43) 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at 
fr.senat.faces.filters.SessionCreationTrackingFilter.doFilter(SessionCreationTrackingFilter.java:48) 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947) at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009) 
at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744)

This NPE occurs in the evalutation of an EL expression in a tag 
component which is "cleanly" included. By clean, I mean it that the 
inclusion is defined in a "normal" xhtml file, in opposition to some 
dynamic inclusions I perform sometimes. This tag component is included 
in my application banner. It is not rendered during login, then 
displayed once the user is logged. This is done using standard 
rendered="..." attribute and did not cause a bug before.

In FaceletStateValueExpression#getWrapped(ELContext context)

      public ValueExpression getWrapped(ELContext context)
     {
         FacesContext facesContext = (FacesContext) 
context.getContext(FacesContext.class);
         if (facesContext == null)
         {
             facesContext = FacesContext.getCurrentInstance();
         }
         UIViewRoot root = facesContext.getViewRoot();
         FaceletState map = (FaceletState) root.getAttributes().get(
             ComponentSupport.FACELET_STATE_INSTANCE);
         return map.getBinding(uniqueId, key);
     }

the map is defined but does not contained the keyed value. Thus the NPE 
in FaceletStateValueExpression#getValue(ELContext context).

The problem completely disappears if I switch to CACHE_EL_EXPRESSIONS = 
strict.

It occurs with myfaces 2.2.2 and deltaspike 0.7 and 0.8-SNAPSHOT. The 
above stacktrace is obtained with 0.8-SNAPSHOT. I do not know if I it is 
a MyFaces of DS bug.

Tell me what additional information I can provide...

Ludovic

|
| AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT.
|

Re: NPE when view pooling / CACHE_EL_EXPRESSIONS == alwaysRecompile

Posted by Gerhard Petracek <ge...@gmail.com>.
hi ludovic,

if it doesn't happen without view-pooling, it sounds like an issue with
myfaces-core.

regards,
gerhard



2014-06-10 20:52 GMT+02:00 l.penet@senat.fr <l....@senat.fr>:

> Dear all,
>
> I have the following NPE when view pooling is activated and
> CACHE_EL_EXPRESSIONS is set to alwaysRecompile :
>
> java.lang.NullPointerException at org.apache.myfaces.view.facelets.el.
> FaceletStateValueExpression.getValue(FaceletStateValueExpression.java:107)
> at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:68) at
> org.apache.el.parser.AstValue.getValue(AstValue.java:161) at
> org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:47) at
> org.apache.el.parser.AstNot.getValue(AstNot.java:44) at org.apache.el.
> ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) at
> org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression
> .getValue(ContextAwareTagValueExpression.java:96) at
> javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:377)
> at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1211)
> at javax.faces.component.UIComponentBase._isPhaseExecutable(UIComponentBase.java:2440)
> at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1386)
> at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401)
> at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401)
> at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401)
> at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401)
> at javax.faces.component.UIForm.processDecodes(UIForm.java:154) at
> javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401)
> at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401)
> at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401)
> at javax.faces.component.UIViewRoot._processDecodesDefault(UIViewRoot.java:1687)
> at javax.faces.component.UIViewRoot.access$500(UIViewRoot.java:77) at
> javax.faces.component.UIViewRoot$ApplyRequestValuesPhaseProcess
> or.process(UIViewRoot.java:1778) at javax.faces.component.
> UIViewRoot._process(UIViewRoot.java:1653) at javax.faces.component.
> UIViewRoot.processDecodes(UIViewRoot.java:869) at
> org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(
> ApplyRequestValuesExecutor.java:42) at org.apache.myfaces.lifecycle.
> LifecycleImpl.executePhase(LifecycleImpl.java:196) at
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143)
> at org.apache.deltaspike.jsf.impl.listener.request.
> DeltaSpikeLifecycleWrapper.execute(DeltaSpikeLifecycleWrapper.java:89) at
> javax.faces.lifecycle.LifecycleWrapper.execute(LifecycleWrapper.java:46)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:305) at org.apache.catalina.core.
> ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at
> fr.senat.faces.filters.HibernateNoCacheFilter.doFilter(
> HibernateNoCacheFilter.java:123) at org.apache.catalina.core.
> ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:210) at fr.senat.faces.filters.
> HibernateSessionConversationFilter.doFilter(HibernateSessionConversationFilter.java:128)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:243) at org.apache.catalina.core.
> ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at
> fr.senat.faces.filters.HibernateUserFromPrincipalFilter.doFilter(
> HibernateUserFromPrincipalFilter.java:43) at org.apache.catalina.core.
> ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:210) at fr.senat.faces.filters.
> SessionCreationTrackingFilter.doFilter(SessionCreationTrackingFilter.java:48)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:243) at org.apache.catalina.core.
> ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
> at org.apache.coyote.http11.AbstractHttp11Processor.process(
> AbstractHttp11Processor.java:1009) at org.apache.coyote.AbstractProtocol$
> AbstractConnectionHandler.process(AbstractProtocol.java:589) at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:744)
>
> This NPE occurs in the evalutation of an EL expression in a tag component
> which is "cleanly" included. By clean, I mean it that the inclusion is
> defined in a "normal" xhtml file, in opposition to some dynamic inclusions
> I perform sometimes. This tag component is included in my application
> banner. It is not rendered during login, then displayed once the user is
> logged. This is done using standard rendered="..." attribute and did not
> cause a bug before.
>
> In FaceletStateValueExpression#getWrapped(ELContext context)
>
>      public ValueExpression getWrapped(ELContext context)
>     {
>         FacesContext facesContext = (FacesContext) context.getContext(
> FacesContext.class);
>         if (facesContext == null)
>         {
>             facesContext = FacesContext.getCurrentInstance();
>         }
>         UIViewRoot root = facesContext.getViewRoot();
>         FaceletState map = (FaceletState) root.getAttributes().get(
>             ComponentSupport.FACELET_STATE_INSTANCE);
>         return map.getBinding(uniqueId, key);
>     }
>
> the map is defined but does not contained the keyed value. Thus the NPE in
> FaceletStateValueExpression#getValue(ELContext context).
>
> The problem completely disappears if I switch to CACHE_EL_EXPRESSIONS =
> strict.
>
> It occurs with myfaces 2.2.2 and deltaspike 0.7 and 0.8-SNAPSHOT. The
> above stacktrace is obtained with 0.8-SNAPSHOT. I do not know if I it is a
> MyFaces of DS bug.
>
> Tell me what additional information I can provide...
>
> Ludovic
>
> |
> | AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT.
> |
>