Beans
outside of a transaction’s scope normally provide
some kind of stateless service that does not manipulate data in a
data store. While these types of enterprise beans may be necessary as
utilities during a transaction, they do not need to meet the ACID
requirements. Consider a nontransactional stateless session bean, the
Quote EJB, that provides live stock quotes. This EJB may respond to a
request from an EJB involved in a stock purchase transaction. The
success or failure of the stock purchase, as a transaction, will not
impact the state or operations of the Quote EJB, so it does not need
to be part of the transaction. Beans that are involved in
transactions are subjected to the isolated ACID property, which means
that their services cannot be shared during the
life of the transaction. Making an enterprise bean transactional can
be expensive at runtime. Declaring an EJB to be nontransactional
(i.e.,
NotSupported
)
leaves it out of the transaction scope, which may improve the
performance and availability of that service.