= StatefulContainer Configuration
:index-group: Unrevised
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published


A StatefulContainer can be declared via xml in the
`<tomee-home>/conf/tomee.xml` file or in a `WEB-INF/resources.xml` file
using a declaration like the following. All properties in the element
body are optional.

[source,xml]
----
<Container id="myStatefulContainer" type="STATEFUL">
    accessTimeout = 30 seconds
    bulkPassivate = 100
    cache = org.apache.openejb.core.stateful.SimpleCache
    capacity = 1000
    frequency = 60
    passivator = org.apache.openejb.core.stateful.SimplePassivater
    timeOut = 20
</Container>
----

Alternatively, a StatefulContainer can be declared via properties in the
`<tomee-home>/conf/system.properties` file or via Java VirtualMachine
`-D` properties. The properties can also be used when embedding TomEE
via the `javax.ejb.embeddable.EJBContainer` API or `InitialContext`

[source,properties]
----
myStatefulContainer = new://Container?type=STATEFUL
myStatefulContainer.accessTimeout = 30 seconds
myStatefulContainer.bulkPassivate = 100
myStatefulContainer.cache = org.apache.openejb.core.stateful.SimpleCache
myStatefulContainer.capacity = 1000
myStatefulContainer.frequency = 60
myStatefulContainer.passivator = org.apache.openejb.core.stateful.SimplePassivater
myStatefulContainer.timeOut = 20
----

Properties and xml can be mixed. Properties will override the xml
allowing for easy configuration change without the need for $\{} style
variable substitution. Properties are not case sensitive. If a property
is specified that is not supported by the declared StatefulContainer a
warning will be logged. If a StatefulContainer is needed by the
application and one is not declared, TomEE will create one dynamically
using default settings. Multiple StatefulContainer declarations are
allowed. # Supported Properties

Property

Type

Default

Description

accessTimeout

time

30 seconds

Specifies the maximum time an invocation could wait for the `@Stateful`
bean instance to become available before giving up.

bulkPassivate

int

100

Property name that specifies the number of instances to passivate at one
time when doing bulk passivation.

cache

String

org.apache.openejb.core.stateful.SimpleCache

The cache is responsible for managing stateful bean instances. The cache
can page instances to disk as memory is filled and can destroy abandoned
instances. A different cache implementation can be used by setting this
property to the fully qualified class name of the Cache implementation.

capacity

int

1000

Specifies the size of the bean pools for this stateful SessionBean
container.

frequency

int

60

Specifies the frequency (in seconds) at which the bean cache is checked
for idle beans.

passivator

String

org.apache.openejb.core.stateful.SimplePassivater

The passivator is responsible for writing beans to disk at passivation
time. Different passivators can be used by setting this property to the
fully qualified class name of the `PassivationStrategy` implementation.
The passivator is not responsible for invoking any callbacks or other
processing, its only responsibly is to write the bean state to disk.

timeOut

time

20

Specifies the time a bean can be idle before it is removed by the
container.

== accessTimeout

Specifies the maximum time an invocation could wait for the `@Stateful`
bean instance to become available before giving up.

After the timeout is reached a
`javax.ejb.ConcurrentAccessTimeoutException` will be thrown.

Usable time units: nanoseconds, microsecons, milliseconds, seconds,
minutes, hours, days. Or any combination such as "1 hour and 27 minutes
and 10 seconds"

Any usage of the `javax.ejb.AccessTimeout` annotation will override this
setting for the bean or method where the annotation is used.

== passivator

The passivator is responsible for writing beans to disk at passivation
time. Different passivators can be used by setting this property to the
fully qualified class name of the `PassivationStrategy` implementation.
The passivator is not responsible for invoking any callbacks or other
processing, its only responsibly is to write the bean state to disk.

Known implementations:

* org.apache.openejb.core.stateful.RAFPassivater
* org.apache.openejb.core.stateful.SimplePassivater

== timeOut

Specifies the time a bean can be idle before it is removed by the
container.

This value is measured in minutes. A value of 5 would result in a
time-out of 5 minutes between invocations. A value of -1 would mean no
timeout. A value of 0 would mean a bean can be immediately removed by
the container.

Any usage of the `javax.ejb.StatefulTimeout` annotation will override
this setting for the bean where the annotation is used.
