Session Beanは、サーバ上でビジネスロジックを実現するEJBアプリケーションです。クライアントとの通信にはRMI-IIOPまたはSOAPを使用でき、開発者は通信処理を実装することなくクライアントからSession Beanを呼び出すことができます。また、トランザクション処理やセキュリティ処理をEJBコンテナに任せることができるため、開発者はビジネスロジックの開発に専念できます。
Session Beanには、状態を保持できる/保持できないによって以下の2種類が存在します。それぞれの特徴を以下に示します。
クライアントとの対話中、トランザクション状態やアプリケーション変数をインスタンスに保持できません。Stateless Session Beanのインスタンスはプールで管理され、クライアントから呼び出される度に空いているインスタンスが再利用されます。このため、メモリ使用量を軽減できます。プールの詳細については、「7.7.3 Enterprise Beanインスタンスのプーリング」を参照してください。
Stateless Session BeanをWebサービスのエンドポイントとして公開することもできます。
Webサービスのエンドポイントとして公開することでSOAPでの呼出しができ、通信プロトコルにHTTPが使用されるため、ファイヤーウォールを隔てたシステムを構築する場合には環境構築が容易です。
クライアントとの対話中にトランザクション状態やアプリケーション変数を保持できます。作成されたStateful Session Beanのインスタンスは、キャッシュで管理されます。同一のクライアントから呼び出された場合には、EJBコンテナがキャッシュされている前回の呼出しと同じインスタンスを呼び出すため、前回の状態をインスタンス変数に保持できます。キャッシュの詳細については、「7.7.2 Enterprise Beanインスタンスのキャッシング」を参照してください。
キャッシュされたインスタンスはRemove要求を実行して削除するか、一定時間超過してもビジネスメソッドが実行されなかった場合、コンテナが「Stateful Session Beanインスタンスの無通信時間監視機能」によって自動的に該当のインスタンスを削除します。
以下にSession Beanの位置づけを示します。
EJBクライアントからEJBアプリケーションのビジネスインタフェースに対して要求を発行する場合、EJBクライアントがEJBアプリケーションのビジネスインタフェースなどのクラスを参照できるように、EJBクライアントと一緒にパッケージングするか、IJServerクラスタの共通クラスローダ、またはアプリケーションクライアントコンテナのクラスパスに追加します。
Stateless Session BeanのWebサービスエンドポイントに対して要求を発行する場合、Webサービスクライアントアプリケーションを使用します。詳細は、「5.11 Webサービスクライアントを利用する場合の手順」を参照してください。
EJB規約によってSession Beanで使用するインタフェースが異なります。EJB3.0規約では、ビジネスインタフェースを使用します。EJB2.1規約以前では、Homeインタフェース/LocalHomeインタフェースとRemoteインタフェース/Localインタフェースを使用します。EJB3.0規約でも、下位互換のためにHomeインタフェース/LocalHomeインタフェースを使用できますが、使用する必要はありません。インタフェースの違いについては、EJB規約を参照してください。