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