[jira] [Commented] (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13039014#comment-13039014 ] Bastian Voigt commented on MYFACES-2979: This is not only a OpenWebBeans problem. It also occurs in my application: Action method: public String logout() { getSessionUtil().invalidateSession(); this.loggedIn = false; return logout; } faces-config: from-view-id/*/from-view-id navigation-case from-outcomelogout/from-outcome to-view-id/presentation/login.xhtml/to-view-id redirect/ /navigation-case Exception (only occurs in stage Development): SCHWERWIEGEND: Servlet.service() for servlet faces-servlet threw exception java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435) at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:126) at org.apache.myfaces.context.servlet.ServletExternalContextImpl.redirect(ServletExternalContextImpl.java:463) at javax.faces.context.ExternalContextWrapper.redirect(ExternalContextWrapper.java:388) at org.apache.myfaces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:128) at com.conergy.sunreader.faces.exceptionhandler.SunreaderExceptionHandler.handleGenericException(SunreaderExceptionHandler.java:62) at com.conergy.sunreader.faces.exceptionhandler.SunreaderExceptionHandler.handle(SunreaderExceptionHandler.java:46) at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:191) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:349) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.conergy.sunreader.filter.EncodingFilter.doFilter(EncodingFilter.java:45) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:679) 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();
[jira] [Commented] (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13010887#comment-13010887 ] Simon Godard commented on MYFACES-2979: --- I'm experiencing the same problem although I'm not using OWB. {code} java.lang.IllegalStateException: org.apache.shiro.session.UnknownSessionException: There is no session with id [bc6066fc-96e5-43ee-bf56-951201b5e702] org.apache.shiro.web.servlet.ShiroHttpSession.getAttribute(ShiroHttpSession.java:133) org.apache.myfaces.context.servlet.SessionMap.getAttribute(SessionMap.java:50) org.apache.myfaces.util.AbstractThreadSafeAttributeMap.containsKey(AbstractThreadSafeAttributeMap.java:58) org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:192) javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143) org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142) org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:65) org.apache.myfaces.el.convert.VariableResolverToELResolver.getValue(VariableResolverToELResolver.java:116) javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143) org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142) org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:68) org.apache.el.parser.AstValue.getValue(AstValue.java:112) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:85) javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:243) javax.faces.component.UIOutput.getValue(UIOutput.java:71) javax.faces.component.UIInput.getValue(UIInput.java:143) org.apache.myfaces.view.facelets.tag.ui.DebugPhaseListener$DebugVisitCallback._getRealValue(DebugPhaseListener.java:264) org.apache.myfaces.view.facelets.tag.ui.DebugPhaseListener$DebugVisitCallback.visit(DebugPhaseListener.java:187) org.apache.myfaces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:139) javax.faces.component.UIComponent.visitTree(UIComponent.java:773) javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:991) javax.faces.component.UIComponent.visitTree(UIComponent.java:793) javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:991) javax.faces.component.UINamingContainer.visitTree(UINamingContainer.java:162) javax.faces.component.UIComponent.visitTree(UIComponent.java:793) javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:991) javax.faces.component.UIComponent.visitTree(UIComponent.java:793) javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:991) org.apache.myfaces.view.facelets.tag.ui.DebugPhaseListener._doTreeVisit(DebugPhaseListener.java:310) org.apache.myfaces.view.facelets.tag.ui.DebugPhaseListener.afterPhase(DebugPhaseListener.java:286) org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:111) org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:185) org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) {code} 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
[jira] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12934881#action_12934881 ] Leonardo Uribe commented on MYFACES-2979: - Maybe that one suggest that the behavior committed on MYFACES-2676 should be optional, or maybe we should do something different instead evaluate ValueExpression bound to value properties. Maybe for debugging purposes, at first view it is enough to know the submittedValue and localValue. Evaluate value VE seems to be redundant, its more, for that one it is more interesting to print the expression string on debug page. 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] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12934882#action_12934882 ] Jakob Korherr commented on MYFACES-2979: Leo, The problem is not that the ValueExpressions cannot be evaluated while building the debug page. The problem is that visitTree() does not work because of a isRendered() evaluation (which leads to a ValueExpression evaluation of rendered=#{...}). If a normal value=#{...} ValueExpression can't be evaluated, the exception is catched by the DebugPhaseListener. 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
[jira] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=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. --
[jira] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12934903#action_12934903 ] Jakob Korherr commented on MYFACES-2979: Yes, that's a great idea. Also a try{ } catch { // just logging, no re-throwing } around the DebugPhaseListener code would be good. In this way we prevent letting Exceptions in DebugPhaseListener break MyFaces. 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.
[jira] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12934930#action_12934930 ] Leonardo Uribe commented on MYFACES-2979: - Yes, thinking more about it, in theory, in JSF 2.0 it should be possible to show more than one exception, so other alternative we could consider in this case is use publishException only if an exception was already thrown, but just logging them is ok. 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.
[jira] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12934289#action_12934289 ] Jakob Korherr commented on MYFACES-2979: I know the DebugPhaseListener is the reason why this does not work, but shouldn't OWB be able to create a new session once the old one is invalidated rather than throwing a ContextNotActiveException? 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 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.
[jira] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12934293#action_12934293 ] Jan-Kees van Andel commented on MYFACES-2979: - IMHO, that would be an unwanted side effect of the PhaseListener. I'm not sure what the spec says about this (I guess nothing), but recreating a session within the same request that invalidated it, would be pretty bad behavior if you ask me... The annoying bit is, if we choose to add a check in the PhaseListener, there might be other checks we need to add there. I suggest to fix it in the PhaseListener, to keep it as much side-effect-free as possible. 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 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.
[jira] Commented: (MYFACES-2979) Session invalidation in Development Stage causes error in OpenWebBeans
[ https://issues.apache.org/jira/browse/MYFACES-2979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12934297#action_12934297 ] Jakob Korherr commented on MYFACES-2979: Yes, you're right. +1 on committing the patch! However, we will maybe see some more side effects of the DebugPhaseListener. 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.