クライアントから要求がある前にBeanのインスタンスを生成しておくことでアクセス時のインスタンス生成処理時間が省略され、処理性能が向上します。Enterprise Beanインスタンスのプーリング機能は以下のEnterprise Beanで利用されます。
Stateless Session Bean
Message-driven Bean
以下にStateless Session BeanとMessage-driven Beanインスタンスのライフサイクルとプールについて説明します。
Stateless Session Beanの場合、クライアントからBeanに対して要求があると、EJBコンテナはプールからBeanインスタンスを1つ取得し、そのインスタンスに対してビジネスメソッドを実行します。Message-driven Beanの場合、メッセージが届くと、同様にプールからBeanインスタンスを取得しそのインスタンスに対してメッセージリスナーメソッドを実行します。実行完了時にインスタンスをプールに戻します。
EJBタイマーによるコールバック処理の場合にも同様に、プールからインスタンスを取得しタイマーコールバックメソッドを実行し、実行完了時にインスタンスをプールに戻します。
以下の表にプーリング機能を制御するチューニング項目を説明します。
チューニング項目 | 効果 |
---|---|
初期および最小プールサイズ | インスタンスをあらかじめ生成しておくことにより、プールされているインスタンスを利用してすぐに実行できるため処理性能が向上します。 |
最大プールサイズ | プールの最大値によりメモリ使用量を制御できます。 |
プールサイズ変更量 | クライアントからの要求数の急増によってメソッド実行可状態のインスタンスが足りなくなった場合でも、プールサイズの即時拡張により、インスタンス生成処理によるレスポンス遅延が軽減されます。 |
プールアイドルタイムアウト | 不要になった過度のインスタンスを破棄することによりメモリの最適化ができます。 |
注) プールの監視は指定値の間隔で実施しますが、起動後に1回行った後はEJBアプリケーションの使用状況を確認し、使用されていないBeanインスタンスはプールサイズを調整しません。
注意
Message-driven Beanはインスタンスごとにセッションを使用してメッセージを受信します。そのため、プールの最大値を2以上に設定するとメッセージ順序性が保証されません。
プール設定はEnterprise Beanごとに指定できます。定義詳細については、以下のマニュアルを参照してください。
「4.2.3.3 Interstage EJB application deployment descriptor (sun-ejb-jar.xml)」の<ejb><bean-pool>タグ
Enterprise Beanのキャッシュ設定を指定しない場合はIJServerクラスタの値が使用されます。この値は、Interstage Java EE管理コンソール、およびasadminコマンドを使用して変更できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
setサブコマンドの「11.18.3.7 configs.config.ejb-containerの定義項目」、または「11.18.3.8 configs.config.mdb-containerの定義項目」