Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-7759

Weld applications throw javax.ejb.NoSuchEJBException after certain time of inactivity in a session

XMLWordPrintable

      When using stateful session beans with CDI, the following exception is thrown after approximately 11 minutes of inactivity in a session. I'm not using any specific settings - just defaults. My SFSB class in the stacktrace is org.jboss.weld.examples.pastecode.session.History

      13:40:23,427 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/weld-pastecode]] org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: loaded (conf ok)
      13:51:08,812 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/weld-pastecode]] Session event listener threw exception: javax.ejb.NoSuchEJBException: Could not find Stateful bean: 3j011-vkamuu-g5s27uvi-1-g5s42hod-ac
      at org.jboss.ejb3.cache.simple.SimpleStatefulCache.remove(SimpleStatefulCache.java:544)
      at org.jboss.ejb3.stateful.StatefulContainer.destroySession(StatefulContainer.java:1452)
      at org.jboss.ejb3.endpoint.deployers.impl.EndpointImpl.destroySession(EndpointImpl.java:61)
      at org.jboss.weld.integration.ejb.JBossSessionObjectReference.remove(JBossSessionObjectReference.java:62)
      at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:108)
      at org.jboss.weld.util.CleanableMethodHandler.invoke(CleanableMethodHandler.java:43)
      at org.jboss.weld.examples.pastecode.session.History_$$javassist_54.destroy(History$$_javassist_54.java)
      at org.jboss.weld.bean.SessionBean.destroy(SessionBean.java:329)
      at org.jboss.weld.context.ForwardingContextual.destroy(ForwardingContextual.java:34)
      at org.jboss.weld.context.AbstractMapContext.destroy(AbstractMapContext.java:146)
      at org.jboss.weld.context.AbstractMapContext.destroy(AbstractMapContext.java:163)
      at org.jboss.weld.context.AbstractThreadLocalMapContext.destroy(AbstractThreadLocalMapContext.java:68)
      at org.jboss.weld.context.ContextLifecycle.endSession(ContextLifecycle.java:80)
      at org.jboss.weld.servlet.ServletLifecycle.endSession(ServletLifecycle.java:96)
      at org.jboss.weld.servlet.WeldListener.sessionDestroyed(WeldListener.java:141)
      at org.apache.catalina.session.StandardSession.expire(StandardSession.java:686)
      at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:581)
      at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:690)
      at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:675)
      at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1383)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1675)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1684)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1684)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1664)
      at java.lang.Thread.run(Thread.java:619)

      Steps to reproduce (use a new weld jsf application "Pastecode"):
      1) setup your desired session-timeout in war/src/main/webapp/WEB-INF/web.xml file (10 minutes is OK to see the exception)
      1) package the app (simply "mvn clean package")
      2) deploy the resulting EAR to JBoss AS 6.0.x
      3) go to http://localhost:8080/weld-pastecode
      4) click the "History" link
      5) and wait for 10+ minutes

              marius.bogoevici Marius Bogoevici (Inactive)
              mgencur Martin Gencur
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: