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 base support for JMS.
The main components of WebSphere Application Server support for message-driven
beans are shown in the following figure and described after the figure:
Figure 1. The main components for message-driven
beans.
This figure shows the main components of WebSphere support
for message-driven beans, from JMS provider through a connection to a destination,
listener port, then deployed message-driven bean that processes the message
retrieved from the destination. Each listener port defines the association
between a connection factory, destination, and a deployed message-driven bean.
The other main components are the message listener service, which comprises
a listener for each listener port, all controlled by the same listener manager.
For more information, see the text that accompanies this figure.
The message listener service is an extension to the JMS functions
of the JMS provider and provides a listener manager, which controls
and monitors one or more JMS listeners.
Each listener monitors either a JMS queue destination (for point-to-point
messaging) or a JMS topic destination (for publish/subscribe messaging).
A connection factory is used to create connections with the
JMS provider for a specific JMS queue or topic destination. Each connection
factory encapsulates the configuration parameters needed to create a connection
to a JMS destination.
A listener port defines the association between a connection
factory, a destination, and a deployed message-driven bean. Listener
ports are used to simplify the administration of the associations between
these resources.
When a deployed message-driven bean is installed, it is associated with
a listener port and the listener for a destination. When a message arrives
on the destination, the listener passes the message to a new instance of a
message-driven bean for processing.
When an application server is started, it initializes the listener manager
based on the configuration data. The listener manager creates a dynamic session
thread pool for use by listeners, creates and starts listeners, and during
server termination controls the cleanup of listener message service resources.
Each listener completes several steps for the JMS destination that it is to
monitor, including:
- Creating a JMS server session pool, and allocating JMS server sessions
and session threads for incoming messages.
- Interfacing with JMS ASF to create JMS connection consumers to listen
for incoming messages.
- If specified, starting a transaction and requesting that it is committed
(or rolled back) when the EJB method has completed.
- Processing incoming messages by invoking the onMessage() method of the
specified enterprise bean.