Uploaded image for project: 'DeltaSpike'
  1. DeltaSpike
  2. DELTASPIKE-830

windowhandling doesn't work correctly when onload defined on h:body

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.2.1
    • 1.4.2
    • JSF-Module, JSF22-Module
    • None
    • Glassfish 3.1.2.2 and Weblogic 12.1.2.2

    Description

      While testing delta-spike in clientview mode, coming from CODI, we have one view that is giving problems trying to access ViewAccessScoped beans during the restored view phase.

      Caused by: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type org.apache.deltaspike.core.api.scope.ViewAccessScoped

      Namely the exception we get in our page is the following:
      Caused By: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type org.apache.deltaspike.core.api.scope.ViewAccessScoped
      at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:590)
      at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:71)
      at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)
      at com.corp.whatever.component.ui.web.CR100Bean$Proxy$$$_WeldClientProxy.getPageIds(CR100Bean$Proxy$$$_WeldClientProxy.java)
      at sun.reflect.GeneratedMethodAccessor1663.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at javax.el.BeanELResolver.getValue(BeanELResolver.java:305)
      at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
      at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
      at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
      at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
      at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
      at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
      at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
      at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
      at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:99)
      at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
      at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
      at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
      at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
      at com.sun.faces.facelets.tag.jstl.core.SetHandler.apply(SetHandler.java:163)
      at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
      at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
      at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:187)
      at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
      at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
      at com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:188)
      at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
      at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
      at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
      at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:320)
      at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:379)
      at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:358)
      at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
      at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
      at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
      at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
      at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:320)
      at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:379)
      at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:358)
      at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
      at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
      at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
      at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
      at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:164)
      at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:914)
      at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:571)
      at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:142)
      at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:301)
      at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:301)
      at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192)

      ------------------
      – In glassfish 3.1.2
      -------------
      we can see that exception takes place here:
      /**

      • Gets an active context of the given scope. Throws an exception if there
      • are no active contexts found or if there are too many matches
        *
      • @param scopeType The scope to match
      • @return A single active context of the given scope
      • @see javax.enterprise.inject.spi.BeanManager#getContext(java.lang.Class)
        */
        public Context getContext(Class<? extends Annotation> scopeType) {
        Context activeContext = null;
        final List<Context> ctx = contexts.get(scopeType);
        if (ctx == null) { //this happens if no context is registered throw new ContextNotActiveException(CONTEXT_NOT_ACTIVE, scopeType.getName()); }

        for (Context context : ctx) {
        if (context.isActive())

        Unknown macro: { if (activeContext == null) { activeContext = context; } else { throw new IllegalStateException(DUPLICATE_ACTIVE_CONTEXTS, scopeType.getName()); } }

        }
        if (activeContext == null)

        { throw new ContextNotActiveException(CONTEXT_NOT_ACTIVE, scopeType.getName()); }

      return activeContext;
      }

      Where the Context Appears to exist but no be active.

      Also the bean that is reported as not being active, when we navigate out of hte view, we can see it being destoryed in a @preDestroy call.

      I have created a sample application that tries as best as possible to reproduce the sitatution we experience.
      Is there a way by which I could upload a small maven project for this?

      I am adding it to my google drive for the moment.
      https://drive.google.com/file/d/0B_dEiNBGUsxqQWRzVVRJT0RlU0E/view?usp=sharing

      In th sample project a tiny index.xhtml exists. Access it for example under:
      http://schb7mw7321:8080/jsf-viewaccessscoped/index.xhtml?dsrid=933&dswid=ViewerWindow

      If your port is configured to be 8080 (glassfish defaults or 7001 in weblogic).

      The page will then display several tabs using a prime faces ui component.
      The first time a TAB is clicked, the UI processes the action without problems.
      The second time a tab is clicked JSF complains that it cannot access the bean because its context is not active.

      The sample project is an imperfect reproduction of our real case scenario, since in this case the exception is taking place during the apply request values phase as opposed to on the restore view phase:

      Here is an example of stack trace from this sample app.
      2015-02-04 22:41:11.460 WARNING 55 /index.xhtml @45,83 rendered="#

      {cr100.selectedTab eq 'default'}": org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type org.apache.deltaspike.core.api.scope.ViewAccessScoped (javax.enterprise.resource.webcontainer.jsf.lifecycle)
      javax.el.ELException: /index.xhtml @45,83 rendered="#{cr100.selectedTab eq 'default'}

      ": org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type org.apache.deltaspike.core.api.scope.ViewAccessScoped
      at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
      at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
      at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:415)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1168)
      at org.primefaces.component.panel.Panel.processDecodes(Panel.java:290)
      at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1178)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1178)
      at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:925)
      at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      at org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(DeltaSpikeLifecycleWrapper.java:89)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
      at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
      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 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
      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$AdapterCallable.call(ContainerMapper.java:317)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
      at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
      at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
      at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
      at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
      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:745)
      Caused by: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type org.apache.deltaspike.core.api.scope.ViewAccessScoped
      at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:619)
      at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:71)
      at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)
      at org.jboss.weld.proxies.ViewAccessedBean$Proxy$$$_WeldClientProxy.getSelectedTab(ViewAccessedBean$Proxy$$$_WeldClientProxy.java)
      at sun.reflect.GeneratedMethodAccessor876.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at javax.el.BeanELResolver.getValue(BeanELResolver.java:363)
      at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
      at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
      at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
      at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
      at com.sun.el.parser.AstEqual.getValue(AstEqual.java:58)
      at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
      at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
      at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)

      Many thanks for the help.

      Attachments

        Activity

          People

            tandraschko Thomas Andraschko
            ngdem Nuno G. de M
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: