次の指針に従うことによって、EJB コンポーネントのパフォーマンスを改善できます。アプリケーションを多数の EJB コンポーネントに分解すると、オーバーヘッドが発生し、パフォーマンスが低下する可能性もあることに留意してください。EJB コンポーネントは単なる Java オブジェクトではありません。EJB コンポーネントは、プロパティーとメソッドに加えて、リモート呼び出しインタフェース、セキュリティー、およびトランザクションのセマンティクスを持つコンポーネントです。
アプリケーションの全体的なパフォーマンスを改善するには、できるだけパフォーマンスの高い Beans を使用します。詳細は、「特定タイプの EJB コンポーネントのチューニングのヒント」を参照してください。
EJB コンポーネントのタイプの一覧を、もっともパフォーマンスの高いものから順に示すと次のようになります。
ステートレスセッション Beans およびメッセージ駆動型 Beans
ステートフルセッション Beans
読み取り専用として設定されたコンテナ管理による持続性 (CMP) エンティティー Beans
読み取り専用として設定された Bean 管理による持続性 (BMP) エンティティー Beans
CMP Beans
BMP Beans
キャッシュを適切に使用することで、パフォーマンスを大きく改善できます。次に例を示します。
EJB 参照のキャッシュ: 要求ごとに JNDI 検索が行われるのを避けるには、EJB 参照をサーブレットにキャッシュします。
ホームインタフェースのキャッシュ: ホームインタフェースを繰り返し検索すると負荷が大きくなる可能性があるため、EJBHome への参照をサーブレットの init() メソッドにキャッシュします。
EJB リソースのキャッシュ: setSessionContext() または ejbCreate() を使用して Bean リソースをキャッシュします。これは再び、可能な場合には Bean のライフサイクルメソッドを使用して、アプリケーションアクションを一度だけ実行する例です。取得したリソースを ejbRemove() メソッドで解放することを忘れないでください。
EJB アプリケーションで必要なスタブクラスは、実行時に EJB クライアントで必要になったときに動的に生成されます。これは、リモート EJB コンポーネントを使用してアプリケーションを配備するときに、スタブを生成したりクライアントの JAR ファイルを取得したりする必要がないことを意味します。--retrieve オプションは配備を高速化しますが、アプリケーションを配備するときにこのオプションを指定する必要はなくなりました。
CosNaming サービスを直接使用する (これは推奨される構成ではない) 従来のリッチクライアントアプリケーションがある場合、RMIC を使用して、アプリケーションに対してスタブを明示的に生成する必要があります。詳細は、『Sun Java System Application Server Enterprise Edition 8.2 トラブルシューティングガイド』を参照してください。
不要なステートフルセッション Bean を削除することにより、ディスク操作が必要な、その Beans のパッシベーションを回避できます。
EJB キャッシュとプールを使用してパフォーマンスを改善するには、次のヒントに従います。
remove() を明示的に呼び出す: クライアントで remove() メソッドを明示的に呼び出すことにより、ステートフルセッション EJB コンポーネントをコンテナキャッシュから削除できます。
エンティティー EJB コンポーネントのプールサイズを調整する: エンティティー Beans は、EJB プールとキャッシュ設定の両方を使用します。エンティティー EJB コンポーネントのプールサイズを調整して、Beans の作成と破棄を最小限にします。ゼロでない一定のサイズで事前にプールを埋めることは、初期要求に対する応答を向上させるために役立ちます。
キャッシュ Bean 固有リソース: Bean 固有リソースをキャッシュするには、setEntityContext() メソッドを使用します。キャッシュしたリソースを解放するには、unSetEntityContext() メソッドを使用します。
コンテナ管理による関係について、関連データを効率的にロードします。詳細は、「コンテナ管理による関係 (CMR) Beans の先取り」を参照してください。
読み取り専用 Beans を識別する: 読み取り専用の操作に対しては、読み取り専用エンティティー Beans を設定します。詳細は、「読み取り専用エンティティー Beans」を参照してください。