2 Replies Latest reply on Nov 25, 2008 7:08 PM by kstoneman

    Session Persistenece

    kstoneman
      Could anyone help me with this or has anyone seen this same type of issue?

      Upon initial login a session object is created with a customer.  After the customer object of the PMsession is successfully set to a non-null value, the subsequent @In injection of the customer of that customer object throws the following exception:

      Code snippet:

      PMSession.java:
      @Name("PMSession")
      @Scope(ScopeType.SESSION)
      public class PMSession {
            private Customer customer;

      }

      CustomerSummary.java:
      @Name("customerSummary")
      public class CustomerSummary {

            @In(value = "#{PMSession.customer}")
            private Customer customer;

      }


      SEVERE: Error Rendering View[/customerSummary.xhtml]
      javax.faces.FacesException: javax.el.ELException: /WEB-INF/facelets/accountTable.xhtml @18,18 rendered="#{not empty accounts}": /customerSummary.xhtml @34,54 accounts="#{customerSummary.linkedAccounts}": Error reading 'linkedAccounts' on type com.nationalcity.points.management.session.CustomerSummary_$$_javassist_10
              at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:373)
              at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:276)
              at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262)
              at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:199)
              at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:194)
              at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:121)
              at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
              at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
              at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
              at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
              at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
              at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
              at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
              at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
              at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
              at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
              at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
              at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)

      Caused by: javax.el.ELException: /WEB-INF/facelets/accountTable.xhtml @18,18 rendered="#{not empty accounts}": /customerSummary.xhtml @34,54 accounts="#{customerSummary.linkedAccounts}": Error reading 'linkedAccounts' on type com.nationalcity.points.management.session.CustomerSummary_$$_javassist_10
              at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76)
              at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:370)
              ... 52 more
      Caused by: org.jboss.seam.RequiredException: @In attribute requires non-null value: customerSummary.#{PMSession.customer}
              at org.jboss.seam.Component.getValueToInject(Component.java:2178)
              at org.jboss.seam.Component.injectAttributes(Component.java:1601)
              at org.jboss.seam.Component.inject(Component.java:1419)
              at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:45)
              at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
              at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
              at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
              at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
              at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)


      Thanks,
      Ken

        • 1. Re: Session Persistenece
          shane.bryzak

          Do you have a getter method for customer?

          • 2. Re: Session Persistenece
            kstoneman
            Shane,

            Yes, there is a getter method for the customer.  However, what we found out is that we were missing some configurations within SEAM in order to control the session persistence but did not realize it because the app is deployed in a clustered environment.  The only way that we found out what was happening was because one of the nodes in the cluster went down so the session was unable to stay sticky to one node simply through the Mod_jk and JBOSS configs.

            Thanks,
            Ken