■
Pool Idle Timeout: the maximum time that a stateless session bean, entity bean, or
message-driven bean is allowed to be idle in the pool. After this time, the bean is destroyed if
the bean in case is a stateless session bean or a message driver bean. This is a hint to server.
The default value is 600 seconds. The corresponding EJB deployment descriptor attribute is
pool-idle-timeout-in-seconds.
If there are more beans in the pool than the maximum pool size, the pool drains back to
initial and minimum pool size, in steps of pool resize quantity at an interval specied by the
pool idle timeout. If the resize quantity is too small and the idle timeout large, you will not
see the pool draining back to steady size quickly enough.
Tuning the EJB Cache
A bean in the cache represents the ready state in the EJB lifecycle. This means that the bean has
an identity (for example, a primary key or session ID) associated with it.
Beans moving out of the cache have to be passivated or destroyed according to the EJB lifecycle.
Once passivated, a bean has to be activated to come back into the cache. Entity beans are
generally stored in databases and use some form of query language semantics to load and store
data. Session beans have to be serialized when storing them upon passivation onto the disk or a
database; and similarly have to be deserialized upon activation.
Any incoming request using these “ready” beans from the cache avoids the overhead of
creation, setting identity, and potentially activation. So, theoretically, it is good to cache as
many beans as possible. However, there are drawbacks to caching:
■
Memory consumed by all the beans aects the heap available in the Virtual Machine.
■
Increasing objects and memory taken by cache means longer, and possibly more frequent,
garbage collection.
■
The application server might run out of memory unless the heap is carefully tuned for peak
loads.
Keeping in mind how your application uses stateful session beans and entity beans, and the
amount of trac your server handles, tune the EJB cache size and time-out settings to minimize
the number of activations and passivations.
EJB Cache Settings
An individual EJB component can specify cache settings that override those of the EJB
container in the <bean-cache> element of the EJB component’s sun-ejb-jar.xml deployment
descriptor.
The EJB cache settings are:
EJB ContainerSettings
Chapter3 • Tuningthe EnterpriseServer 55