The EJB 2.0 specification added a new component model for EJBs to the session and entity models already available in EJB 1.1. Message-driven EJBs are components that are managed by an EJB container like other EJBs, but they are invoked asynchronously by clients using JMS messages rather than method calls. In terms of their runtime lifecycle and container management, message-driven beans are closest in nature to stateless session beans. They are invoked indirectly and asynchronously, so they don’t maintain conversational state on behalf of clients, and they can be pooled by the container to handle incoming messages.
From the client’s perspective, a message-driven bean is seen as simply another JMS destination with which to exchange messages. Clients need not even know that an EJB container is involved -- they simply perform the usual steps to establish a session with the JMS queue or topic and exchange messages with it. We’ll only touch on these JMS-specific details here -- for more details, see Chapter 10.
Message-driven EJBs are the simplest to implement, since they require
only a bean implementation class. The only client interaction with
them is through JMS messages, so there’s no need for
client interfaces or home interfaces. A message-driven bean must
implement both the
from the EJB API, as well as the
MessageListener interface from JMS. The bean’s lifecycle is managed by the EJB container, including its association ...