Chapter 10. Message-Driven Bean Component Contract

This page discusses - Chapter 10. Message-Driven Bean Component Contract

Chapter 10. Message-Driven Bean Component Contract

Chapter 10. Message-Driven Bean Component Contract

Identify correct and incorrect statements or examples about the client view of a message-driven bean, and the life cycle of a message-driven bean.

To a client, a message-driven bean is simply a JMS message consumer. The client sends messages to the Destination (Queue or Topic) for which the message-driven bean is the MessageListener just as it would to any other Destination. The message-driven bean, like any other JMS message consumer, handles the processing of the messages.

From the perspective of the client, the existence of a message-driven bean is completely hidden behind the JMS destination for which the message-driven bean is the message listener.

A client locates the JMS Destination associated with a message-driven bean by using JNDI. For example, the Queue for the StockInfo message-driven bean can be located using the following code segment:

Context initialContext = new InitialContext();
Queue stockInfoQueue = (javax.jms.Queue)initialContext.lookup
	("java:comp/env/jms/stockInfoQueue");
					
Message-driven beans don't have home/local home and remote/local interfaces.

A client's JNDI name space may be configured to include the JMS Destinations of message-driven beans installed in MULTIPLE EJB Containers located on MULTIPLE machines on a NETWORK. The actual locations of an enterprise bean and EJB Container are, in general, transparent to the client using the enterprise bean.

When a client sends a message to a Destination for which a message-driven bean is the consumer, the container selects one of its METHOD-READY instances and invokes the instance's onMessage method.

The following steps describe the lifecyle of a message-driven bean instance:

  • A message-driven bean instance's life starts when the container invokes newInstance() on the message-driven bean class to create a new instance. Next, the container calls setMessageDrivenContext(...) followed by ejbCreate() on the instance.

  • The message-driven bean instance is now READY to be delivered a message sent to its Destination by any client.

  • When the CONTAINER no longer needs the instance (which usually happens when the container wants to reduce the number of instances in the METHOD-READY POOL), the container invokes ejbRemove() on it. This ends the life of the message-driven bean instance.

The table defines the methods of a message-driven bean class in which the message-driven bean instances can access the methods of the javax.ejb.MessageDrivenContext interface, the java:comp/env environment naming context, resource managers, and other enterprise beans.

Table 10.1. Operations allowed in the methods of a message-driven bean class

Bean methodBean method can perform the following operations
Container-managed transaction demarcationBean-managed transaction demarcation
constructor--
setMessageDrivenContext

JNDI access to java:comp/env

JNDI access to java:comp/env

ejbCreate()

ejbRemove()

JNDI access to java:comp/env

MessageDrivenContext methods: getUserTransaction()

JNDI access to java:comp/env

onMessage()

MessageDrivenContext methods: getRollbackOnly(), setRollbackOnly()

JNDI access to java:comp/env

Resource manager access

Enterprise bean access

MessageDrivenContext methods: getUserTransaction()

UserTransaction methods

JNDI access to java:comp/env

Resource manager access

Enterprise bean access

Additional restrictions:

  • The getRollbackOnly() and setRollbackOnly() methods of the MessageDrivenContext interface should be used ONLY in the message-driven bean methods that execute in the context of a transaction. The Container must throw the java.lang.IllegalStateException if the methods are invoked while the instance is not associated with a transaction.

The reasons for disallowing operations in the table:

  • Invoking the getCallerPrincipal() and isCallerInRole(...) methods is DISALLOWED in the message-driven bean methods because the Container DOES NOT HAVE a client security context. The Container MUST throw and log the java.lang.IllegalStateException if either of these methods is invoked.

  • Invoking the getRollbackOnly() and setRollbackOnly() methods is DISALLOWED in the message-driven bean methods for which the Container DOES NOT HAVE a meaningful transaction context, and for all message-driven beans with bean-managed transaction demarcation (BMT).

  • The UserTransaction interface is UNAVAILABLE to message-driven beans with container-managed transaction demarcation (CMT). 0

  • Invoking getEJBHome() or getEJBLocalHome() is DISALLOWED in message-driven bean methods because THERE ARE NO EJBHome or EJBLocalHome objects for message-driven beans. The Container MUST throw and log the java.lang.IllegalStateException if these methods are invoked.

  • Visit http://java.boot.by  for the updates.

Tutorials

  1. Appendix A. First Appendix
  2. Second Section
  3. Third Section
  4. Part II. Appendixes
  5. From a list, identify the responsibility of the bean provider and the responsibility of the container provider for a message-driven bean.
  6. Chapter 6. Component Contract for Container-Managed Persistence (CMP)
  7. Identify correct and incorrect statements or examples about persistent relationships, remove protocols, and about the abstract schema type of a CMP entity bean.
  8. Identify the interfaces and methods a CMP entity bean must and must not implement.
  9. Match the name with a description of purpose or functionality, for each of the following deployment descriptor elements: ejb-name, abstract-schema-name, ejb-relation, ejb-relat
  10. Identify correctly-implemented deployment descriptor elements for a CMP bean (including container-managed relationships).
  11. 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
  12. Chapter 7. CMP Entity Bean Life Cycle
  13. Identify correct and incorrect statements or examples about the rules and semantics for relationship assignment and relationship updating in a CMP bean.
  14. From a list, identify the responsibility of the container for a CMP entity bean, including but not limited to: setEntityContext, unsetEntityContext, ejbCreate, ejbPostCreate, ejbActi
  15. Given a code listing, determine whether it is a legal and appropriate way to programmatically access a caller's security context.
  16. Chapter 10. Message-Driven Bean Component Contract
  17. 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
  18. 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.
  19. Chapter 12. Exceptions
  20. Identify correct and incorrect statements or examples about the client view of an entity bean's local component interface (EJBLocalObject).
  21. Identify EJB 2.0 container requirements.
  22. Chapter 1. EJB Overview
  23. Identify correct and incorrect statements or examples about EJB programming restrictions.
  24. Chapter 9. EJB-QL
  25. Identify correct and incorrect statements or examples about the purpose and use of EJB QL.
  26. Identify correct and incorrect conditional expressions, BETWEEN expressions, IN expressions, LIKE expressions, and comparison expressions.
  27. Identify correct and incorrect statements or examples about the client view of a entity bean's remote component interface (EJBObject).
  28. Given a list, identify which are requirements for an EJB-jar file.
  29. Match EJB roles with the corresponding description of the role's responsibilities, where the description may include deployment descriptor information.
  30. Chapter 2. Client View of a Session Bean
  31. Chapter 13. Enterprise Bean Environment
  32. Chapter 8. Entity Beans
  33. 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
  34. Identify correct and incorrect statements or examples about an entity bean's primary key and object identity.
  35. Identify correct and incorrect statements or examples about the client's view of exceptions received from an enterprise bean invocation.
  36. Identify correct and incorrect statements or examples about application exceptions and system exceptions in entity beans, session beans, and message-driven beans.
  37. 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.
  38. 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
  39. SCBCD Study Guide
  40. Identify the use and behavior of the MessageDrivenContext interface methods.