Message-Driven Beans

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 do 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 only touch on these JMS-specific details here—for more details, see Chapter 11.

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 MessageDrivenBean interface 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 with a JMS destination. While a simple, standalone JMS MessageListener needs to be programmatically associated with its message destination, the EJB ...

Get Java Enterprise in a Nutshell, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.