Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第3部 Webアプリケーションの開発> 第16章 APIを使ったプログラミング> 16.1 セション管理

16.1.1 Webcoordinatorのセション管理

Webcoordinatorでは、セション管理の仕組みを提供しています。
セションは、クライアント毎に1個作成されます。同じクライアントから続けてリクエストがある場合、これらは同じセションとなります。異なるクライアントからのリクエストは別のセションとして区別されます。
Webcoordinatorでは、セションを表すクラスとしてセションクラスが利用可能です。利用者定義のセションクラスを作成することによって、クライアント単位のデータを保持することができます。また、全てのクライアントで共有されるデータは、アプリケーションクラスに保持することができます。
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アプリケーション環境定義ファイルを参照してください。
アプリケーションクラスも同様の手順で作成します。
1) アプリケーションクラスはApplicationProfileを継承します。

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

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

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005