Singleton Session EJB

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Concepts

Overview

A singleton session bean is a component that is instantiated once per application. For distributed applications that span multiple VMs, each application will have on singleton session bean instance per JVM. The instances are intended to be shard, and must support concurrent access. The Singleton bean instances maintain state between invocations, but the state is not required to survive container shutdown or crash.

Lifecycle

The singletons are lazy instantiated by default. The container instantiates them when the first invocation arrives. However, a Singleton bean can declare that it needs eager initialization, when the application starts, by declaring the @Startup annotation. If eagerly initialized, it is the container's responsibility to initialize the bean before any external client requests are delivered to the instance.

The container invokes newInstance() method on the Singleton bean class, creating the instance. Then the container performs any dependency injection. Then the container calls @PostConstruct methods.

Once instantiated according to the previous sequence, the Singleton bean instance lives for the duration of the application.

When the application is shutting down, the container invokes @PreDestroy methods, and this ends the life of the instance.

Dependencies between Singletons

Transactional Behavior

Concurrency

Also see

EJB Concepts - Concurrency

Interceptors

Restrictions

Singleton beans must not implement javax.ejb.SessionSychronization interface or use the session synchronization annotations.