Download
FAQ History |
API
Search Feedback |
The Message-Driven Bean Class
The code for the
SimpleMessageBean
class illustrates the requirements of a message-driven bean class:
- It must implement the
MessageDrivenBean
andMessageListener
interfaces.- The class must be defined as
public
.- The class cannot be defined as
abstract
orfinal
.- It must implement one
onMessage
method.- It must implement one
ejbCreate
method and oneejbRemove
method.- It must contain a public constructor with no arguments.
- It must not define the
finalize
method.Unlike session and entity beans, message-driven beans do not have the remote or local interfaces that define client access. Client components do not locate message-driven beans and invoke methods on them. Although message-driven beans do not have business methods, they may contain helper methods that are invoked internally by the
onMessage
method.The onMessage Method
When the queue receives a message, the EJB container invokes the
onMessage
method of the message-driven bean.The
onMessage
method is called by the bean's container when a message has arrived for the bean to service. This method contains the business logic that handles the processing of the message. It is the message-driven bean's responsibility to parse the message and perform the necessary business logic.The
onMessage
method has a single argument: the incoming message.The message-driven bean class defines one
onMessage
method, whose signature must follow these rules:
- The method must be declared as
public
and must not be declared asfinal
orstatic
.- The return type must be
void
.- The method must have a single argument of type
javax.jms.Message
.- The
throws
clause must not define any application exceptions.- The
onMessage
method must be invoked in the scope of a transaction that is determined by the transaction attribute specified in the deployment descriptor.In the
SimpleMessageBean
class, theonMessage
method casts the incoming message to aTextMessage
and displays the text:public void onMessage(Message inMessage) { TextMessage msg = null; try { if (inMessage instanceof TextMessage) { msg = (TextMessage) inMessage; logger.info ("MESSAGE BEAN: Message received: " + msg.getText()); } else { logger.warning ("Message of wrong type: " + inMessage.getClass().getName()); } } catch (JMSException e) { e.printStackTrace(); mdc.setRollbackOnly(); } catch (Throwable te) { te.printStackTrace(); } }The ejbCreate and ejbRemove Methods
The signatures of these methods have the following requirements:
In the
SimpleMessageBean
class, theejbCreate
andejbRemove
methods are empty.
Download
FAQ History |
API
Search Feedback |
All of the material in The J2EE(TM) 1.4 Tutorial is copyright-protected and may not be published in other works without express written permission from Sun Microsystems.