Chapter 7. CMP Entity Bean Life Cycle

This page discusses - Chapter 7. CMP Entity Bean Life Cycle

Chapter 7. CMP Entity Bean Life Cycle

Chapter 7. CMP Entity Bean Life Cycle

Identify correct and incorrect statements or examples about the life cycle of a CMP entity bean.

An entity bean instance is in one of the following THREE states:

  1. DOES NOT EXIST state.

  2. POOLED state. An instance in the pooled state is not associated with any particular entity object identity.

  3. READY state. An instance in the ready state is assigned an entity object identity.

The following steps describe the life cycle of an entity bean instance:
  • An entity bean instance’s life starts when the container creates the instance using newInstance(). The container then invokes the setEntityContext() method to pass the instance a reference to the EntityContext interface. The EntityContext interface allows the instance to invoke services provided by the container and to obtain the information about the caller of a client-invoked method.

  • The instance enters the pool of available instances. Each entity bean has its own pool. While the instance is in the available pool, the instance is not associated with any particular entity object identity. All instances in the pool are considered EQUIVALENT, and therefore ANY instance can be assigned by the container to any entity object identity at the transition to the READY state. While the instance is in the POOLED state, the container may use the instance to execute any of the entity bean’s FINDER methods (ejbFind<METHOD>(...)) or any of the entity bean’s HOME methods (ejbHome<METHOD>(...)). The instance DOES NOT move to the ready state during the execution of a finder or a home method. An ejbSelect<METHOD>(...) method may be called by an entity bean’s home method while the instance is in the pooled state.

    public abstract class AddressBean implements javax.ejb.EntityBean {
    ...
    
    	// Customer home methods.  
    	// These are wrappers of ejbSelect methods
    
    	public Collection ejbHomeQueryZipCodes(String state)
    				throws FinderException   {
    		return ejbSelectZipCodes(state);
    	}
    
    	public Collection ejbHomeQueryAll()
    				throws FinderException  {
    		return ejbSelectAll();
    	}
    
    	public CustomerLocal ejbHomeQueryCustomer(AddressLocal addr)
    				throws FinderException   {
    		return ejbSelectCustomer(addr);
    	}
    ...
    }
    							
  • An instance transitions from the pooled state to the ready state when the container selects that instance to service a client call to an entity object. There are TWO possible transitions from the pooled to the ready state:

    1. Through the ejbCreate<METHOD>(...) and ejbPostCreate<METHOD>(...) methods.

      The CONTAINER invokes the ejbCreate<METHOD>(...) and ejbPostCreate<METHOD>(...) methods when the instance is assigned to an entity object during entity object creation (i.e., when the CLIENT invokes a create(...) method on the entity bean’s home object).

    2. Through the ejbActivate() method.

      The CONTAINER invokes the ejbActivate() method on an instance when an instance needs to be activated to service an invocation on an existing entity object - this occurs because there is no suitable instance in the ready state to service the client’s call.

  • When an entity bean instance is in the READY state, the instance is associated with a specific entity object identity. While the instance is in the ready state, the container can synchronize the state of the instance with the state of the entity in the underlying data source whenever it determines the need to, in the process invoking the ejbLoad() and ejbStore() methods ZERO or more times. A business method can be invoked on the instance ZERO or more times. Invocations of the ejbLoad() and ejbStore() methods can be arbitrarily mixed with invocations of business methods. An ejbSelect<METHOD> method CAN be called by a business method (or ejbLoad() or ejbStore() method) while the instance is in the READY state.

  • The container CAN choose to passivate an entity bean instance WITHIN a transaction. To passivate an instance, the container first invokes the ejbStore() method to allow the instance to prepare itself for the synchronization of the database state with the instance’s state, and then the container invokes the ejbPassivate() method to return the instance to the POOLED state.

  • The container will transition the instance to the pooled state. There are THREE possible transitions from the ready to the POOLED state:

    1. Through the ejbPassivate() method.

      The CONTAINER invokes the ejbPassivate() method when the container wants to disassociate the instance from the entity object identity without removing the entity object.

    2. Through the ejbRemove() method.

      The CONTAINER invokes the ejbRemove() method when the container is removing the entity object (i.e., when the CLIENT invoked the remove() method on the entity object’s component interface or a remove(...) method on the entity bean’s home interface).

    3. Because of a transaction rollback for ejbCreate(), ejbPostCreate(), or ejbRemove().

      If ejbCreate(), ejbPostCreate(), or ejbRemove() is called and the transaction rolls back, the container will transition the bean instance to the POOLED state.

  • When the instance is put back into the pool, it is no longer associated with an entity object identity. The container can assign the instance to any entity object within the same entity bean home.

  • The CONTAINER can REMOVE an instance in the pool by calling the unsetEntityContext() method on the instance.

NOTE:
  • The result of the EntityContext.getPrimaryKey() method MIGHT BE DIFFERENT each time an instance moves from the pooled state to the ready state, and the result of the getCallerPrincipal() and isCallerInRole(...) methods MAY BE DIFFERENT in each business method.

  • A RuntimeException thrown from any method of an entity bean class (including the business methods and the callbacks invoked by the container) results in the transition to the DOES NOT EXIST state.

    From the caller’s perspective, the corresponding entity object CONTINUES to exist. The client CAN continue accessing the entity object through its component interface because the container can use a different entity bean instance to delegate the client’s requests.

  • The container is NOT REQUIRED to maintain a pool of instances in the pooled state. The pooling approach is an example of a possible implementation.

  • 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.