[ 
https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12934892#action_12934892
 ] 

Leonardo Uribe commented on MYFACES-2979:
-----------------------------------------

Ok, but anyway it is caused by an unexpected EL evaluation. In that case, 
DebugPhaseListener should swallow the exception and let code continue, so maybe 
we need to add some code in that part. Instead use visit tree hint for skip 
unrendered, why don't check for that condition on DebugVisitCallback, so if we 
can't evaluate it we can decide if we include it or not? Since this feature is 
not intended for production, it is not a problem to do some additional cycles.

> Session invalidation in Development Stage causes error in OpenWebBeans
> ----------------------------------------------------------------------
>
>                 Key: MYFACES-2979
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2979
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-314
>    Affects Versions: 2.0.3-SNAPSHOT
>         Environment: MyFaces 2.0.3-SNAPSHOT in Dev mode, OpenWebBeans 1.0.0, 
> Tomcat 6.0.29 (with Glassfish EL 2.2)
>            Reporter: Jan-Kees van Andel
>         Attachments: debugphaselistener.patch
>
>
> I have a logout method, shown below:
>     public String logout() {
>         final FacesContext fc = FacesContext.getCurrentInstance();
>         final ExternalContext externalContext = fc.getExternalContext();
>         try {
>             externalContext.invalidateSession();
>             externalContext.redirect("http://www.google.nl";);
>         } catch (IOException e) {
>             log.error("Error redirecting after logout", e);
>         } finally {
>             fc.responseComplete();
>         }
>         return null;
>     }
> When I invoke this method, I get the following Exception from OpenWebBeans:
> javax.enterprise.context.ContextNotActiveException: WebBeans context with 
> scope type annotation @SessionScoped does not exist within current thread
>       at 
> org.apache.webbeans.container.BeanManagerImpl.getContext(BeanManagerImpl.java:309)
>       at 
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:124)
>       at 
> org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:95)
>       at 
> org.apache.myfaces.examples.ebanking.web.bean.SessionBean_$$_javassist_2.getCustomer(SessionBean_$$_javassist_2.java)
>       at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
>       at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
>       at 
> org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142)
>       at org.apache.el.parser.AstValue.getValue(AstValue.java:123)
>       at org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:45)
>       at org.apache.el.parser.AstNot.getValue(AstNot.java:42)
>       at 
> org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
>       at 
> org.apache.webbeans.el.WrappedValueExpression.getValue(WrappedValueExpression.java:68)
>       at 
> org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:85)
>       at 
> javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:260)
>       at 
> javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1007)
>       at javax.faces.component.UIComponent.isVisitable(UIComponent.java:289)
>       at javax.faces.component.UIComponent.visitTree(UIComponent.java:752)
>       at 
> javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:991)
>       at javax.faces.component.UIComponent.visitTree(UIComponent.java:778)
>       at 
> javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:991)
>       at 
> org.apache.myfaces.view.facelets.tag.ui.DebugPhaseListener._doTreeVisit(DebugPhaseListener.java:310)
>       at 
> org.apache.myfaces.view.facelets.tag.ui.DebugPhaseListener.afterPhase(DebugPhaseListener.java:286)
>       at 
> org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:111)
>       at 
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:185)
>       at 
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
> This happens because the DebugPhaseListener starts visiting the tree and, in 
> the process, needs to resolve a value expression, which points to an OWB 
> session bean.
> It only happens when the DebugPhaseListener is installed. In production mode 
> everything is fine.

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

Reply via email to