Implementing Message-Driven Beans

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 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 ...

Get Java Enterprise in a Nutshell, Second 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.