この章では、サーバーに含まれている J2EE コンテナの設定方法について説明します。この章には次の節が含まれています。
J2EE コンテナは J2EE アプリケーションコンポーネントの実行時サポートを提供します。J2EE アプリケーションコンポーネントは、コンテナのプロトコルとメソッドを使用して、サーバーが提供するほかのアプリケーションコンポーネントとサービスにアクセスします。Application Server は、アプリケーションクライアントコンテナ、アプレットコンテナ、Web コンテナ、およびEJB コンテナを提供します。コンテナを示す図については、「Application Server のアーキテクチャー」の節を参照してください。
Web コンテナは、Web アプリケーションをホストする J2EE コンテナです。Web コンテナは サーブレットと JSP (JavaServer Pages) の実行環境を開発者に提供することにより、Web サーバーの機能を拡張します。
Enterprise JavaBeans (EJB コンポーネント) は、ビジネスロジックを含む Java プログラミング言語サーバーコンポーネントです。EJB コンテナは、Enterprise JavaBeans へのローカルアクセスとリモートアクセスを提供します。
Enterprise JavaBeans には、セッション Beans、エンティティー Beans、および メッセージ駆動型 Beans があります。セッション Beans は一時的なオブジェクトやプロセスを表し、通常は 1 つのクライアントが使用します。エンティティー Beans は通常データベースに保持されている持続性データを表します。メッセージ駆動型 Beans は、メッセージを非同期でアプリケーションモジュールやサービスに渡すために使われます。
コンテナの機能は、Enterprise JavaBean を作成したり、ほかのアプリケーションコンポーネントが Enterprise JavaBean にアクセスできるように Enterprise JavaBean をネームサービスにバインドしたり、承認されたクライアントだけが Enterprise JavaBean メソッドにアクセスできるようにしたり、Bean の状態を持続的記憶領域に保存したり、Bean の状態をキャッシュしたり、必要に応じて Bean を活性化したり、非活性化したりすることです。
このリリースでは、管理コンソールに Web コンテナのコンテナ全体に関する設定はありません。
この節では、Web コンテナの HTTP セッション設定について説明します。HTTP セッションは、持続ストアに書き込まれた状態データを持つ独自の Web セッションです。
管理コンソール を使用して、HTTP セッションのタイムアウト値を設定します。セッションタイムアウト値は、HTTP セッションが有効である時間を表します。
管理コンソール で、「設定」>「Web コンテナ」>「セッションプロパティー」の順にクリックします。「セッションタイムアウト」フィールドで、セッションが有効である秒数を入力します。
セッションタイムアウト値の設定方法の詳細については、管理コンソール で「ヘルプ」をクリックしてください。
セッションマネージャーを使用して、セッションを作成および破棄する方法、セッション状態を格納する場所、およびセッションの最大数を設定できます。
管理コンソール でセッションマネージャーの設定を変更するには、「設定」>「Web コンテナ」>「マネージャープロパティー」の順にクリックします。
設定するインスタンスを選択します。
特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。
すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。
「マネージャープロパティー」タブで、次のプロパティーを設定します。
リープ間隔の値。「リープ間隔」フィールドで、非アクティブなセッションデータがストアから削除されるまでの秒数を指定します。
最大セッション数の値。「最大セッション数」フィールドで、許容されるセッションの最大数を指定します。
セッションファイル名の値を設定します。「セッションファイル名」フィールドで、セッションデータを格納するファイルを指定します。
「セッション ID ジェネレータクラス名」フィールドで、一意のセッション ID を生成するカスタムクラスを指定できます。サーバーインスタンスごとに 1 つのセッション ID ジェネレータクラスだけを作成できます。クラスタ内のすべてのインスタンスは、セッションキーの競合を防止するために、同じセッション ID ジェネレータを使用する必要があります。
カスタムセッション ID ジェネレータクラスは、次のとおり com.sun.enterprise.util.uuid.UuidGenerator インタフェースを実装する必要があります。
package com.sun.enterprise.util.uuid; public interface UuidGenerator { public String generateUuid(); public String generateUuid(Object obj); //obj はセッションオブジェクト }
このクラスは Application Server のクラスパスになければいけません。
マネージャープロパティーの設定方法の詳細については、管理コンソール で「ヘルプ」をクリックしてください。
セッションストアデータの保存先を指定するには、管理コンソール で、「設定」>「Web コンテナ」>「ストアプロパティー」の順にクリックします。
設定するインスタンスを選択します。
特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。
すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。
セッションストアプロパティーの設定方法の詳細については、管理コンソール で「ヘルプ」をクリックしてください。
Application Server をインストールすると、Application Server インスタンスに対してデフォルトの仮想サーバーが作成されます。この仮想サーバーのデフォルトの docroot は、instance-dirdomains/domain1/docroot に作成されます。これは、instance_name /docroot と同期化されます。仮想サーバーは、追加で作成するそれぞれの Application Server インスタンスに対して作成されます。
この節では、サーバー上のすべての Enterprise JavaBean コンテナに適用される、次の設定を説明します。
デフォルト値をコンテナ別にオーバーライドするには、sun-ejb-jar.xml ファイル内で Enterprise JavaBeans の値を調整します。詳細については、『Application Server Developer’s Guide』を参照してください。
「セッション格納位置」フィールドは、ファイルシステムで非活性化された Beans と持続的な HTTP セッションが保存されるディレクトリを指定します。
非活性化された Beans とは、ファイルシステムのファイルに状態を書き込まれた Enterprise JavaBeans です。非活性化された Beans は、通常、特定の時間内のアイドル状態にあり、現在クライアントによってアクセスされていません。
非活性化された Beans と同じく、持続的な HTTP セッションはファイルシステム上のファイルに状態を書き込まれた個別の Web セッションです。
「コミットオプション」フィールドで、コンテナがトランザクション間の非活性化されたエンティティー Bean インスタンスをキャッシュする方法を指定します。
オプション B はトランザクション間のエンティティー Bean インスタンスをキャッシュし、デフォルトで選択されます。オプション C はキャッシュを無効にします。
Beans の作成によってパフォーマンスに影響を受けることなく、クライアントの要求に応答するために、コンテナは Enterprise JavaBeans のプールを保持します。これらの設定は、ステートレスセッション Beans とエンティティー Beans だけに適用されます。
配備した Enterprise JavaBeans を使用するアプリケーションでパフォーマンス上の問題がある場合は、プールを作成したり、既存のプールで保持される Beans の数を増やしたりすることによって、アプリケーションのパフォーマンスを向上させることができます。
デフォルトで、コンテナは Enterprise JavaBeans のプールを保持しています。
コンテナは、最もよく使われる Enterprise JavaBeans の Enterprise JavaBean データのキャッシュを保持します。これにより、コンテナはその Enterprise JavaBeans のデータに対するほかのアプリケーションモジュールからの要求により速く応答できます。この節が適用されるのは、ステートフルセッション Beans とエンティティー Beans だけです。
キャッシュされた Enterprise JavaBeans は、アクティブ、アイドル、または非活性化のうち、いずれかの状態になっています。アクティブな Enterprise JavaBean には、現在クライアントがアクセスしています。アイドル Enterprise JavaBeans のデータは現在キャッシュにありますが、この Bean にアクセスしているクライアントはありません。非活性化 Bean のデータは一時的に保存されていて、クライアントが Bean を要求した場合はキャッシュに読み込まれます。
メッセージ駆動型 Beans のプールは、「EJB プール設定の設定」で説明したセッション Beans のプールと似ています。デフォルトで、コンテナはメッセージ駆動型 Beans のプールを保持しています。
このプールの設定を調整するには、次の手順に従います。
タイマーサービスは、Enterprise JavaBeans により通知やイベントをスケジュールするのに使われ、Enterprise JavaBean コンテナが提供する持続的なトランザクション通知サービスです。ステートフルセッション Beans 以外の Enterprise JavaBeans はすべて、タイマーサービスからの通知を受信できます。このサービスによって設定されたタイマーは、サーバーのシャットダウンや再起動では破棄されません。