Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理ガイド

第 8 章 J2EE コンテナ

この章では、サーバーに含まれている J2EE コンテナの設定方法について説明します。この章には次の節が含まれています。

J2EE コンテナについて

この節では、Application Server に含まれている J2EE コンテナについて説明します。

J2EE コンテナのタイプ

J2EE コンテナは J2EE アプリケーションコンポーネントの実行時サポートを提供します。J2EE アプリケーションコンポーネントは、コンテナのプロトコルとメソッドを使用して、サーバーが提供するほかのアプリケーションコンポーネントとサービスにアクセスします。Application Server は、アプリケーションクライアントコンテナ、アプレットコンテナ、Web コンテナ、およびEJB コンテナを提供します。コンテナを示す図については、「Application Server のアーキテクチャー」を参照してください。

Web コンテナ

Web コンテナは、Web アプリケーションをホストする J2EE コンテナです。Web コンテナは、サーブレットと JSP (JavaServer Pages) の実行環境を開発者に提供することにより、Web サーバーの機能を拡張します。

EJB コンテナ

Enterprise JavaBeans (EJB コンポーネント) は、ビジネスロジックを含む Java プログラミング言語サーバーコンポーネントです。EJB コンテナは、Enterprise JavaBeans へのローカルアクセスとリモートアクセスを提供します。

Enterprise JavaBeans には、セッション Beans、エンティティー Beans、およびメッセージ駆動型 Beans の 3 つのタイプがあります。セッション Beans は、一時的なオブジェクトやプロセスを表し、通常は 1 つのクライアントが使用します。エンティティー Beans は、通常データベースに保持されている持続性データを表します。メッセージ駆動型 Beans は、メッセージを非同期でアプリケーションモジュールやサービスに渡すために使われます。

コンテナの機能は、Enterprise JavaBean を作成したり、ほかのアプリケーションコンポーネントが Enterprise JavaBean にアクセスできるように Enterprise JavaBean をネームサービスにバインドしたり、承認されたクライアントだけが Enterprise JavaBean メソッドにアクセスできるようにしたり、Bean の状態を持続的記憶領域に保存したり、Bean の状態をキャッシュしたり、必要に応じて Bean を活性化したり非活性化したりすることです。

J2EE コンテナに関する管理コンソールタスク

一般的な Web コンテナ設定の設定

このリリースでは、管理コンソールに Web コンテナのコンテナ全体に関する設定はありません。

Web コンテナセッションの設定

この節では、Web コンテナの HTTP セッション設定について説明します。HTTP セッションは、持続ストアに書き込まれた状態データを持つ独自の Web セッションです。

Procedureセッションタイムアウト値を設定する

手順
  1. ツリーコンポーネントで、「設定」ノードを選択します。

  2. 設定するインスタンスを選択します。

    • 特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。

    • すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。

  3. 「Web コンテナ」ノードを選択します。

  4. 「セッションプロパティー」タブをクリックします。

  5. 「セッションタイムアウト」フィールドで、セッションが有効である秒数を入力します。

  6. 「保存」をクリックします。

Procedureマネージャープロパティーを設定する

セッションマネージャーを使用して、セッションを作成および破棄する方法、セッション状態を格納する場所、およびセッションの最大数を設定できます。

セッションマネージャーの設定を変更するには、次の手順に従います。

手順
  1. ツリーコンポーネントで、「設定」ノードを選択します。

  2. 設定するインスタンスを選択します。

    • 特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。

    • すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。

  3. 「Web コンテナ」ノードを選択します。

  4. 「マネージャープロパティー」タブをクリックします。

  5. リープ間隔の値を設定します。

    「リープ間隔」フィールドで、非アクティブセッションデータがストアから削除されるまでの秒数を指定します。

  6. 最大セッションの値を設定します。

    「最大セッション」フィールドで、許容されるセッションの最大数を指定します。

  7. セッションファイル名の値を設定します。

    「セッションファイル名」フィールドで、セッションデータを格納するファイルを指定します。

  8. セッション ID ジェネレータクラス名の値を設定します。

    「セッション 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 のクラスパスになければいけません。

  9. 「保存」をクリックします。

Procedureストアプロパティーを設定する

手順
  1. ツリーコンポーネントで、「設定」ノードを選択します。

  2. 設定するインスタンスを選択します。

    • 特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。

    • すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。

  3. 「Web コンテナ」ノードを選択します。

  4. 「ストアプロパティー」タブをクリックします。

  5. リープ間隔を設定します。

    「リープ間隔」フィールドで、非アクティブセッションデータがストアから削除されるまでの秒数を指定します。

  6. 「保存」をクリックします。

一般的な EJB 設定の設定

この節では、サーバー上のすべての Enterprise JavaBean コンテナに適用される、次の設定を説明します。

デフォルト値をコンテナ別にオーバーライドするには、sun-ejb-jar.xml ファイル内で Enterprise JavaBeans の値を調整します。詳細については、『Application Server 開発者ガイド』を参照してください。

セッション格納位置

「セッション格納位置」フィールドは、ファイルシステムで非活性化された Beans と持続的な HTTP セッションが保存されるディレクトリを指定します。

非活性化された Beans とは、ファイルシステムのファイルに状態を書き込まれた Enterprise JavaBeans です。非活性化された Beans は、通常、特定の時間内のアイドル状態にあり、現在クライアントによってアクセスされていません。

非活性化された Beans と同じく、持続的な HTTP セッションはファイルシステム上のファイルに状態を書き込まれた個別の Web セッションです。

「コミットオプション」フィールドで、コンテナがトランザクション間の非活性化されたエンティティー Bean インスタンスをキャッシュする方法を指定します。

オプション B はトランザクション間のエンティティー Bean インスタンスをキャッシュし、デフォルトで選択されます。オプション C はキャッシュを無効にします。

ProcedureEJB プールを設定する

Beans の作成によってパフォーマンスに影響を受けることなく、クライアントの要求に応答するために、コンテナは Enterprise JavaBeans のプールを保持します。これらの設定は、ステートレスセッション Beans とエンティティー Beans だけに適用されます。

配備した Enterprise JavaBeans を使用するアプリケーションでパフォーマンス上の問題がある場合は、プールを作成したり、既存のプールで保持される Beans の数を増やしたりすることによって、アプリケーションのパフォーマンスを向上させることができます。

デフォルトで、コンテナは Enterprise JavaBeans のプールを保持しています。

手順
  1. ツリーコンポーネントで、「設定」ノードを選択します。

  2. 設定するインスタンスを選択します。

    • 特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。

    • すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。

  3. 「EJB コンテナ」ノードを選択します。

  4. 「初期および最小プールサイズ」フィールドの「プール設定」で、コンテナがプールで作成する Beans の最小数を入力します。

  5. 「最大プールサイズ」フィールドで、コンテナが一度にプール内に保持する Beans の最大数を入力します。

  6. 「プールサイズ変更量」フィールドに、「プールアイドルタイムアウト」フィールドで指定した時間を超えて Beans がアイドル状態になった場合にプールから削除される Beans の数を入力します。

  7. 「プールアイドルタイムアウト」フィールドに、プール内の Bean がプールから削除される前にアイドル状態でいられる時間を秒単位で入力します。

  8. 「保存」をクリックします。

  9. Application Server を再起動します。

ProcedureEJB キャッシュを設定する

コンテナは、もっともよく使われる Enterprise JavaBeans の Enterprise JavaBean データのキャッシュを保持します。これにより、コンテナはその Enterprise JavaBeans のデータに対するほかのアプリケーションモジュールからの要求により速く応答できます。この節が適用されるのは、ステートフルセッション Beans とエンティティー Beans だけです。

キャッシュされた Enterprise JavaBeans は、アクティブ、アイドル、非活性化の 3 つのうち、いずれかの状態になっています。アクティブな Enterprise JavaBean には、現在クライアントがアクセスしています。アイドル Enterprise JavaBeans のデータは現在キャッシュにありますが、この Bean にアクセスしているクライアントはありません。非活性化 Bean のデータは一時的に保存されていて、クライアントが Bean を要求した場合はキャッシュに読み込まれます。

手順
  1. ツリーコンポーネントで、「設定」ノードを選択します。

  2. 設定するインスタンスを選択します。

    • 特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。

    • すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。

  3. 「EJB コンテナ」ノードを選択します。

  4. 「最大キャッシュサイズ」フィールドで最大キャッシュサイズを調整します。

    Bean の作成と破棄のオーバーヘッドをなくすために、キャッシュする Beans の最大数を大きくします。ただし、キャッシュを大きくした場合、サーバーはより大きなメモリーとリソースを消費します。キャッシュ設定に対して動作環境が十分であることを確認してください。

  5. 「キャッシュのサイズ変更量」フィールドで、キャッシュのサイズ変更量を調整します。

    キャッシュされた Beans の最大数に達すると、コンテナは複数の非活性化 Beans を、デフォルトで 32 に設定されたバックアップストアから削除します。

  6. 「キャッシュアイドルタイムアウト」フィールドで、エンティティー Beans にスケジュールされたキャッシュクリーンアップの間隔を秒単位で調整します。

    キャッシュされたエンティティー Bean が一定時間アイドル状態になった場合、Bean は非活性化されます。つまり、その Bean の状態がバックアップストアに書き込まれます。

  7. 「削除タイムアウト」フィールドで、ステートフルセッション Beans をキャッシュストアまたは非活性化ストアから削除する時間を秒単位で調整します。

  8. 「選択内容の削除ポリシー」フィールドで、コンテナがステートフルセッション Beans を削除するために使用するポリシーを設定します。

    「選択内容の削除ポリシー」フィールドに設定されたポリシーに基づいて、コンテナは削除するステートフルセッション Beans を決定します。コンテナがキャッシュから Beans を削除するために使えるポリシーには次の 3 つがあります。

    • 最近使用されていない (NRU)

    • ファーストインファーストアウト (FIFO)

    • 最近の使用頻度がもっとも低い (LRU)

    NRU ポリシーでは、最近使われていない Bean を削除します。FIFO ポリシーでは、キャッシュ内でもっとも古い Bean を削除します。LRU ポリシーでは、最近もっともアクセスされていない Bean を削除します。デフォルトでは、コンテナがNRU ポリシーを使うように設定されています。

    エンティティー Beans は常に FIFO ポリシーを使って削除されます。

  9. 「保存」をクリックします。

  10. Application Server を再起動します。

メッセージ駆動型 Bean 設定の設定

メッセージ駆動型 Beans のプールは、「EJB プールを設定する」で説明したセッション Beans のプールと似ています。デフォルトで、コンテナはメッセージ駆動型 Beans のプールを保持しています。

このプールの設定を調整するには、次の手順に従います。

ProcedureMDB プールを設定する

手順
  1. ツリーコンポーネントで、「設定」ノードを選択します。

  2. 設定するインスタンスを選択します。

    • 特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。

    • すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。

  3. 「EJB コンテナ」ノードを選択します。

  4. 「MDB 設定」タブをクリックします。

  5. 「初期および最小プールサイズ」フィールドの「プール設定」で、コンテナがプールで作成するメッセージ Beans の最小数を入力します。

  6. 「最大プールサイズ」フィールドで、コンテナが一度にプール内に保持する Beans の最大数を入力します。

  7. 「プールサイズ変更量」フィールドに、「プールアイドルタイムアウト」フィールドで指定した時間を超えて Beans がアイドル状態になった場合にプールから削除される Beans の数を入力します。

  8. 「プールアイドルタイムアウト」フィールドに、プール内の Bean がプールから削除される前にアイドル状態でいられる時間を秒単位で入力します。

  9. 「保存」をクリックします。

  10. Application Server を再起動します。

EJB タイマーサービス設定の設定

タイマーサービスは、Enterprise JavaBeans により通知やイベントをスケジュールするのに使われ、Enterprise JavaBean コンテナが提供する持続的なトランザクション通知サービスです。ステートフルセッション Beans 以外の Enterprise JavaBeans はすべて、タイマーサービスからの通知を受信できます。このサービスによって設定されたタイマーは、サーバーのシャットダウンや再起動では破棄されません。

Procedureタイマーサービスを設定する

手順
  1. ツリーコンポーネントで、「設定」ノードを選択します。

  2. 設定するインスタンスを選択します。

    • 特定のインスタンスを設定するには、そのインスタンスの設定ノードを選択します。たとえば、デフォルトインスタンス server の場合は、server-config ノードを選択します。

    • すべてのインスタンスのデフォルト値を設定するには、default-config ノードを選択します。

  3. 「EJB コンテナ」ノードを選択します。

  4. 「EJB タイマーサービス」タブをクリックします。

  5. 「最小配信間隔」フィールドで、最小配信間隔をミリ秒単位で設定します。

    最小配信間隔とは、次のタイマーの有効期限が切れて特定のタイマーの発生が可能になるまでのミリ秒単位の時間です。この間隔の設定が短すぎると、サーバーがオーバーロードする可能性があります。

  6. 「最大再配信回数」フィールドで、タイマーサービスが通知の配信を試みる最大回数を設定します。

  7. 「再配信間隔」フィールドで、再配信を試みる間隔をミリ秒単位で設定します。

  8. 「保存」をクリックします。

  9. Application Server を再起動します。

Procedureタイマーサービスで外部データベースを使用する

デフォルトで、タイマーサービスはタイマーを格納するために埋め込みデータベースを使います。

手順
  1. 「JDBC リソースを作成する」の説明に従って、データベースの JDBC リソースを設定します。

  2. 「タイマーデータソース」フィールドで、そのリソースの JNDI 名を入力します。

  3. 「保存」をクリックします。

  4. Application Server を再起動します。

    PointBase や Oracle のタイマーデータベース作成ファイルのサンプルは、install-dir/lib/install/databases/ で提供されています。