アプリケーションクラス、セションクラス、ビジネスクラスのライフサイクルは以下のようになります。
クラス | インスタンスが作成されるタイミング | インスタンスの有効期間 | 備考 |
---|---|---|---|
ビジネスクラス(initメソッドがtrueを返す場合) | セションBeanオブジェクト作成後、クライアントからの呼び出しを受けてビジネスクラスが初めて呼び出される時 | セションBeanオブジェクトがEJBコンテナから削除されるまで | |
ビジネスクラス(initメソッドがfalseを返す場合) | クライアントからの呼び出しを受けてビジネスクラス呼び出される時 | クライアントからの呼び出しが終了するまで | クライアントからの呼び出しがあるたびにインスタンスが作成されます。 |
セションクラス | セションBeanオブジェクトが作成された時(セションBeanのejbCreateメソッドが呼び出されたとき) | セションBeanオブジェクトがEJBコンテナから削除されるまで | |
アプリケーションクラス | 同一のJVM内で最初にセションBeanのオブジェクトが作成された時(同一のJVM内で最初にセションBeanのejbCreateメソッドが呼び出された時) | 全てのセションBeanインスタンスがEJBコンテナから削除されるまで | 同一のJVMに存在する複数のセションBeanオブジェクトで1個のインスタンスが共有されます。 |
ステートフルセションBeanの場合、クライアントとセションBeanが1対1に対応します。したがって、ビジネスクラスが2回以上呼び出される場合、その呼び出し元は同一のクライアントです。 一方、ステートレスセションBeanの場合、クライアントとセションBeanは1対1で対応づけられていません。そのため、ビジネスクラスが2回以上呼び出される場合、その呼び出し元が同じクライアントであるとは限りません。