ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

17.1.1 Webcoordinatorのセション管理

Webcoordinatorでは、セション管理の仕組みを提供しています。

セションは、クライアントごとに1個作成されます。同じクライアントから続けてリクエストがある場合、これらは同じセションとなります。異なるクライアントからのリクエストは別のセションとして区別されます。

Webcoordinatorでは、セションを表すクラスとしてセションクラスが利用可能です。利用者定義のセションクラスを作成することによって、クライアント単位のデータを保持することができます。また、全てのクライアントで共有されるデータは、アプリケーションクラスに保持することができます。

注意

1台のクライアントで複数のブラウザを使用している場合、ひとつのセションとして実行されるか、ブラウザごとにセションが作成されるかは、ブラウザによって異なります。

Webcoordinatorアプリケーションでセションやアプリケーションのレベルで持つデータを管理する場合は、利用者定義のセションクラス、アプリケーションクラスを使用します。セションクラスは以下の手順で作成します。

  1. セションクラスとしてHttpSessionProfileを継承したクラスを作成します。

    package sample;
    public class SampleSession extends com.fujitsu.uji.http.HttpSessionProfile
    {
    }

    例えばログイン者名のようにセションを通して使われるデータは、このクラスの中に追加します。

  2. ファクトリクラスとしてFactoryインタフェースを持つクラスを作成します。

    Factoryインタフェースを直接に実装するのではなく、HttpFactoryを継承して作成すると便利です。

    ファクトリクラスは、アプリケーションクラス、セションクラスを生成するために利用されるクラスです。

  3. ファクトリクラスよりセションクラスを作成します。

    package sample;
    import com.fujitsu.uji.SessionProfile;
    public class SampleFactory extends com.fujitsu.uji.http.HttpFactory
    {
        public SessionProfile newSessionProfile() {
            return new SampleSession();
        }
    }

    newSessionProfileで利用者定義のセションクラスを生成して返却します。ビジネスクラスではDispatchContextよりSessionProfileを取得できます。このSessionProfileはここで作成したセションクラスになります。

        public void startup(DispatchContext context) {
            SampleSession session = (SampleSession)context.getSessionProfile();
        }
  4. ファクトリクラス名はWebアプリケーション環境定義ファイル(web.xml)で指定します。

    <context-param>
      <param-name>factory</param-name>
      <param-value>sample.SampleFactory</param-value>
    </context-param>

    Webアプリケーション環境定義ファイルの詳細は“Webアプリケーション環境定義ファイル(web.xml)”を参照してください。

アプリケーションクラスも同様の手順で作成します。

  1. アプリケーションクラスはApplicationProfileを継承します。

    package sample;
    public class SampleApplication extends com.fujitsu.uji.ApplicationProfile
    {
    }
  2. ファクトリクラスのnewApplicationProfileメソッドでアプリケーションクラスを生成します。

    public ApplicationProfile newApplicationProfile()
    {
        return new SampleApplication();
    }

注意

アプリケーションサーバが提供するセションリカバリの機能を使用する場合など、 javax.sevlet.http.HttpSessionクラスに登録するオブジェクトがシリアライズ可能であることが要求される場合は、以下のオブジェクトがシリアライズ可能になるようにプログラムを作成してください。

  • セションクラスのインスタンス (ユーザ定義のセションクラスを作成する場合)

  • セションスコープに指定したビジネスクラスのインスタンス

  • データBeanのインスタンス