Norman et al,<br><br>Please refer to this weld-dev (at the time webbeans-dev) thread for an analysis of the problem.<br><br><a href="http://lists.jboss.org/pipermail/weld-dev/2009-May/000979.html">http://lists.jboss.org/pipermail/weld-dev/2009-May/000979.html</a><br>
<br>My memory of the issue has gotten a bit fuzzy, but basically, as of JSF 2.0, parts of the component tree are visited in the restore view phase, which happens to resolve value expressions bound to UIData components. This triggers a scope not active exception if a conversation-scoped bean is hit.<br>
<br>It&#39;s a chicken egg problem, unfortunately. There may be a way to have a temporary conversation put in place during the time when the component tree is walked during restore view just to avoid this problem, but I&#39;m not 100% sure that&#39;s the right solution.<br>
<br>Regardless of how we proceed, please be sure to keep this FAQ up to date. It&#39;s important for people planning to move to JSF 2 with Seam 2.<br><br><a href="http://seamframework.org/Documentation/DoesSeamWorkWithJSF2">http://seamframework.org/Documentation/DoesSeamWorkWithJSF2</a><br>
<br>Thanks,<br><br>Dan<br><br><div class="gmail_quote">On Wed, Jan 13, 2010 at 12:04 AM, Norman Richards <span dir="ltr">&lt;<a href="mailto:orb@nostacktrace.com">orb@nostacktrace.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="word-wrap: break-word;">I&#39;ve been trying to track down a problem affecting several of the Seam 2 examples running on JBoss 6.  It appears that JSF restoreView is now sometimes calling EL in places it didn&#39;t in earlier JSF versions.  If that EL involves a conversation-scoped component, the application will fail since the conversation state is not active until after restoreView.  <div>
<br></div><div>Ex: </div><div><br></div><div>/myView.xhtml contains an &lt;h:dataTable value=&quot;#{searchResults}&quot;  ...  etc/&gt;</div><div>If the component that provides searchResults does @In for a conversation-scoped component, like ManagedPersistenceContext, the application will now fail.</div>
<div><br></div><div><br></div><div>Of course, the view works fine for GET requests, since there is no view being restored.  Is this expected behavior for JSF 2, or is it perhaps a bug in the restore view implementation?  I&#39;m not familiar enough with the changes in JSF2 yet to know what to expect.  Here&#39;s a stack trace to give some context.  The key problems are around UIViewRoot.processRestoreState and UIData.visitTree.</div>
<div><br></div><div><br></div><div><br></div><div><span style="font-family: &#39;Trebuchet MS&#39;,Verdana,Arial,sans-serif; font-size: small;">Exception during request processing:<div style="font-family: &#39;Trebuchet MS&#39;,Verdana,Arial,sans-serif; font-size: small;">
Caused by javax.servlet.ServletException with message: &quot;@In attribute requires non-null value: searchService.entityManager&quot;<pre style="border: 1px solid rgb(204, 204, 204); margin: 10px 0px; padding: 8px; background-color: rgb(249, 249, 249);">
javax.faces.webapp.FacesServlet.service(FacesServlet.java:323)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183)
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95)
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:637)</pre></div><div style="font-family: &#39;Trebuchet MS&#39;,Verdana,Arial,sans-serif; font-size: small;">Caused by org.jboss.seam.RequiredException with message: &quot;@In attribute requires non-null value: searchService.entityManager&quot;<pre style="border: 1px solid rgb(204, 204, 204); margin: 10px 0px; padding: 8px; background-color: rgb(249, 249, 249);">
org.jboss.seam.Component.getValueToInject(Component.java:2338)
org.jboss.seam.Component.injectAttributes(Component.java:1736)
org.jboss.seam.Component.inject(Component.java:1554)
org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
actions.SearchService_$$_javassist_seam_4.getSearchResults(SearchService_$$_javassist_seam_4.java)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
org.jboss.seam.Component.callComponentMethod(Component.java:2249)
org.jboss.seam.Component.getInstanceFromFactory(Component.java:2080)
org.jboss.seam.Component.getInstance(Component.java:2011)
org.jboss.seam.Component.getInstance(Component.java:1983)
org.jboss.seam.Component.getInstance(Component.java:1977)
org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:148)
org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:51)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
javax.faces.component.UIData.getValue(UIData.java:554)
javax.faces.component.UIData.getDataModel(UIData.java:1243)
javax.faces.component.UIData.setRowIndex(UIData.java:447)
javax.faces.component.UIData.visitTree(UIData.java:1179)
javax.faces.component.UIComponent.visitTree(UIComponent.java:1454)
javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:868)
com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:197)
org.jboss.seam.jsf.SeamStateManager.restoreView(SeamStateManager.java:76)
com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:131)
com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:143)
org.jboss.seam.jsf.SeamViewHandler.restoreView(SeamViewHandler.java:93)
com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:316)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:199)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183)
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95)
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:637)</pre></div></span><div><br></div></div><div><br></div></div><br>_______________________________________________<br>
seam-dev mailing list<br>
<a href="mailto:seam-dev@lists.jboss.org">seam-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/seam-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/seam-dev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Dan Allen<br>Senior Software Engineer, Red Hat | Author of Seam in Action<br>Registered Linux User #231597<br><br><a href="http://mojavelinux.com">http://mojavelinux.com</a><br>
<a href="http://mojavelinux.com/seaminaction">http://mojavelinux.com/seaminaction</a><br><a href="http://www.google.com/profiles/dan.j.allen">http://www.google.com/profiles/dan.j.allen</a><br>