Message-driven beans - automatic message retrieval
WebSphere Application Server supports the use of message-driven beans as asynchronous message consumers.
The following figure shows an incoming message being passed automatically to the onMessage() method of a message-driven bean that is deployed as a listener for the destination. The message-driven bean processes the message, in this case passing the message on to a business logic bean for business processing.
Figure 1. Messaging with message-driven beans
A client sends messages to the destination (or endpoint) for which the message-driven bean is deployed as the message listener. When a message arrives at the destination, the EJB container invokes the message-driven bean automatically without an application having to explicitly poll the destination. The message-driven bean implements some business logic to process incoming messages on the destination.
It can be helpful to separate the business logic of the application from the communication interfaces, such as the JMS request and response handling. To achieve this separation, we can design the message-driven bean to delegate the business processing of incoming messages to another enterprise bean. Separating message handling and business processing enables different users to access the same business logic in different ways, either through incoming messages or, for example, from a WebSphere J2EE client.
Message-driven beans can be configured as listeners on a Java EE Connector Architecture (JCA) 1.5 or 1.6 resource adapter or against a listener port. With a JCA 1.5 resource adapter, message-driven beans can handle generic message types, not just JMS messages. This makes message-driven beans suitable for handling generic requests inbound to WebSphere Application Server from enterprise information systems through the resource adapter. In the JCA 1.5 specification, such message-driven beans are commonly called message endpoints or just endpoints.
All message-driven beans must implement the MessageDrivenBean interface. For JMS messaging, a message-driven bean must also implement the message listener interface, javax.jms.MessageListener.
Messages arriving at a destination being processed by a message-driven bean have no client credentials associated with them; the messages are anonymous. Security depends on the role specified by the RunAs Identity for the message-driven bean as an EJB component. For more information about EJB security, see Secure enterprise bean applications.
For JMS messaging, message-driven beans can use a JMS provider that has a JCA 1.5 resource adapter, for example the default messaging provider that is part of WAS or the WebSphere MQ messaging provider. With a JCA 1.5 resource adapter, you deploy EJB 2.1 message-driven beans as JCA 1.5-compliant resources, to use a J2C activation specification. If the JMS provider does not have a JCA 1.5 resource adapter, for example the V5 default messaging provider, configure JMS message-driven beans against a listener port.
Subtopics
- Message-driven beans, activation specifications, and listener ports
Guidelines, related to versions of WAS, to help choose when to configure the message-driven beans to work with listener ports rather than activation specifications.
- Message processing in ASF mode and non-ASF mode
Application Server Facilities (ASF) mode is the default method by which the message listener service in WebSphere Application Server processes messages. This topic explains how WebSphere Application Server processes messages in ASF mode and how it processes messages when ASF mode is turned off.
- Message-driven beans - JCA components
There are several administrative components configured for message-driven beans as listeners on a Java EE Connector Architecture (JCA) 1.5 resource adapter.
- J2C activation specification configuration and use
Configure J2C activation specifications, and use them in the deployment of message-driven beans for JCA 1.5 resources.
- Message-driven beans - transaction support
Message-driven beans can handle messages on destinations (or endpoints) within the scope of a transaction.
- Message-driven beans - listener port components
The WebSphere Application Server support for message-driven beans deployed against listener ports is based on JMS message listeners and the message listener service, and builds on the application server facility (ASF) support in the JMS provider.
- Message-driven beans - transaction handling with service integration bus
Message-driven beans can handle messages on destinations (or endpoints) within the scope of a transaction.
- (zos) Message-driven beans and tuning settings on z/OS
When you are running WAS on the z/OS operating system, we need to understand a number of concepts to be able to configure the tuning settings that are available for message-driven beans.
Related tasks
Secure enterprise bean applications