In several ways, the dynamic creation and allocation of message-driven bean instances
mimics the behavior of stateless session EJB instances, which exist only for the
duration of a particular method call. However, message-driven beans are different
from stateless session EJBs (and other types of EJBs) in several significant ways:
Message-driven beans process multiple JMS messages asynchronously, rather than processing
a serialized sequence of method calls. Message-driven beans have no home or remote
interface, and therefore cannot be directly accessed by internal or external clients.
Clients interact with message-driven beans only indirectly, by sending a message
to a JMS Queue or Topic.
Only the container directly interacts with a message-driven bean by creating bean
instances and passing JMS messages to those instances as necessary. The Container
maintains the entire lifecycle of a message-driven bean; instances cannot be created
or removed as a result of client requests or other API calls.