This figure shows the EJB 2.1 message-driven bean life cycle. There are two states: does not exist and method-ready pool. To transition from the does not exist state to the method-ready pool state, the following occurs: the newInstance method is invoked, dependency injection occurs (if any), the MDB method annotated as PostConstruct (if any) or the ejbCreate method (if present) is invoked. While in the method-ready pool state, the following methods may be invoked: message listener method or ejbTimeout. To transition from the method-ready pool state to the does not exist state, the following occurs: the MDB method annotated as PreDestroy (if any) or the ejbRemove method (if present) is invoked.