IllegalStateException: getAttribute: session is no longer valid

I have a problem with my first JSF / IceFaces application (version 1.8.2) running on JBoss 5.1.0.

I get an exception after a while telling me about session issues. This is strange because I don't use sessions in my code at all. The following logs show that due to this error (from JBoss) none of my backup beans could be created:

 com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: bean.Abgrenzungsreise.  at com.sun.faces.mgbean.BeanBuilder.newBeanInstance (BeanBuilder.java:191) at com.sun.faces.mgbean.BeanBuilder.build (BeanBuilder.java:106) at com.sun.faces.mgbean.BeanManager.createAndPush (BeanManager.javahaps68) at com.sun.faces.mgbean.BeanManager.create (BeanManager.java:222) at com.sun.faces.el.ManagedBeanELResolver.getValue (ManagedBeanELResolver.java:86) at javax.el. CompositeELResolver.getValue (CompositeELResolver.java:54) at com.sun.faces.el.FacesCompositeELResolver.getValue (FacesCompositeELResolver.java:72) at org.apache.el.parser.AstIdentifier.getValue (AstIdentifier.java61 .apache.el.parser.AstValue.getValue (AstValue.java:107) at org.apache.el.ValueExpressionImpl.getValue (ValueExpressionImpl.java:186) at javax.faces.component.UISelectItems.getValue (UISelectItems.ava ) at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.getSelectItems (MenuRenderer.java:637) at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.countSelectOptionsRecursive (MenuRen48  at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.renderSelect (MenuRenderer.java{77) at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.encodeEnd (MenuRenderer.java:119) atponices. ... : 370) at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren (GridRenderer.java:208) at javax.faces.component.UIComponentBase.encodeChildren (UIComponentBase.java:837) at com.iceskoft.en. dom_html_basic.DomBasicRenderer.encodeParentAndChildren (DomBasicRenderer.java{5858) at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren (GroupRenderer.java:96) at javax.ensesponponaseaseponponase.Uponaseponponase.Uponaseponponase.Uponaseponponase.Uponenterponponase.Uponourceponponase.Uponenterponponase.Uponourceponponase.Uponenterponponase.Uponenterponponase.Uponourceponpon.U.Undaseponponaseponpon.U.Undomenponponase.Uponomenponponase.Uponenterponponase.Uponourceponpon.U.U at com.icesoft.faces.component.util.CustomComponentUtils.r  enderChild (CustomComponentUtils.javahaps39) at com.icesoft.faces.component.paneltabset.PanelTabSetRenderer.writeTabCell (PanelTabSetRenderer.java:977) at com.icesoft.faces.component.paneltabreenreredereenreredereenreredererererederererederereredererederererederererederererederererederererederererederererederereredederererederererederererederereredederereredederererederererederererederererederer at javax.faces.component.UIComponentBase.encodeEnd (UIComponentBase.java:861) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:503) at com.icesoft.faces.application.D2DViewHandler.renderRespon .java: 497) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:497) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:497) at com.icesoft.faces. application.D2DViewHandler.renderResponse (D2DViewHandler.java:497) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:456) at com.icesoft.faces.application.D2DViewHandler.renderView (D2DavaHandler) at com.sun.faces.lifecycle.RenderResponsePhase.execute (Rende  rResponsePhase.java:110) at com.sun.faces.lifecycle.Phase.doPhase (Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render (LifecycleImpl.java:139) at com.icesoft.faces .webapp.http.core.JsfLifecycleExecutor.apply (JsfLifecycleExecutor.java:19) at com.icesoft.faces.context.View $ 2 $ 1.respond (View.java:48) at com.icesoft.faces.webapp.http.servlet .ServletRequestResponse.respondWith (ServletRequestResponse.java:201) at com.icesoft.faces.context.View $ 2.serve (View.java:77) at com.icesoft.faces.context.View.servePage (View.java:149) at com.icesoft.faces.webapp.http.core.SingleViewServer.service (SingleViewServer.java:52) at com.icesoft.faces.webapp.http.common.ServerProxy.service (ServerProxy.java:11) at com.icesoft .faces.webapp.http.servlet.MainSessionBoundServlet $ 4.service (MainSessionBoundServlet.java:149) at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service (PathDispatcherServer.java:24) at com.icesoft. faces.webapp.http.servlet.BasicAdaptingServlet.service (BasicAdapt  ingServlet.java:16) at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service (PathDispatcher.java:23) at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service (SessionDispatcher.java: 53) at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service (PathDispatcher.java:23) at com.icesoft.faces.webapp.http.servlet.MainServlet.service (MainServlet.java:131) at javax .servlet.http.HttpServlet.service (HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.DoF : 206) at org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:638) at org.apache.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:444) at org.apache.catalina.core. ApplicationDispatcher.doForward (ApplicationDispatcher.javahaps82) at org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.javahaps10) a  t org.apache.jasper.runtime.PageContextImpl.doForward (PageContextImpl.java:696) at org.apache.jasper.runtime.PageContextImpl.forward (PageContextImpl.java:667) at org.apache.jsp.index_jsp._jspService .java: 58) at org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service (HttpServlet.java:717) at org.apache.jasper.servlet. JspServletWrapper.service (JspServletWrapper.javahaps69) at org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:322) at org.apache.jasper.servlet.JspServlet.service (JspServlet.javax249) .servlet.http.HttpServlet.service (HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.DoF : 206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter (ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (Applicat  ionFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:235) at orgapache .core.StandardContextValve.invoke (StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke (SecurityAssociationValve.java:190) at org.jboss.web.tomcat.securityVJonConveValv.vacconValve.vacconValve .java: 92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process (SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invokeabjvalmentValvementalmenttextonmentalmenttextonmentalmentmentmentalmenttext apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.Cached. invoke (CachedConnectionValve.java:158) at org.apache.catalina.core.St  andardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.javahaps30) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java: orgava .apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process (Http11Protocol.javaืœ98) at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:447) at java.lang.Threadr (Thread.java:662) Caused by: com.icesoft.faces.webapp.http.core.SessionExpiredException: User session has expired or it was invalidated.  at com.icesoft.faces.webapp.http.servlet.ProxyHttpSession.getAttribute (ProxyHttpSession.java:77) at com.icesoft.faces.webapp.http.servlet.ServletSessionAttributeMap.getAttribute (ServletSessionAttributeMap.java16 .faces.context.AbstractAttributeMap.containsKey (AbstractAttributeMap.java:85) at com.sun.faces.mgbean.BeanManager.isBeanInScope (BeanManager.java:177) at com.sun.faces.el.ManagedBeanELResolver.getValava.getValavaRelava Manuel : 82) at javax.el.CompositeELResolver.getValue (CompositeELResolver.java:54) at com.sun.faces.el.FacesCompositeELResolver.getValue (FacesCompositeELResolver.java:72) at bean.Abgrenzungsreise. (Abgrenzung:39) sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructor.accesslient.jutor java.su newInstance (Constructor.  java: 513) at java.lang.Class.newInstance0 (Class.javahaps55) at java.lang.Class.newInstance (Class.java:308) at com.sun.faces.mgbean.BeanBuilder.newBeanInstance (BeanBuilder.java : 186) ... 86 more 
Caused by: java.lang.IllegalStateException: getAttribute: Session already invalidated at org.apache.catalina.session.StandardSession.getAttribute (StandardSession.java:1032) at org.apache.catalina.session.StandardSessionFacade.getAttribute (StandardSavaFacade. 110) at com.icesoft.faces.webapp.http.servlet.ProxyHttpSession.getAttribute (ProxyHttpSession.java:75) ... 100 more 2011-01-28 08: 05: 54,326 ERROR [com.icesoft.faces.context. View] (http-0.0.0.0-8080-3) Problem encountered during View.servePage com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: bean.Abgrenzungsreise. at com.sun.faces.mgbean.BeanBuilder.newBeanInstance (BeanBuilder.java:191) at com.sun.faces.mgbean.BeanBuilder.build (BeanBuilder.java:106) at com.sun.faces.mgbean.BeanManager.createAndPush (BeanManager.javahaps68) at com.sun.faces.mgbean.BeanManager.create (BeanManager.java:222) at com.sun.faces.el.ManagedBeanELResolver.getValue (ManagedBeanELResolver.java:86) at javax.el. CompositeELResolver.getValue (CompositeELResolver.java:54) at com.sun.faces.el.FacesCompositeELResolver.getValue (FacesCompositeELResolver.java:72) at org.apache.el.parser.AstIdentifier.getValue (AstIdentifier.java61 .apache.el.parser.AstValue.getValue (AstValue.java:107) at org.apache.el.ValueExpressionImpl.getValue (ValueExpressionImpl.java:186) at javax.faces.component.UISelectItems.getValue (UISelectItems.ava ) at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.getSelectItems (MenuRenderer.java:637) at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.countSelectOptionsRecursive (MenuRen48 at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.renderSelect (MenuRenderer.java{77) at com.icesoft.faces.renderkit.dom_html_basic.MenuRenderer.encodeEnd (MenuRenderer.java:119) atponices. ... : 370) at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren (GridRenderer.java:208) at javax.faces.component.UIComponentBase.encodeChildren (UIComponentBase.java:837) at com.iceskoft.en. dom_html_basic.DomBasicRenderer.encodeParentAndChildren (DomBasicRenderer.java{5858) at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren (GroupRenderer.java:96) at javax.ensesponponaseaseponponase.Uponaseponponase.Uponaseponponase.Uponaseponponase.Uponenterponponase.Uponourceponponase.Uponenterponponase.Uponourceponponase.Uponenterponponase.Uponenterponponase.Uponourceponpon.U.Undaseponponaseponpon.U.Undomenponponase.Uponomenponponase.Uponenterponponase.Uponourceponpon.U.U at com.icesoft.faces.component.util.CustomComponentUtils.r enderChild (CustomComponentUtils.javahaps39) at com.icesoft.faces.component.paneltabset.PanelTabSetRenderer.writeTabCell (PanelTabSetRenderer.java:977) at com.icesoft.faces.component.paneltabreenreredereenreredereenreredererererederererederereredererederererederererederererederererederererederererederererederereredederererederererederererederereredederereredederererederererederererederererederer at javax.faces.component.UIComponentBase.encodeEnd (UIComponentBase.java:861) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:503) at com.icesoft.faces.application.D2DViewHandler.renderRespon .java: 497) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:497) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:497) at com.icesoft.faces. application.D2DViewHandler.renderResponse (D2DViewHandler.java:497) at com.icesoft.faces.application.D2DViewHandler.renderResponse (D2DViewHandler.java:456) at com.icesoft.faces.application.D2DViewHandler.renderView (D2DavaHandler) at com.sun.faces.lifecycle.RenderResponsePhase.execute (Rende rResponsePhase.java:110) at com.sun.faces.lifecycle.Phase.doPhase (Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render (LifecycleImpl.java:139) at com.icesoft.faces .webapp.http.core.JsfLifecycleExecutor.apply (JsfLifecycleExecutor.java:19) at com.icesoft.faces.context.View $ 2 $ 1.respond (View.java:48) at com.icesoft.faces.webapp.http.servlet .ServletRequestResponse.respondWith (ServletRequestResponse.java:201) at com.icesoft.faces.context.View $ 2.serve (View.java:77) at com.icesoft.faces.context.View.servePage (View.java:149) at com.icesoft.faces.webapp.http.core.SingleViewServer.service (SingleViewServer.java:52) at com.icesoft.faces.webapp.http.common.ServerProxy.service (ServerProxy.java:11) at com.icesoft .faces.webapp.http.servlet.MainSessionBoundServlet $ 4.service (MainSessionBoundServlet.java:149) at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service (PathDispatcherServer.java:24) at com.icesoft. faces.webapp.http.servlet.BasicAdaptingServlet.service (BasicAdapt ingServlet.java:16) at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service (PathDispatcher.java:23) at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service (SessionDispatcher.java: 53) at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service (PathDispatcher.java:23) at com.icesoft.faces.webapp.http.servlet.MainServlet.service (MainServlet.java:131) at javax .servlet.http.HttpServlet.service (HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.DoF : 206) at org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:638) at org.apache.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:444) at org.apache.catalina.core. ApplicationDispatcher.doForward (ApplicationDispatcher.javahaps82) at org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.javahaps10) a t org.apache.jasper.runtime.PageContextImpl.doForward (PageContextImpl.java:696) at org.apache.jasper.runtime.PageContextImpl.forward (PageContextImpl.java:667) at org.apache.jsp.index_jsp._jspService .java: 58) at org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service (HttpServlet.java:717) at org.apache.jasper.servlet. JspServletWrapper.service (JspServletWrapper.javahaps69) at org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:322) at org.apache.jasper.servlet.JspServlet.service (JspServlet.javax249) .servlet.http.HttpServlet.service (HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.DoF : 206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter (ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (Applicat ionFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:235) at orgapache .core.StandardContextValve.invoke (StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke (SecurityAssociationValve.java:190) at org.jboss.web.tomcat.securityVJonConveValv.vacconValve.vacconValve .java: 92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process (SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invokeabjvalmentValvementalmenttextonmentalmenttextonmentalmentmentmentalmenttext apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.Cached. invoke (CachedConnectionValve.java:158) at org.apache.catalina.core.St andardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.javahaps30) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java: orgava .apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process (Http11Protocol.javaืœ98) at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:447) at java.lang.Threadr (Thread.java:662) Caused by: com.icesoft.faces.webapp.http.core.SessionExpiredException: User session has expired or it was invalidated. at com.icesoft.faces.webapp.http.servlet.ProxyHttpSession.getAttribute (ProxyHttpSession.java:77) at com.icesoft.faces.webapp.http.servlet.ServletSessionAttributeMap.getAttribute (ServletSessionAttributeMap.java16 .faces.context.AbstractAttributeMap.containsKey (AbstractAttributeMap.java:85) at com.sun.faces.mgbean.BeanManager.isBeanInScope (BeanManager.java:177) at com.sun.faces.el.ManagedBeanELResolver.getValava.getValavaRelava Manuel : 82) at javax.el.CompositeELResolver.getValue (CompositeELResolver.java:54) at com.sun.faces.el.FacesCompositeELResolver.getValue (FacesCompositeELResolver.java:72) at bean.Abgrenzungsreise. (Abgrenzung:39) sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructor.accesslient.jutor java.su newInstance (Constructor. java: 513) at java.lang.Class.newInstance0 (Class.javahaps55) at java.lang.Class.newInstance (Class.java:308) at com.sun.faces.mgbean.BeanBuilder.newBeanInstance (BeanBuilder.java : 186) ... 86 more Caused by: java.lang.IllegalStateException: getAttribute: Session already invalidated at org.apache.catalina.session.StandardSession.getAttribute (StandardSession.java:1032) at org.apache.catalina.session. StandardSessionFacade.getAttribute (StandardSessionFacade.java:110) at com.icesoft.faces.webapp.http.servlet.ProxyHttpSession.getAttribute (ProxyHttpSession.java:75) ... 100 more

I realized that an exception is thrown half an hour after the last user action.

+3
source share
2 answers

The same issue was reported on the IceFaces forums:

Suggested solutions:

This happened for us when we turned off asynchronous mode.

<!-- Specifies to the ICEfaces framework that synchronous update mode is to be used. By default, ICEfaces uses asynchronous update mode to support server-initiated updates (AJAX push). Setting to true will enable synchronous update mode and disable AJAX push features. --> <context-param> <param-name>com.icesoft.faces.synchronousUpdate</param-name> <param-value>true</param-value> </context-param> 

When this was false, we received a message about a small session. When this was the case, the session timeout behavior was a stack trace.

and

In the meantime, I switched from ICEfaces 1.8.2 to what is currently in the svn repository (1.8.3+). And the behavior has changed. No more wreck.

Regarding your claim that you are not using a session anywhere, stacktrace reports that it is trying to create a session-driven managed bean when this exception has been thrown. So you are definitely using the session :)


Update according to comments: you really should definitely not assign (request based!) FacesContext as a static variable. In addition, the injection of other beans should be done <managed-property> in faces-config.xml . Otherwise, it is not an โ€œinjectionโ€ at all, but simply access to another bean. With an injection, you let JSF do the work to set another bean as a property of the current bean. An example can be found here .

+2
source

The reason for the exception was in my SessionBean classes.
I asked above if the reason could be the injection of beans into another via faceContext. Now I give an answer to myself: "Yes, this may be the reason."

 public class MySessionBean { private static FacesContext facesContext = FacesContext.getCurrentInstance(); private utils.AnotherSessionBean injectedSessionBean = (utils.AnotherSessionBean) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "anotherSessionBean"); // ... } 

I felt free to instantiate the current FacesContext outside of any method or constructor, which was not very good, because after the timeout session I used the old or mabey no session context. MySessionBean was rebooted or received a new instance, but it did not update the FacesContext. The result of this is described above ^^

Conclusion: therefore, getting the FacesContext belongs to the code block of a method or constructor.

Many thanks for your help!

+1
source

Source: https://habr.com/ru/post/952579/


All Articles