プール内の Bean は、EJB のライフサイクルにおけるプール状態を表します。つまり、その Bean は ID を持ちません。Bean をプール内に格納することの利点は、要求を処理するための Bean の作成時間を短縮できることにあります。このコンテナには、リクエストパスで Bean の作成時間を短縮できるよう、プールオブジェクトをバックグラウンドで作成するためのメカニズムが備わっています。
ステートレスセッション Beans とエンティティー Beans が EJB プールを使用します。ステートレスセッション Beans の使用方法やサーバーが処理するトラフィックの量に注意しながらプールサイズの調整を行い、Beans の過剰な作成や削除が発生しないようにしてください。
ある特定の EJB コンポーネントで、EJB コンテナのキャッシュ設定を上書きするキャッシュ設定を指定するには、その EJB コンポーネントの sun-ejb-jar.xml 配備記述子の <bean-pool> 要素を使用します。
EJB のプール設定は次のとおりです。
初期および最小プールサイズ: プール内に維持される Beans の初期および最小の数。有効な値は 0 から MAX_INTEGER までであり、デフォルト値は 8 です。EJB 配備記述子の対応する属性は、steady-pool-size です。
中程度の負荷がかかるシステムでは、このプロパティーをゼロよりも大きい数値に設定します。値をゼロよりも大きくすれば、受信要求を処理するインスタンスが、プール内に常に存在するようになります。
最大プールサイズ: クライアント要求に応えるために作成できる接続の最大数。有効な値はゼロから MAX_INTEGER までです。デフォルトは 32 です。値ゼロは、プールのサイズが無制限であることを意味します。これは、JVM ヒープがプール内のオブジェクトでいっぱいになる可能性があることを意味します。EJB 配備記述子の対応する属性は、max-pool-size です。
このプロパティーは、システムの予期される高負荷状態を表す値に設定してください。プールが大きすぎるとメモリーが無駄に消費され、システムのパフォーマンスが低下する可能性があります。プールが小さすぎても、多数の競合が発生するので非効率です。
プールサイズ変更量: キャッシュがサーバーによって処理されているときに作成または削除される Beans の数。有効な値はゼロから MAX_INTEGER までであり、デフォルトは 16 です。EJB 配備記述子の対応する属性は、resize-quantity です。
最大プールサイズを変更した場合はプールサイズ変更量も必ず調整し直し、バランスを維持できるようにしてください。一般に、最大プールサイズを大きくした場合には、プールサイズ変更量も大きくすべきです。
プールアイドルタイムアウト: ステートレスセッション Bean、エンティティー Bean、またはメッセージ駆動型 Bean がプール内でアイドル状態でいられる時間の最大値。この時間を経過した Bean がステートレスセッション Bean、メッセージ駆動型 Bean のいずれかである場合、その Bean は破棄されます。これはサーバーに対するヒントです。デフォルト値は 600 秒です。EJB 配備記述子の対応する属性は、pool-idle-timeout-in-seconds です。
プール内に存在している Beans が最大プールサイズよりも多い場合、そのプールのサイズは縮小されて初期および最小プールサイズに戻りますが、その処理は、プールアイドルタイムアウトに指定された間隔で、プールサイズ変更量の単位で行われます。サイズ変更量が小さすぎ、かつアイドルタイムアウトが大きいと、プールが縮小されて通常サイズに戻るまでに、非常に長い時間がかかります。