I had created this quick setup guide for our developers based on the information in this
thread:
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=93589
I hope this helps you out.
Chris.
There are a few important timeout values in the Seam environment that any Seam developer
needs to be aware of.
The first one is obvious and it is the well known HTTP session-timeout value (the one that
you set in web.xml). What catches most people out is that there also is a separate EJB3
SFSB timeout value. These SFSB timeout values must be set in 2 places.
Since Seam freely integrates these two environments, a difference in the two timeouts can
cause apparently random exceptions like:
19:23:07,124 WARN [Contexts] Could not destroy component: login
| javax.ejb.EJBNoSuchObjectException: Could not find Stateful bean:
5r4m5v-man6m0-etofwmzy-1-etog131z-
| g
| at
org.jboss.ejb3.cache.simple.SimpleStatefulCache.get(SimpleStatefulCache.java:268)
| at
org.jboss.ejb3.stateful.StatefulRemoveInterceptor.removeSession(StatefulRemoveInterceptor
| .java:127)
| at
org.jboss.ejb3.stateful.StatefulRemoveInterceptor.invoke(StatefulRemoveInterceptor.java:8
| 7)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| at
org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.jav
| a:77)
| ...
It is worth mentioning that there is a @CacheConfig annotation that allows you to specify
the SFSB timeout on a per class basis. This offers a fine grained level of control,
however you often just need to set the value once and have done with it. So in order to
align the HTTP session and the SFSB timeouts, you must amend configuration files. Also
note that this example sets these values to be exactly the same. It is sometimes
recommended that the SFSB timeouts are set to be longer than the HTTP session timeout.
1. HTTP Session Timeout
File: WEB-INF/web.xml
<session-config>
| <session-timeout>15</session-timeout>
| </session-config>
Note: Value is in minutes;
2. SFSB Timeout Part 1
File: PROJECT_HOME/embedded-ejb/conf/ejb3-interceptors-aop.xml
Find entry matching 'domain name="Stateful Bean" extends="Base Stateful
Bean" inheritBindings="true">':
<domain name="Stateful Bean" extends="Base Stateful Bean"
inheritBindings="true">
| ...
| <!-- OCSS: Align this value with session timeout in web.xml -->
| <annotation expr="!class((a)org.jboss.annotation.ejb.cache.simple.CacheConfig)
AND !class((a)org.jboss.annotation.ejb.Clustered)">
| @org.jboss.annotation.ejb.cache.simple.CacheConfig (maxSize=100000,
idleTimeoutSeconds=900)
| </annotation>
Set the idleTimeoutSeconds value.
Note: Value is in seconds;
3. SFSB Timeout Part 2
File: JBOSS_HOME\server\default\conf\standardjboss.xml
Find entry for '<container-name>Standard Stateful
SessionBean</container-name>':
| <container-configuration>
| <container-name>Standard Stateful SessionBean</container-name>
| ...
| <container-cache-conf>
| ...
| <cache-policy-conf>
| <remover-period>900</remover-period>
| <max-bean-life>900</max-bean-life>
| ...
Note: Value is in seconds; Also this config is required for every server that the Seam
code is deployed to.
That is all. Aligning these three timeout values will prevent those "Could not
destroy component: XXXX" exceptions and prevent some strange behaviour in your apps.
Further information and discussion, see the thread referenced at the start of this post.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3990903#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...