この図は、ステートフル・セッションBeanのライフ・サイクルを示しています。存在しない状態、メソッド実行可能状態、トランザクションにおけるメソッド実行可能状態、および非アクティブ化状態という4つの状態があります。存在しない状態からメソッド実行可能状態に遷移する場合、newInstanceメソッドの起動、依存性注入の実行(存在する場合)、およびPostConstructアノテーション付きのセッションBeanメソッドまたはejbCreateメソッド(定義されている場合)の起動が発生します。メソッド実行可能状態から非アクティブ化状態に遷移する場合、コンテナにより非アクティブ化に適したセッションBeanが選択され、PrePassivateアノテーション付きのセッションBeanメソッドまたはejbPassivateメソッド(定義されている場合)の起動が発生します。逆に、非アクティブ化状態からメソッド実行可能状態に遷移する場合、PostActivateアノテーション付きのセッションBeanメソッドまたはejbActivateメソッド(定義されている場合)の起動が発生します。セッションBeanの非アクティブ化状態が続き、非アクティブ化タイムアウトを超えると、セッションBeanは存在しない状態に移行します。メソッド実行可能状態からトランザクションにおけるメソッド実行可能状態に遷移する場合、トランザクションの開始、およびセッション同期メソッドafterBeginの起動が発生します。逆に、トランザクションにおけるメソッド実行可能状態からメソッド実行可能状態に遷移する場合、トランザクションの成功時には、トランザクションの正常なコミット、セッション同期メソッドbeforeCompletionの起動、および引数trueを使用したセッション同期メソッドafterCompletionの起動が発生します。トランザクションの失敗時には、トランザクションのロールバック、および引数falseを使用したセッション同期メソッドafterCompletionの起動が発生します。