前へ     目次     索引     DocHome     次へ     
iPlanet Web Server, Enterprise Edition サーブレットに関するプログラマーズガイド



第 6 章   セッションマネージャ


セッションオブジェクトは、通常ステートレスの HTTP プロトコルを介した複数のページ要求にわたり、状態とユーザの識別情報を管理します。セッションは、ユーザからの複数の接続またはページ要求にわたって、指定された期間、持続します。各セッションは、通常、一人のユーザに対応付けられており、そのユーザはサイトを頻繁に訪れています。サーバは、cookie を使用するか、URL を書き換えることによって、セッションを継続します。サーブレットは、セッションオブジェクトにアクセスして、セッションに関する状態情報を取得することができます。

この章は、以下の節から構成されています。



セッションの概要

HTTP セッションは、サーバ側のセッションを表しています。サーバは、以下の条件に一致した場合、セッションを新規のものであると判断します。

  • クライアントがそのセッションを認識できない

  • そのセッションがまだ開始されていない

セッションマネージャは、新規のセッションが開始されると、必ず新規のセッションオブジェクトを自動的に作成します。場合によっては、クライアントがセッションに参加しないこともあります。たとえば、セッションマネージャが cookie を使用しているのに対して、クライアントが cookie を受け入れていない場合などです。

iPlanet Web Server 6.0 には、セッションの作成および管理用に、以下のセッションマネージャが付属しています。

  • IWSSessionManager - デフォルトのセッションマネージャ。持続セッション用にデータベースストアまたはファイルストアを使用したり、シングルプロセスまたはマルチプロセスモードで実行することができます。

  • MMapSessionManager (UNIX のみ) - サーバをマルチプロセスモードで実行するためのセッションマネージャ。分散セッションはサポートしていません。

  • SimpleSessionManager - 非推奨の簡易セッションマネージャ。分散セッションはサポートしていません。

  • JdbcSessionManager - 非推奨のセッションマネージャ。JDBC API を使用してセッション情報をデータベースに保管し、分散セッションをサポートしています。

マルチプロセスモードは、UNIX プラットフォーム上でのみサポートされています。セッションマネージャのすべてのマルチプロセスモード機能は、Windows NT 上では無視されます。

iPlanet Web Server 6.0 では、ユーザ独自のセッションマネージャを開発し、それをサーバに読み込むこともできます。セッションマネージャクラスのソースコードファイルは、ユーザが独自のセッションマネージャを定義するときに、取り掛かりとして利用できます。これらの Java ファイルは、ディレクトリ server_root/plugins/servlets/iws-apis/sessions にあります。



セッションマネージャの指定



デフォルトでは、iPlanet Web Server はサーブレット用のセッションマネージャとして IWSSessionManager を使用します。セッションマネージャは以下のいずれかの方法で変更することができます。

  • ディレクトリ server_id/config に格納されているファイル web-apps.xml を編集する

    以下の例のように、サーブレットまたは JSP の web-app 要素内に session-manager 要素を追加します。

    <session-manager
           class='com.iplanet.server.http.session.YourSesMgr'>
           <init-param>
                 <param-name>maxSessions</param-name>
                 <param-value>1000</param-value>
           </init-param>
           <init-param>
                 <param-name>timeOut</param-name>
                 <param-value>1800</param-value>
           </init-param>
           <init-param>
                 <param-name>reapInterval</param-name>
                 <param-value>600</param-value>
           </init-param>
    </session-manager>

    web-apps.xml ファイルの詳細は、第 2 章「Web アプリケーション」を参照してください。

  • サーバマネージャインタフェースの「Legacy Servlets」>「Configure Global Servlet Attributes」ページを使用する

    「Session Manager」フィールドでセッションマネージャを指定し、必要に応じて「Session Manager Args」フィールドにパラメータを指定します。

  • ディレクトリ server_id/config に格納されているファイル servlets.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    servlets.sessionmgr の値を指定する行を追加します。また、必要に応じて、セッションマネージャのパラメータを指定する行も追加します。以下に例を示します。

    servlets.sessionmgr=com.iplanet.server.http.session.YourSesMgr
    servlets.sessionmgr.initArgs=maxSessions=20,timeOut=300,reapInterval= 150

  • ディレクトリ server_id/config に格納されているファイル contexts.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    context.context_name.sessionmgr の値を指定する行を追加します。また、必要に応じて、セッションマネージャのパラメータを指定する行も追加します。以下に例を示します。

    context.global.sessionmgr=com.iplanet.server.http.session.YourSesMgr
    context.global.sessionmgr.initArgs=maxSessions=20,timeOut=300

    グローバルコンテキストを変更したり、新しいコンテキストを定義してそれにサーブレットを割り当てたりすることもできます。詳しくは、第 8 章「古いバージョンのサーブレットおよび JSP の構成」を参照してください。



IWSSessionManager

IWSSessionManager は、デフォルトのセッションマネージャです。

IWSSessionManager は、シングルプロセスモードとマルチプロセスモードの両方で動作可能です。異なるマシンで実行されている複数のプロセスのセッション情報を共有するために使用できます。magnus.conf ファイルの MaxProcs 指令によって、サーバがシングルプロセスモードとマルチプロセスモードのどちらで稼動しているかを判別できます。詳しくは、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照してください。

セッションを持続するために、IWSSessionManager は、サーバファームのすべてのサーバからアクセス可能な、データベースまたは分散ファイルシステム (DFS) のパスを使用します。各セッションは、データベースまたは分散ファイルシステムに直列化されます。また、ユーザ独自の持続メカニズムを作成することもできます。

iPlanet Web Server がシングルプロセスモードで稼動している場合、デフォルトではセッションの持続モードは定義されていないため、セッションは持続的ではありません。

iPlanet Web Server がマルチプロセスモードで稼動している場合、デフォルトではセッションは持続的です。持続モードが定義されていない場合は、IWSSessionManager では DFS が使用されます。

マルチプロセスモードは、UNIX プラットフォーム上でのみサポートされています。IWSSessionManager のすべてのマルチプロセスモード機能は、Windows NT 上では無視されます。


IWSSessionManager のパラメータ

IWSSessionManager では、以下のパラメータが使用されます。

  • maxSessions - セッションマネージャが一度に管理できるセッションの最大数。セッションマネージャは、すでにセッション数が maxSessions になっている場合、それ以上新規セッションは作成しません。デフォルト値は 1000 です。

  • timeOut - クライアントがセッションにアクセスしてからセッションマネージャがそのセッションを無効にするまでの経過時間 (秒単位)。timeOut 秒の間アクセスされなかったセッションは、reaper メソッドによって無効になります。デフォルト値は 1800 (30 分) です。

    web.xmlsession-timeout が指定されている場合は、この timeOut パラメータ値は無効になります。詳しくは、「session-timeout」を参照してください。

  • reapInterval - reaper メソッドが再び呼び出されるまでの SessionReaper スレッドのスリープ時間 (秒単位)。デフォルト値は 600 (10 分) です。

  • maxLocks - 複数のプロセスにわたる個別のセッションへのアクセスを同期させるために使用する、クロスプロセスロックの数。デフォルト値は 10 です。このデフォルト値は、値に 0 が指定された場合に使用されます。このパラメータは、シングルプロセスモードでは無視されます。

  • session-data-store - セッションを持続する方法を決定するクラスの名前。iPlanet Web Server で提供されているクラスは、以下のとおりです。

    • com.iplanet.server.http.session.JdbcStore

    • com.iplanet.server.http.session.FileStore

    session-data-store パラメータを指定しない場合は、セッションはシングルプロセスモードでは持続的でなくなります。マルチプロセスモードでは、FileStore がデフォルトです。

    JdbcStore および FileStore クラスは、SessionDataStore のサブクラスです。SessionDataStore を拡張することにより、セッションの持続性を実装するための独自のクラスを作成することもできます。



      JdbcStore を使用する前に、セッション情報を格納するためのテーブルを作成する必要があります。テーブル名は table パラメータを使用して指定し、テーブルの 4 つの列は accessTimeColumntimeOutColumnsessionIdColumn、および valueColumn パラメータを使用して指定します。

     



session-data-store パラメータを JdbcStore または FileStore クラスに設定した場合、IWSSessionManager では以下のパラメータがさらに使用されます。

  • session-failover-enabled - 要求のたびにセッションを持続ストアから読み込み直すかどうかと、マルチプロセスモードで常に true に設定するかどうかを指定します。

session-data-store パラメータを FileStore クラスに設定した場合、IWSSessionManager では以下のパラメータがさらに使用されます。

  • session-data-dir - すべてのサーバおよび Web アプリケーションのセッションデータを格納するディレクトリ

    session-data-dir パラメータを指定しない場合は、以下のディレクトリがデフォルトで使用されます。

    server_root/server_id/SessionData/virtual_server_id/web_app_URI

session-data-store パラメータを JdbcStore クラスに設定した場合、IWSSessionManager では以下のパラメータがさらに使用されます。

  • provider - JDBC ドライバ (デフォルトは sun.jdbc.odbc.JdbcOdbcDriver)。JDBC API の詳細は、以下の Web サイトを参照してください。

    http://java.sun.com/products/jdbc/index.html



      JdbcStore クラスは、web-apps.xmlclass-loader 要素の classpath 属性に割り当てられた JDBC ドライバクラスを認識しません。JDBC ドライバクラスを jvm12.conf ファイルの jvm.classpath 変数に割り当ててください。詳しくは、付録 C「JVM の構成」を参照してください。

     



  • url - データソース (デフォルトは jdbc:odbc:LocalServer)

  • table - セッションを格納する SQL テーブルの名前 (デフォルトは sessions)

  • username - データベースのログインユーザ名

  • password - データベースのログインパスワード

  • reaperActive - true に設定された場合 (デフォルト値)、セッション reaper を実行して期限切れのセッションをデータベースから削除するよう、セッションマネージャに指示します。 reaper を実行しているサーバがクラスタ内で 1 つのみになるようにしてください。

  • accessTimeColumn - 最後にアクセスされた時間 (分単位) を格納する列の名前 (デフォルトは AccessTime)。SQL 型は NUMERIC(9) です。

  • timeOutColumn - セッションタイムアウト (分単位) を格納する列の名前 (デフォルトは TimeOut)。SQL 型は NUMERIC(9) です。

  • sessionIdColumn - セッション ID を格納する列の名前 (デフォルトは SessionID)。SQL 型は VARCHAR(100) です。

  • valueColumn - セッションオブジェクトを格納する列の名前 (デフォルトは Value)。SQL 型は VARBINARY(4096) です。この列は、すべてのセッションデータを格納できるくらいの大きさである必要があります。

セッション情報を処理するためのデータベース上での各操作 (検索、挿入、更新、および削除) は、対応する専用の接続によって実行されます。これらの接続はそれぞれ、パフォーマンスを向上させるために、コンパイル済みの SQL 文を持っています。以下のパラメータを使用して、各操作専用の接続の数をカスタマイズできます。

  • lookupPool - 検索操作を行う接続の数 (デフォルトは 4)

  • insertPool - 挿入操作を行う接続の数 (デフォルトは 4)

  • updatePool - 更新操作を行う接続の数 (デフォルトは 4)

  • deletePool - 削除操作を行う接続の数 (デフォルトは 2)


IWSSessionManager を有効にする

IWSSessionManager を有効にして、デフォルトパラメータを変更することができます。また、サーバがシングルプロセスモードで稼動している場合は、特定のコンテキストで IWSSessionManager を有効にすることができます。iPlanet Web Server で IWSSessionManager を使用できるようにするには、以下のいずれかの方法を実行してください。

  • ディレクトリ server_id/config に格納されているファイル web-apps.xml を編集する

    以下の例のように、サーブレットまたは JSP の web-app 要素内に session-manager 要素を追加します。

    <session-manager
           class='com.iplanet.server.http.session.
    IWSSessionManager'>
           <init-param>
                 <param-name>maxSessions</param-name>
                 <param-value>1000</param-value>
           </init-param>
           <init-param>
                 <param-name>timeOut</param-name>
                 <param-value>1800</param-value>
           </init-param>
           <init-param>
                 <param-name>reapInterval</param-name>
                 <param-value>600</param-value>
           </init-param>
           <init-param>
                 <param-name>
    session-data-dir</param-name>
                 <param-value>
    /net/dotcom.com/sessions</param-value>
           </init-param>
    </session-manager>

    web-apps.xml ファイルの詳細は、第 2 章「Web アプリケーション」を参照してください。

  • サーバマネージャインタフェースの「Legacy Servlets」>「Configure Global Servlet Attributes」ページを使用する

    「Session Manager」フィールドで、以下のように指定します。

    com.iplanet.server.http.session.IWSSessionManager

    「Session Manager Args」フィールドにセッションマネージャのパラメータを指定することもできます。以下に例を示します。

    maxSessions=20,session-data-dir=/net/dotcom.com/sessions


IWSSessionManager のソースコード

IWSSessionManager は、各セッションに対して IWSHttpSession オブジェクトを作成します。IWSSessionManager.java および IWSHttpSession.java のソースファイルは、server_root/plugins/servlets/iws-apis/sessions ディレクトリに格納されています。IWSSessionManager.java および IWSHttpSession.java のソースコードファイルは、ユーザが独自のセッションマネージャおよびセッションオブジェクトを定義するときに、取り掛かりとして利用できます。

IWSSessionManager は、IWSHttpSessionManager を拡張します。IWSHttpSessionManager のクラスファイルは、ディレクトリ server_root/bin/https/jar にある JAR ファイル NSServletLayer.jar に格納されています。IWSSessionManager は、IWSHttpSessionManager 内の実装する必要のあるすべてのメソッドを実装しています。そのため、IWSHttpSessionManager の拡張方法の例として IWSSessionManager を使用することができます。IWSSessionManager または IWSHttpSessionManager のサブクラスをコンパイルするときは、必ず JAR ファイル NSServletLayer.jar がコンパイラのクラスパスにあることを確認してください。

JdbcStore.java および FileStore.java ソースファイルと、その親クラスのソースファイル SessionDataStore.java は、ユーザが IWSSessionManager のセッション持続メカニズムを変更できるようにするために用意されています。これらのファイルも、ディレクトリ server_root/plugins/servlets/iws-apis/sessions に格納されています。



MMapSessionManager (UNIX のみ)



これは、シングルモードとマルチモードの両方で稼動する、メモリマップ (mmap) ファイルベースの持続的なセッションマネージャです。

magnus.conf ファイルの MaxProcs 指令によって、サーバがシングルプロセスモードとマルチプロセスモードのどちらで稼動しているかを判別できます。詳しくは、iPlanet Web Server の『NSAPI プログラマーズガイド』を参照してください。


パラメータ

MMapSessionManager では、以下のパラメータが使用されます。

  • maxSessions - セッションマネージャが一度に管理できるセッションの最大数。セッションマネージャは、すでにセッション数が maxSessions になっている場合、それ以上新規セッションは作成しません。デフォルト値は 1000 です。

  • maxValuesPerSession - セッションが保持できる値またはオブジェクトの最大数。デフォルト値は 10 です。

  • maxValueSize - セッションが保持できる各値またはオブジェクトの最大サイズ。デフォルト値は 4096 です。

  • timeOut - クライアントが最後にセッションにアクセスしてからセッションマネージャがそのセッションを無効にするまでの経過時間 (秒単位)。timeOut 秒の間アクセスされなかったセッションは、reaper メソッドによって無効にされます。デフォルト値は 1800 (30 分) です。

    web.xmlsession-timeout が指定されている場合は、 timeOut パラメータ値は無効になります。詳しくは、「session-timeout」を参照してください。

  • reapInterval - reaper メソッドが再び呼び出されるまでの SessionReaper スレッドのスリープ時間 (秒単位)。デフォルト値は 600 (10 分) です。

  • maxLocks - 複数のプロセスにわたる個別のセッションへのアクセスを同期させるために使用する、クロスプロセスロックの数。デフォルト値は 1 です。このデフォルト値は、値に 0 が指定された場合に使用されます。このパラメータは、シングルプロセスモードでは無視されます。


MMapSessionManager を有効にする

MMapSessionManager を有効にして、デフォルトパラメータを変更することができます。また、サーバがシングルプロセスモードで稼動している場合は、特定のコンテキストで MMapSessionManager を有効にすることができます。iPlanet Web Server で MMapSessionManager を使用するには、以下のいずれかの方法を実行してください。

  • サーバマネージャインタフェースの「Legacy Servlets」>「Configure Global Servlet Attributes」ページを使用する

    「Session Manager」フィールドで、以下のように指定します。

    com.iplanet.server.http.session.MMapSessionManager

    「Session Manager Args」フィールドにセッションマネージャのパラメータを指定することもできます。以下に例を示します。

    maxSessions=20,maxValueSize=1024,timeOut=300

  • ディレクトリ server_id/config に格納されているファイル servlets.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    servlets.sessionmgr の値を指定する行を追加します。また、セッションマネージャのパラメータを指定する行も追加します。

    servlets.sessionmgr=com.iplanet.server.http.session.MMapSessionMana ger
    servlets.sessionmgr.initArgs=maxSessions=20,maxValueSize=1024,timeO ut=300

  • ディレクトリ server_id/config に格納されているファイル contexts.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    context.context_name.sessionmgr の値を指定する行を追加します。また、セッションマネージャのパラメータを指定する行も追加します。

    context.global.sessionmgr=com.iplanet.server.http.session.MMapSessi onManager
    context.global.sessionmgr.initArgs=maxSessions=20,maxValueSize=1024 ,timeOut=300

    グローバルコンテキストを変更したり、新しいコンテキストを定義してそれにサーブレットを割り当てたりすることもできます。詳しくは、第 8 章「古いバージョンのサーブレットおよび JSP の構成」を参照してください。

このセッションマネージャは、java.io.Serializable を実装するオブジェクトのみ格納できます。


SessionData のバージョンファイルの削除

サーバが MMapSessionManager セッションマネージャを使用している場合は、SessionData ディレクトリに持続セッション情報が格納されています。このキャッシュには、バージョン番号が記述されている Version ファイルが格納されており、サーバはこのファイルを使用して、ディレクトリの構造とキャッシュ内のファイルを判別します。バージョンファイルを削除するだけで、キャッシュをクリーンアップすることができます。

サーバは、起動時にバージョンファイルを検出できない場合、該当するキャッシュのディレクトリ構造を削除し、そのバージョンファイルを再作成します。次回サーバが MMapSessionManager セッションマネージャを使用してサーブレットを実行するときに、セッションデータキャッシュが再作成されます。

バージョンファイルは、通常ファイルを削除するときと同じように SessionData ディレクトリから削除するだけで、削除できます。または、サーバマネージャの「Java」>「Delete Version Files」ページで削除することもできます。バージョンファイルを削除した後は、必ず iPlanet Web Server を再起動してください。そうすることにより、該当するキャッシュがクリーンアップされ、サーバがサーブレットを実行する前にバージョンファイルが再作成されます。



非推奨のセッションマネージャ



SimpleSessionManager および JdbcSessionManager は、iPlanet Web Server 4.x との下位互換性を提供するために用意されています。



  次の非推奨のセッションマネージャの親クラスも非推奨であり、下位互換性を提供するためにのみ用意されています。

com.netscape.server.http.session.NSHttpSessionManager

代わりに、次のクラスを拡張してください。

com.iplanet.server.http.session.IWSHttpSessionManager

 




SimpleSessionManager

SimpleSessionManager は、シングルプロセスモードでのみ動作します。セッションは持続的ではなく、すべてのセッションはサーバが停止したときに失われます。



  SimpleSessionManager は非推奨であり、下位互換性を提供するためにのみ用意されています。代わりに、セッションの持続性を持たない IWSSessionManager を使用してください。

 




パラメータ

SimpleSessionManager クラスでは、以下のパラメータが使用されます。

  • maxSessions - セッションマネージャが一度に管理できるセッションの最大数。
    セッションマネージャは、すでにセッション数が maxSessions になっている場合、それ以上新規セッションは作成しません。デフォルト値は 1000 です。

  • timeOut - クライアントがセッションにアクセスしてからセッションマネージャがそのセッションを無効にするまでの経過時間 (秒単位)。timeOut 秒の間アクセスされなかったセッションは、reaper メソッドによって無効にされます。デフォルト値は 1800 (30 分) です。

    web.xmlsession-timeout が指定されている場合は、この timeOut パラメータ値は無効になります。詳しくは、「session-timeout」を参照してください。

  • reapInterval - reaper メソッドが再び呼び出されるまでの SessionReaper スレッドのスリープ時間 (秒単位)。デフォルト値は 600 (10 分) です。


SimpleSessionManager を有効にする

SimpleSessionManager を有効にして、デフォルトパラメータを変更することができます。また、サーバがマルチプロセスモードで稼動している場合は、特定のコンテキストで SimpleSessionManager を有効にすることができます。iPlanet Web Server で SimpleSessionManager を使用するには、以下のいずれかの方法を実行してください。

  • サーバマネージャインタフェースの「Legacy Servlets」>「Configure Global Servlet Attributes」ページを使用する

    「Session Manager」フィールドで、以下のように指定します。

    com.netscape.server.http.session.SimpleSessionManager

    「Session Manager Args」フィールドにセッションマネージャのパラメータを指定することもできます。以下に例を示します。

    maxSessions=20,timeOut=300,reapInterval=150

  • ディレクトリ server_id/config に格納されているファイル servlets.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    servlets.sessionmgr の値を指定する行を追加します。また、セッションマネージャのパラメータを指定する行も追加します。

    servlets.sessionmgr=com.netscape.server.http.session.SimpleSessionM anager
    servlets.sessionmgr.initArgs=maxSessions=20,timeOut=300,reapInterva l=150

  • ディレクトリ server_id/config に格納されているファイル contexts.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    context.context_name.sessionmgr の値を指定する行を追加します。また、セッションマネージャのパラメータを指定する行も追加します。

    context.global.sessionmgr=com.netscape.server.http.session.SimpleSe ssionManager
    context.global.sessionmgr.initArgs=maxSessions=20,timeOut=300,reapI nterval=150

    グローバルコンテキストを変更したり、新しいコンテキストを定義してそれにサーブレットを割り当てたりすることもできます。詳しくは、第 8 章「古いバージョンのサーブレットおよび JSP の構成」を参照してください。


JdbcSessionManager

これは、シングルモードとマルチモードの両方で動作する、JDBC ベースの持続的なセッションマネージャです。このセッションマネージャを使用して、カスタムデータベースにセッションを格納できます。このカスタムベースは、異なるマシンで実行されている複数のプロセスで共有されます。



  JDBCSessionManager は非推奨であり、下位互換性を提供するためにのみ用意されています。代わりに、JdbcStore セッションの持続性を持つ IWSSessionManager を使用してください。

 



このサンプル JDBC セッションマネージャは、本稼動用に作成またはテストされているのではありません。目的に合わせて動作をカスタマイズするために提供されています。

JdbcSessionManager は、標準 JDBC-ODBC ドライバで Microsoft SQL Server 7.0SP1 に関してテスト済みです。セッションマネージャが使用する ODBC ソース、データベース、およびテーブルを設定する必要があります。検索のパフォーマンスを向上させるため、「Session ID」列にインデックスを生成することをお勧めします。


パラメータ

JdbcSessionManager では、以下のパラメータが使用されます。

  • timeOut - クライアントがセッションにアクセスしてからセッションマネージャがそのセッションを無効にするまでの経過時間 (秒単位)。timeOut 秒の間アクセスされなかったセッションは、reaper メソッドによって無効になります。デフォルト値は 1800 (30 分) です。

    web.xmlsession-timeout が指定されている場合は、この timeOut パラメータ値は無効になります。詳しくは、「session-timeout」を参照してください。

  • provider - JDBC ドライバ (デフォルトは sun.jdbc.odbc.JdbcOdbcDriver)。JDBC API の詳細は、以下の Web サイトを参照してください。

    http://java.sun.com/products/jdbc/index.html



      JdbcStore クラスは、web-apps.xmlclass-loader 要素の classpath 属性に割り当てられた JDBC ドライバクラスを認識しません。JDBC ドライバクラスを jvm12.conf ファイルの jvm.classpath 変数に割り当ててください。詳しくは、付録 C「JVM の構成」を参照してください。

     



  • url - データソース (デフォルトは jdbc:odbc:LocalServer)

  • table - セッションを格納する SQL テーブルの名前 (デフォルトは sessions)

  • username - データベースのログインユーザ名

  • password - データベースのログインパスワード

  • reaperActive - true に設定された場合 (デフォルト値)、セッション reaper を実行して期限切れのセッションをデータベースから削除するよう、セッションマネージャに指示します。 reaper を実行しているサーバがクラスタ内で 1 つのみになるようにしてください。

  • accessTimeColumn - 最後にアクセスされた時間 (分単位) を格納する列の名前 (デフォルトは AccessTime)。SQL 型は NUMERIC(9) です。

  • sessionIdColumn - セッション ID を格納する列の名前 (デフォルトは SessionID)。SQL 型は VARCHAR(100) です。

  • valueColumn - セッションオブジェクトを格納する列の名前 (デフォルトは Value)。SQL 型は VARBINARY(4096) です。この列は、すべてのセッションデータを格納できるくらいの大きさである必要があります。

セッション情報を処理するためのデータベース上での各操作 (検索、挿入、更新、および削除) は、対応する専用の接続によって実行されます。これらの接続はそれぞれ、パフォーマンスを向上させるために、コンパイル済みの SQL 文を持っています。以下のパラメータを使用して、各操作専用の接続の数をカスタマイズできます。

  • lookupPool - 検索操作を行う接続の数 (デフォルトは 4)

  • insertPool - 挿入操作を行う接続の数 (デフォルトは 4)

  • updatePool - 更新操作を行う接続の数 (デフォルトは 4)

  • deletePool - 削除操作を行う接続の数 (デフォルトは 2)


JdbcSessionManager を有効にする

JdbcSessionManager を有効にして、デフォルトパラメータを変更することができます。また、サーバがシングルプロセスモードで稼動している場合は、特定のコンテキストで JdbcSessionManager を有効にすることができます。iPlanet Web Server で JdbcSessionManager を使用するには、以下のいずれかの方法を実行してください。

  • サーバマネージャインタフェースの「Legacy Servlets」>「Configure Global Servlet Attributes」ページを使用する

    「Session Manager」フィールドで、以下のように指定します。

    com.netscape.server.http.session.JdbcSessionManager

    「Session Manager Args」フィールドにセッションマネージャのパラメータを指定することもできます。以下に例を示します。

    timeOut=1200,username=mysession,password=mypassword

  • ディレクトリ server_id/config に格納されているファイル servlets.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    servlets.sessionmgr の値を指定する行を追加します。また、セッションマネージャのパラメータを指定する行も追加します。

    servlets.sessionmgr=com.netscape.server.http.session.JdbcSessionMan ager
    servlets.sessionmgr.initArgs=timeOut=1200,username=mysession,passwo rd=mypassword

  • ディレクトリ server_id/config に格納されているファイル contexts.properties を編集する。この方法は、デフォルトの仮想サーバにのみ適用できます。

    context.context_name.sessionmgr の値を指定する行を追加します。また、セッションマネージャのパラメータを指定する行も追加します。

    context.global.sessionmgr=com.netscape.server.http.session.JdbcSess ionManager
    context.global.sessionmgr.initArgs=timeOut=1200,username=mysession, password=mypassword

    グローバルコンテキストを変更したり、新しいコンテキストを定義してそれにサーブレットを割り当てたりすることもできます。詳しくは、第 8 章「古いバージョンのサーブレットおよび JSP の構成」を参照してください。

このセッションマネージャは、java.io.Serializable を実装するオブジェクトのみ格納できます。



ロードバランシング、セッションフェイルオーバー、およびセッション ID



iPlanet Web Server 6.0 では、セッション対応の既存のフロントエンドロードバランサ (Resonate など) を使用したサーバファーム (またはクラスタ) 構成がサポートされています。iPlanet Web Server 6.0 は、セッションを生成したサーバホストの node_id を JSESSIONID に接頭辞として付けることにより、スティッキーセッションを実装します。JSESSIONID は、Servlets 2.2 仕様で指定されたセッション cookie 名で、以下のように指定されます。

Set-Cookie: JSESSIONID=node_id-3ad%253A39c02099%253Ad19e53e2a2;
path=/app;expires=Thu, 14-Sep-2000 01:19:30 GMT

これにより、フロントエンドロードバランサは、そのセッションを生成した同じホストに今後の要求を転送できるようになります。

クラスタによって使用されているセッションマネージャが分散セッションをサポートしている場合、障害が発生したサーバが作成したセッションを別のサーバが処理することができます。IWSSessionManager では、session-data-store パラメータ値でセッションの持続性が定義されている場合、分散セッションがサポートされます。JdbcSessionManager も分散セッションをサポートしています。



  サーブレットセッションに使用されるセッション ID ジェネレータでは、暗号化機能が強化された、固有の乱数生成アルゴリズムが採用されています。これにより、処理速度の遅い古いマシンを使用している場合は、パフォーマンスに関する問題が発生することがあります。セッションマネージャ API では、ランダム ID の生成方法を再定義し、目的に応じてカスタマイズすることができます (「IWSSessionManager のソースコード」 で説明されているサンプルファイル IWSSessionManager.java を参照)。

 





  iPlanet Web Server のセッションマネージャでは、最大 108 文字 (ASCII) のセッション ID を生成できます。

 




前へ     目次     索引     DocHome     次へ     
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.

Last Updated September 17, 2001