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


A SingletonContainer 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="mySingletonContainer" type="SINGLETON">
    accessTimeout = 30 seconds
</Container>
----

Alternatively, a SingletonContainer 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 `jakarta.ejb.embeddable.EJBContainer` API or
`InitialContext`

[source,properties]
----
mySingletonContainer = new://Container?type=SINGLETON
mySingletonContainer.accessTimeout = 30 seconds
----

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 SingletonContainer a
warning will be logged. If a SingletonContainer is needed by the
application and one is not declared, TomEE will create one dynamically
using default settings. Multiple SingletonContainer declarations are
allowed. # Supported Properties

Property

Type

Default

Description

accessTimeout

time

30 seconds

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

== accessTimeout

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

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

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

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