Identify the interfaces and methods a JMS message-driven bean must implement.

This page discusses - Identify the interfaces and methods a JMS message-driven bean must implement.


 

Ads

Tutorials   
Chapter 5. Client View of an Entity Identify correct and incorrect statements about the Application Assembler's responsibilities, including the use of deployment descriptor elements related to transactions and the identifica Given a list of responsibilities, identify whose which are the Container's with respect to transactions, including the handling of getRollbackOnly, setRollbackOnly, getUserTransacti EJB Transactional Attributes Chapter 11. Transactions Given a list of scenarios, identify which will result in an ejbRemove method not being called on a bean instance. Given a list of responsibilities related to session beans, identify those which are the responsibility of the session bean provider and those which are the responsibility of the EJB contai Given a list of methods for a stateful or stateless session bean class, define which of the following operations can be performed from each of those methods: SessionContext interface metho Chapter 4. Session Bean Life Cycle Identify correct and incorrect statements or examples about the client view of a session bean's local and remote component interfaces. Identify the interface and method for each of the following: retrieve the session bean's remote home interface, retrieve the session bean's local component interface, determine if the sessio Match the correct description about purpose and function to which session bean type they apply: stateless, stateful, or both. Chapter 14. Security Management Given a security-related deployment descriptor tag, identify correct and incorrect statements and code related to that tag. Given a list of responsibilities, identify which belong to the deployer, bean provider, application assembler, container provider, system administrator, or any combination. From a list of responsibilities, identify which belong to the application assembler, bean provider, deployer, container provider, or system administrator. Part I. Exam Objectives Preface Identify the interfaces and methods a JMS message-driven bean must implement. Identify the use and behavior of the MessageDrivenContext interface methods. SCBCD Study Guide Given a list of responsibilities related to exceptions, identify those which are the bean provider's, and those which are the responsibility of the container provider. Be prepared to recog Given a particular method condition, identify the following: whether an exception will be thrown, the type of exception thrown, the container's action, and the client's view. Identify correct and incorrect statements or examples about application exceptions and system exceptions in entity beans, session beans, and message-driven beans. Identify correct and incorrect statements or examples about the client's view of exceptions received from an enterprise bean invocation. Identify correct and incorrect statements or examples about an entity bean's primary key and object identity. Identify the use, syntax, and behavior of, the following entity bean home method types, for Container-Managed Persistence (CMP); finder methods, create methods, remove methods, and home me Chapter 8. Entity Beans Chapter 13. Enterprise Bean Environment Chapter 2. Client View of a Session Bean Match EJB roles with the corresponding description of the role's responsibilities, where the description may include deployment descriptor information. Given a list, identify which are requirements for an EJB-jar file. Identify correct and incorrect statements or examples about the client view of a entity bean's remote component interface (EJBObject). Identify correct and incorrect conditional expressions, BETWEEN expressions, IN expressions, LIKE expressions, and comparison expressions. Identify correct and incorrect statements or examples about the purpose and use of EJB QL. Chapter 9. EJB-QL Identify correct and incorrect statements or examples about EJB programming restrictions. Chapter 1. EJB Overview Identify EJB 2.0 container requirements. Identify correct and incorrect statements or examples about the client view of an entity bean's local component interface (EJBLocalObject). Chapter 12. Exceptions Identify the use and the behavior of the ejbPassivate method in a session bean, including the responsibilities of both the container and the bean provider. Identify correct and incorrect statements about the purpose and use of the deployment descriptor elements for environment entries, EJB references, and resource manager connection factory r Chapter 10. Message-Driven Bean Component Contract Given a code listing, determine whether it is a legal and appropriate way to programmatically access a caller's security context. From a list, identify the responsibility of the container for a CMP entity bean, including but not limited to: setEntityContext, unsetEntityContext, ejbCreate, ejbPostCreate, ejbActi Identify correct and incorrect statements or examples about the rules and semantics for relationship assignment and relationship updating in a CMP bean. Chapter 7. CMP Entity Bean Life Cycle From a list, identify the purpose, behavior, and responsibilities of the bean provider for a CMP entity bean, including but not limited to: setEntityContext, unsetEntityContext, ejbC Identify correctly-implemented deployment descriptor elements for a CMP bean (including container-managed relationships).
Ads

Identify the interfaces and methods a JMS message-driven bean must implement.

All message-driven beans MUST implement, directly or indirectly, the MessageDrivenBean interface. The class MUST be defined as public and it cannot be defined as final nor abstract. The MessageDrivenBean interface defines TWO methods all message-driven beans must implement:

  1. The setMessageDrivenContext(...) method is called by the bean's container to associate a message-driven bean instance with its context maintained by the container. Typically a message-driven bean instance retains its message-driven context as part of its state. The container calls this method at the beginning of the bean's life cycle.

  2. The ejbRemove() notification signals that the instance is in the process of being removed by the container. In the ejbRemove() method, the instance releases the resources that it is holding (possibly allocated in the ejbCreate() method).

The Bean Provider CANNOT assume that the Container will always invoke the ejbRemove() method on a message-driven bean instance. The following scenarios result in ejbRemove() NOT being called on an instance:

  • A crash of the EJB Container.

  • A system exception thrown from the instance's method to the Container.

If the message-driven bean instance allocates resources in the ejbCreate() method and/or in the onMessage(...) method, and releases normally the resources in the ejbRemove() method, these resources will NOT be automatically released in the above scenarios. The application using the message-driven bean should provide some clean up mechanism to periodically clean up the unreleased resources.

The MessageDrivenBean extends the EnterpriseBean interface:

package javax.ejb;

public interface MessageDrivenBean extends javax.ejb.EnterpriseBean {
	public void setMessageDrivenContext(MessageDrivenContext context)
		throws EJBException;
	public void ejbRemove() throws EJBException;
}

public interface EnterpriseBean extends java.io.Serializable {
}

					

All message-driven beans MUST implement, directly or indirectly, the javax.jms.MessageListener interface.

The onMessage(...) method is called by the bean's CONTAINER when a message has arrived for the bean to service. The onMessage(...) method contains the business logic that handles the processing of the message. The onMessage(...) method has a single argument, the incoming message.

ONLY message-driven beans can asynchronously receive messages. Session and entity beans are NOT PERMITTED to be JMS MessageListeners.

package javax.jms;

public interface MessageListener {
	public void onMessage(Message message);
}
					

The container creates an instance of a message-driven bean in THREE steps. First, the container calls the bean class' newInstance() method to create a new message-driven bean instance. Second, the container calls the setMessageDrivenContext(...) method to pass the context object to the instance. Third, the container calls the instance's ejbCreate() method.

Each message-driven bean class MUST have one ejbCreate() method, with NO ARGUMENTS.

EVERY message-driven bean class MUST implement following FOUR methods:

  1. public void setMessageDrivenContext(MessageDrivenContext mdc)

    The container normally calls this method exactly once, after instantiation, to pass in the associated MessageDrivenContext.

  2. public void ejbCreate()

    Called after the setMessageDrivenContext(...) method. This is a good time to access or obtain any resources that will be used for the life of the bean.

  3. public void onMessage(Message msg)

    Called by the container when a message has arrived on the bean's associated Queue or Topic. Your code should check for the expected message types, using the instanceof operator, because there is nothing to stop a client from sending any of the available message types. Other than those that deal with the Message object, no JMS methods need be invoked by the bean; it just cracks or parses the received message and performs any associated operations.

  4. public void ejbRemove()

    Called when the container intends to terminate the bean. All resources should be released at this time.

public class ReservationProcessorBean
	implements javax.ejb.MessageDrivenBean, 
			javax.jms.MessageListener  {
   
	MessageDrivenContext ejbContext;
	Context jndiContext;
   
	public void setMessageDrivenContext (MessageDrivenContext mdc)  {
		ejbContext = mdc;
		try {
			jndiContext = new InitialContext ();
		} catch(NamingException ne) {
			throw new EJBException (ne);
		}
	}
   
	public void ejbCreate () {}
   
	public void onMessage (Message message) {
		try  {         
			MapMessage reservationMsg = (MapMessage)message;
         
			Integer customerPk = (Integer)
				reservationMsg.getObject ("CustomerID");
			Integer cruisePk =   (Integer)
				reservationMsg.getObject ("CruiseID");
			....
         
			// can access other EJBs
			ReservationHomeLocal resHome = (ReservationHomeLocal)
			jndiContext.lookup ("java:comp/env/ejb/ReservationHomeLocal");
         
			ReservationLocal reservation =
			resHome.create (customer, cruise, cabin, price, new Date ());
			....         
         
		} catch(Exception e) {
			// can throw only runtime (unchecked) exceptions
			throw new EJBException (e);
		}
	}
	
	...
   
	public void ejbRemove () {
		try {
			jndiContext.close ();
			ejbContext = null;
		} catch(NamingException ignored) { }
	}
}
					

Advertisements

Ads
Share on Google+Share on Google+

Identify the interfaces and methods a JMS message-driven bean must implement.

Posted on: April 18, 2011 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Advertisements

 

Discuss: Identify the interfaces and methods a JMS message-driven bean must implement.  

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:0

Ads

 

Ads