Sun ONE ロゴ      前へ      目次      索引      次へ     

Sun ONE Application Server 7, Enterprise Edition 管理者ガイド

第 18 章
セッション持続性の設定

この章では、SunTM Open Net Environment (Sun ONE) Application Server 7, Enterprise Edition のセッション持続性の設定方法について説明します。

この章には次の節が含まれます。


セッション持続性について

アプリケーションのセッションが進行する過程で、セッションの一部として、旧来のデータベースに保存されないデータが発生することがよくあります。このようなデータの一例として、ショッピングカートのコンテンツなどがあります。Sun ONE Application Server では、アプリケーションサーバーインスタンスに障害が発生した場合でも、セッション状態を復元して、情報が失われることなくセッションを続行できるように、このようなセッションデータをリポジトリに保存 (つまり、保持) することができます。

Sun ONE Application Server は、HTTP セッションの持続性をサポートしています。HTTP セッションに保存される特定の J2EE オブジェクト参照のフェイルオーバーもサポートしています。

Sun ONE Application Server にバンドルされている高可用性データベース (High-Availability Database : HADB) は、アプリケーションの高可用性を実現するための持続性ストアとして機能します。


付録 B 「フェイルオーバーのシナリオ」では、フェイルオーバーの一般的なシナリオについて詳しく説明しています。


この節には次の項目があります。

持続型について

持続型によって、Sun ONE Application Server で HTTP セッションの持続性およびフェイルオーバーを使用するかどうか、およびその方法を定義します。持続型には、hamemory、および file があります。

持続型を ha に設定すると、HADB は持続性ストアとして使用されます。ha は、HTTP セッションの持続性とフェイルオーバー機能が必要となる本稼働環境でサポートされる持続型です。

memory はデフォルトの持続型であり、これに設定されている場合、フェイルオーバーは行われません。memory は、HTTP セッションの持続性とフェイルオーバー機能を必要としない本稼働環境にもっとも適した持続型です。

また、memoryfile の持続型は、開発環境で開発者が HADB をインストールおよび設定しないでセッション持続性とフェイルオーバーのテストを実行したい場合に役立ちます。

持続型については、「持続型の設定」を参照してください。

アプリケーションサーバーインスタンスとアプリケーションのセッション持続性の設定

管理インタフェースまたはコマンド行インタフェースを使って、クラスタ内のアプリケーションサーバーインスタンスのセッション持続性を設定できます。この設定は、そのアプリケーションサーバーインスタンス上に配備されているすべてのアプリケーションに適用されます。


セッション持続性の設定に加えられた変更を有効にするには、設定を手動で適用して、アプリケーションサーバーインスタンスを再起動する必要があります。

上記の操作の際にインスタンスが要求を処理中である場合は、インスタンスが進行中の要求の処理を終えるまでの十分な時間を確保できるように、インスタンスを再起動する前に、まずインスタンスを静止する必要があります。詳細は、「静止について」および「クラスタ内のアプリケーションサーバーインスタンスの停止」を参照してください。


あらゆるアプリケーションについて、それぞれの対応する sun-web.xml ファイルを編集することでセッション持続性の設定を指定できます。


アプリケーションレベルのセッション持続性の設定は、インスタンスレベルのセッション持続性の設定に優先します。

アプリケーションの配備後にインスタンスレベルの設定を変更した場合でも、アプリケーションサーバーインスタンスの設定はアプリケーションの設定にオーバーライドされます。


たとえば、あるアプリケーションで、同じクラスタ上に配備されているほかのアプリケーションにはない固有のパフォーマンス要件や信頼性要件が要求される場合などに、アプリケーションのセッション持続性の設定を指定する必要性が生じることがあります。

例として、クラスタ上に配備されているアプリケーションの 1 つ (アプリケーション A) で、ほかのアプリケーションよりも確実に最新のセッション状態を利用できるようにする必要があるとします。このような場合には、次の手順に従います。

  1. 管理インタフェースまたはコマンド行インタフェースを使って、インスタンスレベルの持続性頻度を time-based に設定します (これにより、定期的かつ設定可能な時間間隔でセッション状態が保存されます)。
  2. この結果、クラスタ上に配備されているすべてのアプリケーションの持続性頻度が time-based に設定されます。

  3. sun-web.xml ファイルを編集して、アプリケーション A の持続性頻度を web-method に変更します (これにより、各 Web 要求の終了時にセッション状態が保存されるため、最新のセッション情報をもっとも迅速かつ確実に得ることができます)。
  4. この結果、アプリケーション A の持続性頻度は web-method に変更されます。一方、ほかのすべてのアプリケーションの持続性頻度は time-based に設定されたままです。

持続性頻度の詳細は、「持続性頻度の設定」を参照してください。


ユーザーが可用性を有効化し、クラスタ内のすべてのインスタンスの持続型を ha に設定しないかぎり、クラスタ内のセッション状態の定期的なフェイルオーバーは行われません。アプリケーションサーバーインスタンスの可用性を有効化する方法の詳細は、「アプリケーションサーバーインスタンスの可用性の有効化」を参照してください。持続型の設定方法の詳細は、「持続型の設定」を参照してください。



アプリケーションのセッション持続性の設定を変更した場合、変更を有効にするには、アプリケーションを再配備する必要があります。


HTTP セッションに保存される J2EE オブジェクト参照のフェイルオーバー

Sun ONE Application Server は、HTTP セッションに保存される J2EE オブジェクト参照のフェイルオーバーをサポートしています。表「J2EE Web アプリケーションのセッション状態のフェイルオーバーをサポートするオブジェクトタイプ」は、サポートされている J2EE オブジェクト参照のリストです。

J2EE オブジェクト参照の復元には、次の条件が適用されます。

これらの制限の一部を回避する方法の詳細は、『Sun ONE Application Server Application Design Guidelines for Storing Session State』を参照してください。

次の表で、左側の列は Java オブジェクトタイプを示し、右側の列はフェイルオーバーのサポートの有無を示しています。「フェイルオーバーのサポート」列が Yes の場合はフェイルオーバーがサポートされていて、No の場合はサポートされていません。

表 18-1 J2EE Web アプリケーションのセッション状態のフェイルオーバーをサポートするオブジェクトタイプ 

Java オブジェクトタイプ

フェイルオーバーのサポート

EntityBean ローカルホーム参照、ローカルオブジェクト参照

Yes

ステートフル SessionBean ローカルホーム参照

Yes

ステートフル SessionBean ローカルオブジェクト参照

No

ステートレス SessionBean ローカルホーム参照、ローカルオブジェクト参照

Yes

同じ場所にある EntityBean リモートホーム参照、リモート参照

Yes

同じ場所にあるステートフル SessionBean リモートホーム参照

Yes

同じ場所にあるステートフル SessionBean リモート参照

No

同じ場所にあるステートレス SessionBean リモートホーム参照、リモート参照

Yes

分散 EntityBean リモートホーム参照、リモート参照

No

分散ステートフル SessionBean リモートホーム参照、リモート参照

No

分散ステートレス SessionBean リモートホーム参照、リモート参照

No

JNDI コンテキスト

Yes。InitialContext および java:comp/env

ユーザートランザクション

Yes。ただし、障害が発生したインスタンスを再起動しないと、コンパイル済みのグローバルトランザクションが失われて、これらが正しくロールバックまたはコミットされない可能性がある

JDBC データソース

No

JMS ConnectionFactory、送信先

No

JavaMail セッション

No

接続ファクトリ

No

管理対象オブジェクト

No

Web サービス参照

No

直列化可能な Java タイプ

Yes

セッション持続性の基本的な設定手順

セッション持続性の設定を成功させるためには、後続の手順では、以前の手順に前提条件が含まれていることから、以降に示す手順を順番どおりに実施すべきであることをご確認ください。


次の手順の中には、clsetup コマンドおよび cladmin コマンドを使って実行する操作もあります。

clsetup コマンドでは、基本的なクラスタの標準的な設定を、自動的にセットアップできます。clsetup コマンドの使用方法の詳細は、『Sun ONE Application Server インストールガイド』を参照してください。cladmin コマンドは、クラスタ内でのアプリケーションサーバーインスタンスの設定と管理に対し、その手順を合理化します。cladmin コマンドの使用方法の詳細は、第 19 章「cladmin コマンドの使用」を参照してください。


  1. クラスタの HADB データベースを作成します。これについては、第 20 章「高可用性データベースの管理」で説明しています。
  2. 各クラスタの HADB データベース用として、セッションデータのセッションストアを作成します。これについては、「セッションストアの作成」で説明しています。
  3. 各クラスタ内のアプリケーションサーバーインスタンスのセッション状態が正しく保存されるように、JDBC 接続プールを設定し、HADB データベースの JDBC データソースを指定します。これについては、「JDBC 接続プールの設定」で説明しています。
  4. セッション持続性をサポートする必要があるアプリケーションサーバーインスタンスの可用性を有効化します。これについては、「アプリケーションサーバーインスタンスの可用性の有効化」で説明しています。
  5. 本稼働システムを使っているかどうか、およびフェイルオーバー機能が必要かどうかに応じて、アプリケーションサーバーインスタンスまたはアプリケーションの持続型を指定します。持続型では、基本的にセッションデータの保存方法と保存場所を定義します。これについては、「持続型の設定」で説明しています。
  6. ha 持続型を使う場合は、アプリケーションサーバーインスタンスまたはアプリケーションの持続性頻度 (セッションの保存を行う頻度) および持続範囲 (保存するセッションの量) を指定します。これについては、「持続性頻度の設定」および「持続範囲の設定」で説明しています。
  7. セッション持続性の設定を細かく調整したい場合は、必要に応じて追加プロパティを変更します。たとえば、期限切れのセッションを確認する間隔を秒単位で設定できます。これについては、「セッション持続性のその他のプロパティの設定」で説明しています。
  8. HADB データベース用として作成した JDBC リソースの JNDI 名を指定します。これについては、「HADB データベースに JDBC リソースの JNDI 名を指定」で説明しています。
  9. 1 つのセッションストアと複数のクラスタを使う場合は、アプリケーションサーバーインスタンスが属するクラスタの名前を指定します。これについては、「アプリケーションサーバーインスタンスのクラスタ名の指定」で説明しています。
  10. 高可用性が必要な各アプリケーションを分散可能にします。これについては、「アプリケーションを分散可能にする」で説明しています。


セッションストアの作成

この節では、セッションストアの作成方法について説明します。この節には次の項目があります。

セッションストアの作成について

HADB を持続性ストアとして使っている場合、セッションデータを保存するセッションストアを各クラスタに作成する必要があります。

セッションストアを作成する前に、HADB データベースを作成しておく必要があります。詳細は、第 20 章「高可用性データベースの管理」を参照してください。

クラスタのセッションストアを作成するには、asadmin create-session-store コマンドを使います。これは、クラスタ用の HADB データベースに対して実行される asadmin コマンドであり、特定のアプリケーションサーバーインスタンスに対して実行されるものではありません。このコマンドは、設定する各クラスタに対して 1 回だけ実行します。


  • クラスタ化された環境でフェイルオーバーをサポートする必要があるアプリケーションにアクセスする前に、create-session-store コマンドを実行する必要があります。
  • HADB が稼働中でない場合、asadmin create-session-store コマンドは正常に機能しません。


asadmin create-session-store コマンドは、アプリケーションサーバーインスタンスではなく、HADB データベースと対話します。


複数のクラスタのセッションストアの作成

複数のクラスタを作成する場合は、各クラスタに別々のセッションストアを作成します。複数のクラスタの使用方法の詳細は、「複数のクラスタの設定」を参照してください。

次の 2 つの方法のいずれかで、セッションストアを設定できます。

次の表に、それぞれの方法の長所と短所をまとめます。左側の列は方法、中央の列は各方法の長所、右側の列は各方法の短所を示しています。

表 18-2 複数のクラスタのセッションストアを作成する方法の比較 

方法

長所

短所

同じ HADB データベース内にすべてのクラスタのセッションストアを作成する

必要なリソースが少ない (ホスト HADB のアクティブなノードおよびスペアノードとして使うマシンなど)

  • メンテナンスのためにデータベースを停止すると、すべてのクラスタに影響を及ぼす
  • 同じ HADB データベースとの間で読み込みおよび書き込みを行うアプリケーションサーバーインスタンスが多くなる。この結果、パフォーマンスが低下することがある

別々の HADB データベース内に各クラスタのセッションストアを作成する

  • メンテナンスのために 1 つの HADB データベースを停止した場合、その HADB データベースに関連付けられているクラスタのみに影響が限定される。ほかのクラスタのサービスは中断しない
  • 同じ HADB データベースとの間で読み込みおよび書き込みを行うアプリケーションサーバーインスタンスの数が少なくなる。この結果、パフォーマンスが向上することがある

必要なリソースが多い (ホスト HADB のアクティブなノードおよびスペアノードとして使うマシンなど)


2 つ以上のクラスタに同じセッションストアを使うことはお勧めできません。ただし、そのようにする場合は、各クラスタがそれぞれ異なるクラスタ名で設定されていることを確認してください。これについては、「アプリケーションサーバーインスタンスのクラスタ名の指定」で説明しています。


asadmin create-session-store コマンドの使用によるセッションストアの作成

asadmin create-session-store コマンドの構文は、次のとおりです。

asadmin create-session-store [--storeurl persistent-store-url --storeuser username [--storepassword userpassword] [--dbsystempassword systempassword]] | [--optionsfile file-name]

このコマンドで、特定のデータベースユーザーが使うセッションストアを作成します。

create-session-store コマンドのオプションは、次のとおりです。

HADB コマンドの使用方法の詳細は、第 20 章「高可用性データベースの管理」を参照してください。

コマンド構文の詳細は、コマンド行インタフェースのヘルプを参照してください。

asadmin の使用方法の詳細は、付録 A 「コマンド行インタフェースの使用」を参照してください。

また、storeurlstoreuserstorepassword、および dbsystempassword を、それぞれに対応する環境変数とともにファイルに指定することもできます。このファイルの名前は、optionsfile オプションの値として使用できます。

環境変数は、次の表のとおりです。この表では、左側の列にオプション、右側の列に対応する環境変数を示しています。

表 18-3 create-session-store コマンドオプションの環境変数 

オプション

環境変数

storeurl

AS_ADMIN_STOREURL

storeuser

AS_ADMIN_STOREUSER

storepassword

AS_ADMIN_STOREPASSWORD

dbsystempassword

AS_ADMIN_DBSYSTEMPASSWORD

これらの環境変数は、asadmin set コマンドを使って設定できます。asadmin set コマンドの使用方法の詳細は、付録 A 「コマンド行インタフェースの使用」を参照してください。

一般に、ユーザー名およびパスワードの環境変数はほかのユーザーが比較的容易に見ることができるため、これらの環境変数の使用時には注意が必要です。安全性を高めるには、このような環境変数の値をファイルに保管して、このファイルへのアクセス権を適切に設定します。これらの環境変数の値を指定するファイルの使用が有効な場合があります。このようなファイルを使うと、ほかのユーザーは現在実行中のプロセスの詳細情報を得るためのコマンドを使って、これらの環境変数の値を見つけることができないためです。

このファイルは、マシン上のどこにでも置くことができます。このファイルは、1 行ごとに name=value のペアを記述する形式の標準テキストファイルにする必要があります。この後に示す例のように、このファイルの場所を指定することができます。ファイル内に指定された name=value ペアの例を次に示します。

AS_ADMIN_STOREURL = jdbc:sun:hadb:host1:4045,host2:4085

AS_ADMIN_STOREUSER = MyUser

AS_ADMIN_STOREPASSWORD = MyPassword

AS_ADMIN_DBSYSTEMPASSWORD = SuperUserPassword

例 : セッションストアの作成

次のコマンドでセッションストアを作成します。storeurljdbc:sun:hadb:myhost1:4045,myhost2:4085storeuserhaadminstorepasswordhapassworddbsystempassworddbhapassword です。

asadmin create-session-store --storeurl jdbc:sun:hadb:myhost1:4045,myhost2:4085 --storeuser haadmin --storepassword hapassword --dbsystempassword dbhapassword

例 : ファイルでのオプションの指定によるセッションストアの作成

次のコマンドで、/space/hadetails.txt ファイルに定義されたオプションに従ってセッションストアを作成します。

asadmin create-session-store --optionsfile /space/hadetails.txt


HADB データベースの JDBC パラメータの設定

各クラスタ内のアプリケーションサーバーインスタンスのセッション状態が正しく保存されるように、JDBC 接続プールを設定し、HADB データベースの JDBC データソースを指定する必要があります。

この操作の詳細は、「JDBC 接続プールの設定」を参照してください。


アプリケーションサーバーインスタンスの可用性の有効化

デフォルトでは、アプリケーションサーバーインスタンスの可用性は無効化されています。これは、Sun ONE Application Server のインストール時に HADB を設定していない場合でも、HADB で可用性を正常に機能させる必要があるためです。HADB を設定した後は、アプリケーションサーバーインスタンスの可用性を有効化できます。

アプリケーションサーバーインスタンスの可用性を有効化すると、そのアプリケーションサーバーインスタンス内にあるすべての仮想サーバーとアプリケーションのセッション持続性が有効化されます。

管理インタフェースを使ってアプリケーションサーバーインスタンスの可用性を有効化するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Availability Service (可用性サービス)」タブをクリックします。
  4. 「Availability Service Enabled (可用性サービスを有効)」ボックスにチェックマークをつけます。
  5. 「Save (保存)」ボタンをクリックします。

コマンド行インタフェースを使ってインスタンスの可用性を有効化するには、目的のインスタンスに対して asadmin set コマンドを使って availability-service 要素の availability-enabled 属性の値を true に設定します。

例 : アプリケーションサーバーインスタンスの可用性の有効化

次のコマンドで、アプリケーションサーバーインスタンス server1 のセッション持続性を有効化します。

asadmin set --user admin_user [--password admin_password] [--host host] [--port port] server1.availability-service.availabilityEnabled=true

シングルサインオンのセッション状態の可用性

1 つのアプリケーションサーバーインスタンス内では、ユーザーが 1 つのアプリケーションから認証された後、そのユーザーは同じインスタンス内で実行中のほかのアプリケーションから個別に再認証を受ける必要はありません。この仕組みをシングルサインオンと呼びます。シングルサインオンの詳細は、「Web アプリケーションの配備」を参照してください。

この機能はセッションがクラスタ内の別のインスタンスにフェイルオーバーされたときでも継続されるので、HADB にシングルサインオンの情報を保持する必要があります。HADB は、アプリケーションサーバーインスタンスの可用性を有効化したときに、同時に有効化されます。

シングルサインオングループに属するアプリケーションのセッション可用性

ユーザー名とパスワードの 1 つの組み合わせでアクセス可能な複数のアプリケーションは、シングルサインオングループを構成します。

シングルサインオングループに属するアプリケーションに対応するセッションでは、いずれか 1 つのセッションがタイムアウトになっても、ほかのセッションは無効化されず、利用可能な状態が維持されます。これは、1 つのセッションのタイムアウトがほかのセッションの可用性に影響を及ぼさないためです。

このような動作の結果、1 つのセッションがタイムアウトした場合、そのセッションを実行していた同じブラウザウィンドウから対応するアプリケーションへのアクセスを試みるときに、もう一度認証を行う必要はありません。ただし、タイムアウトになる前のセッションは失われるため、新しいセッションが作成されます。

例として、ほかの 2 つのアプリケーションとともにシングルサインオングループを構成するショッピングカートアプリケーションを取り上げます。ほかの 2 つのアプリケーションのセッションタイムアウト値が、ショッピングカートとアプリケーションのセッションタイムアウト値よりも大きい値に設定されているとします。ショッピングカートアプリケーションのセッションがタイムアウトになった場合、そのセッションを実行していた同じブラウザウィンドウからショッピングカートアプリケーションの実行を試みるときに、もう一度認証を行う必要はありません。ただし、タイムアウトになる前のショッピングカートは失われているので、新しいショッピングカートを作成する必要があります。ショッピングカートアプリケーションを実行しているセッションがタイムアウトになった場合でも、ほかの 2 つのアプリケーションは通常どおりに継続して実行されます。

上記の例で、ほかの 2 つのアプリケーションに対応するセッションがタイムアウトになったとします。そのセッションを実行していた同じブラウザウィンドウからアプリケーションに接続していても、もう一度認証を行う必要はありません。


この動作が適用されるのは、セッションがタイムアウトになった場合に限られます。シングルサインオンが有効化されている場合に、HttpSession.invalidate() を使って複数のセッションのいずれか 1 つを無効化すると、そのシングルサインオングループに属するすべてのアプリケーションに対応するセッションが無効化されます。そのシングルサインオングループに属するアプリケーションにアクセスする場合には、もう一度認証を行う必要があります。これにより、アプリケーションにアクセスするクライアントに対して新しいセッションが作成されます。



アプリケーションサーバーインスタンスの可用性の無効化

アプリケーションサーバーインスタンスの可用性を無効化すると、そのアプリケーションサーバーインスタンス内にあるすべての仮想サーバーとアプリケーションのセッション持続性が無効化されます。そのアプリケーションサーバーインスタンスに対応するシングルサインオンのセッション状態の持続性も無効化されます。


デフォルトでは、アプリケーションサーバーインスタンスのセッション持続性は無効化されています。


管理インタフェースを使ってアプリケーションサーバーインスタンスの高可用性を無効化するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、サーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「General (一般)」の下にある「Availability Service (可用性サービス)」タブをクリックします。
  4. 「Availability Service Enabled (可用性サービスを有効)」ボックスのチェックマークを外します。
  5. 「Save (保存)」ボタンをクリックします。

コマンド行インタフェースを使ってインスタンスの可用性を無効化するには、目的のインスタンスに対して asadmin set コマンドを使って availability-service 要素の availability-enabled 属性の値を false に設定します。

例 : アプリケーションサーバーインスタンスの可用性の無効化

次の例では、アプリケーションサーバーインスタンス server1 のセッション持続性が無効化されています。


セッション持続性のオプションの設定

Sun ONE Application Server のセッション持続性は、パフォーマンス、信頼性、および高可用性に対する個別のニーズが調和するように設定できます。たとえば、データが保存されるたびにセッション全体が保存されるように設定することも、セッションが変更された場合にのみセッションを保存するように設定することもできます。あるいは、セッションの属性のうち、変更された属性だけが保存されるように持続性を設定することもできます。さらに、各 Web 要求の終了時にセッションを保存するか (これにより、更新されたセッション状態の高可用性と信頼性が実現)、指定した時間間隔の経過後にセッションを保存するか (これにより、パフォーマンスが向上) を選択できます。

インスタンスレベルの設定を指定するには、管理インタフェースを使うか、コマンド行から configure-session-persistence コマンドを実行します。

個々のアプリケーションでそれぞれ固有のセッション持続性を設定する場合は、各アプリケーションに対応する sun-web.xml ファイルの該当する設定を変更することで、インスタンスレベルの設定をオーバーライドできます。


任意のアプリケーションのセッション持続性の設定は、1 つのクラスタ内のすべてのインスタンスに対して同一である必要があります。一定の設定でアプリケーションをクラスタ内のインスタンスの 1 つのセグメントに配備して、別の設定でアプリケーションを同じクラスタ内のインスタンスの別のセグメントに配備しないでください。


この節には次の項目があります。

configure-session-persistence コマンドについて

アプリケーションサーバーインスタンスのセッション持続性のオプションを指定するには、管理インタフェースのほかに、configure-session-persistence コマンドを使用できます。configure-session-persistence コマンドの構文は次のとおりです。

asadmin configure-session-persistence standard-options [ --type persistence-type ] [ --frequency frequency ] [ --scope scope ] [ --store jdbc-resource-jndi-name ] [ --property name=value[:name=value]* ] instance_name

コマンド構文の詳細は、コマンド行インタフェースのヘルプを参照してください。

asadmin コマンドの使用方法の詳細は、付録 A 「コマンド行インタフェースの使用」を参照してください。

cladmin コマンドの使用によるセッション持続性の設定

クラスタ内のすべてのインスタンスにセッション持続性を設定するには、cladmin コマンドを次のように使用します。

各変数の意味は次のとおりです。

clinstance.conf ファイルおよび clpassword.conf ファイルが Sun ONE Application Server の設定ディレクトリ (デフォルトでは etc/opt/SUNWappserver7) にある場合は、instancefile オプションおよび passwordfile オプションを省略できます。

cladmin コマンドの詳細は、第 19 章「cladmin コマンドの使用」を参照してください。

持続型の設定

持続型 の設定により、セッション状態の保存場所を定義します。次の 3 つのオプションから、いずれか 1 つを選択できます。

これらの持続型については、この後の各節で説明しています。各持続型の比較および各持続型がサポートする設定オプションについては、「持続型の各オプションの比較」で説明しています。

持続型を ha に設定

持続型を ha に設定すると、セッションデータを HADB データベースに保存できます。クラスタ内のアプリケーションサーバーインスタンス間におけるセッション状態のフェイルオーバーを有効化する場合は、この持続型を使う必要があります。この持続型だけが、HTTP セッションの持続性とセッション状態のフェイルオーバーが必要となる本稼働システムでサポートされます。

ha 持続型では、クラスタ内の各アプリケーションサーバーインスタンスのセッション状態が HADB データベースに保存されます。クラスタ内の各インスタンスのセッション状態は、同じクラスタ内のほかのインスタンスのすべてで利用できます。したがって、クラスタ内の 1 つのインスタンスが利用できなくなった場合、同じクラスタ内のほかのインスタンスでは利用できなくなったインスタンスを処理していたセッションに対する操作を続行できます。

クラスタ内のアプリケーションサーバーインスタンスが利用できなくなった場合、次のような対応が行われます。

クラスタの詳細は、第 17 章「クラスタの管理」を参照してください。

ha 持続型を使う場合は、持続性頻度 (セッションデータの保存を行う頻度を指定) および持続範囲 (保存するセッションの量を指定) も正しく設定する必要があります。持続性頻度の設定の詳細は、「持続性頻度の設定」を参照してください。持続範囲の設定の詳細は、「持続範囲の設定」を参照してください。

管理インタフェースを使ってアプリケーションサーバーインスタンスの持続型を ha に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「General (一般)」の下に表示されるドロップダウンリストから「ha」を選択します。

コマンド行インタフェースを使って持続型を ha に設定するには、configure-session-persistence コマンドの type オプションの値を ha に指定します。

例 : インスタンスの持続型を ha に設定

configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type ha --frequency web-method --scope modified-session --store jdbc_hastore instance1

アプリケーションの持続型を ha に設定するには、sun-web.xml ファイルで session-manager 要素の persistence-type 属性の値を ha に設定します。

例 : アプリケーションの持続型を ha に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続型を memory に設定

アプリケーションサーバーインスタンスのセッション持続性が無効化されている場合、memory がデフォルトの持続型になります。

持続型が memory の場合、クラスタ化された環境でセッション持続性が得られません。

ただし、インスタンスの定期的な停止の前にすべてのセッション状態がファイルに書き込まれるように、1 つのアプリケーションサーバーインスタンスの持続型を memory に設定することがあります。そのためには、停止の際にセッション状態が保存されるディレクトリを指定する必要があります。このディレクトリを指定するには、server.xml ファイルで session-managersessionFilename プロパティの値としてディレクトリのパスを指定します。sessionFilename の値の設定の詳細は、「セッション持続性のその他のプロパティの設定」を参照してください。

アプリケーションサーバーインスタンスが突然、利用できなくなった場合、ファイルに保存された対応するセッション状態は失われます。したがって、アプリケーションサーバーインスタンスで予定外の停止が生じた場合、そのインスタンスではセッション状態を復元できません。


memory 持続型には、開発システムのみで使用するための限定的なフェイルオーバー機能が備えられています。memory 持続型は、HTTP セッションの持続性とフェイルオーバー機能が必要となる本稼働システムでの使用を意図したものではなく、サポートもされていません。

ただし、HTTP セッションの持続性とフェイルオーバー機能を必要としない本稼働環境では、memory 持続型が最適な選択肢になります。



memory 持続型の持続性頻度と持続範囲の設定は、ユーザーが選択できません。


管理インタフェースを使ってアプリケーションサーバーインスタンスの持続型を memory に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「General (一般)」の下に表示されるドロップダウンリストから「memory」を選択します。

コマンド行インタフェースを使ってアプリケーションサーバーインスタンスの持続型を memory に設定するには、configure-session-persistence コマンドの type オプションの値を memory に指定します。

例 : インスタンスの持続型を memory に設定

アプリケーションの持続型を memory に設定するには、該当するアプリケーションの sun-web.xml ファイルで session-manager 要素の persistence-type 属性の値を memory に設定します。

例 : アプリケーションの持続型を memory に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続型を file に設定

持続型が file の場合、クラスタ化された環境でセッション持続性が得られません。

アプリケーションサーバーインスタンスに file 持続型を使うと、セッション状態がファイルに保存されます。Sun ONE Application Server は、各セッションの情報をそれぞれ別個のファイルに保存します。これらのファイルのパスを指定する必要はありません。これらのファイルが書き込まれるパスは変更できます。詳細は、表 18-8を参照してください。

インスタンスが利用できなくなって、これを再起動した場合、インスタンスは最後にファイルに書き込まれたセッション状態を復元できます。

保存を行うバックグラウンドスレッドが実行されるときに、セッション状態が定期的にファイルに書き込まれます。つまり、インスタンスが適切に停止したとき、または予定外の停止が生じたときに、セッションデータの一部が失われる可能性があります。

server.xml ファイル (インスタンスレベルの設定) または sun-web.xml ファイル (アプリケーションレベルの設定) 内にある manager-properties 要素の reapIntervalSeconds プロパティを設定することで、バックグラウンドスレッドを実行する頻度を設定できます。詳細は、「セッション持続性のその他のプロパティの設定」を参照してください。


file 持続型には、開発システムのみで使用するための限定的なフェイルオーバー機能が備えられています。file 持続型は、HTTP セッションの持続性とフェイルオーバー機能が必要となる本稼働システムでの使用を意図したものではなく、サポートもされていません。


開発環境で file 持続型を使う可能性があるのは、開発時に HADB を実行せずにフェイルオーバーをシミュレートする場合などです。


file 持続型の持続性頻度と持続範囲の設定は、ユーザーが選択できません。


管理インタフェースを使ってアプリケーションサーバーインスタンスの持続型を file に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「General (一般)」の下に表示されるドロップダウンリストから「file」を選択します。

コマンド行インタフェースを使って持続型を file に設定するには、configure-session-persistence コマンドの type オプションの値を file に指定します。

例 : インスタンスの持続型を file に設定

asadmin configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type file instance1

アプリケーションの持続型を file に設定するには、sun-web.xml ファイルで session-manager 要素の persistence-type 属性の値を file に設定します。

例 : アプリケーションの持続型を file に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続型の各オプションの比較

次の表では、持続型の各オプションを比較するとともに、持続型の各オプションでサポートされている組み合わせを示しています。左端の列には持続型の各オプション、左から 2 番目の列には本稼働システムにおけるフェイルオーバーのサポートの有無、左から 3 番目の列には各オプションの一般的な用途、左から 4 番目の列には各オプションがサポートしている持続性頻度オプション、右端の列には各オプションがサポートしている持続範囲オプションが示されています。

表 18-4 持続型の各オプションの比較 

持続型のオプション

本稼働システムでのフェイルオーバーのサポート

一般的な用途

サポートされている持続性頻度

サポートされている持続範囲

memory

No

  • 開発システムでの使用
  • フェイルオーバー機能を必要としない本稼働システムでの使用

該当なし

該当なし

file

No

開発システムでの使用 (開発時における HADB の実行を伴わないフェイルオーバーのシミュレートなど)

time-based

該当なし

ha

Yes

フェイルオーバー機能を必要とする本稼働システムでの使用

  • time-based
  • web-method
  • session
  • modified-session
  • modified-attribute

持続性頻度の設定

セッション状態の保存に HADB データベースを使う場合、高可用性およびパフォーマンスに関する各ユーザーの要件に応じて、HADB データベースへのセッション状態の保存を実行する頻度を設定できます。次の 2 つのオプションのいずれか 1 つを選択できます。

持続性頻度を web-method に設定

持続性頻度を web-method に設定すると、セッションは各 Web 要求の終了時に保存されます。

このモードは、更新されたセッション状態に対する高可用性が必要とされる場合に役立ちます。この持続性頻度に設定することで、インスタンスに障害が発生した後に元のセッション状態を利用できることがもっとも確実に保証されます。

管理インタフェースを使ってアプリケーションサーバーインスタンスの持続性頻度を web-method に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「Properties (プロパティ)」の下にある「Properties (プロパティ)」ボタンをクリックします。
  5. 「Name (名前)」フィールドに次のように入力します。
  6. persistenceFrequency

  7. 「Value (値)」フィールドに次のように入力します。
  8. web-method

コマンド行インタフェースを使って持続性頻度を web-method に設定するには、configure-session-persistence コマンドの frequency オプションの値を web-method に指定します。

例 : インスタンスの持続性頻度を web-method に設定

configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type ha --frequency web-method --scope modified-session --store jdbc_hastore instance1

アプリケーションの持続性頻度を web-method に設定するには、sun-web.xml ファイルで manager-properties 要素の persistenceFrequency プロパティの値を web-method に設定します。

例 : アプリケーションの持続性頻度を web-method に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続性頻度を time-based に設定

持続性頻度を time-based に設定すると、server.xml ファイル (インスタンスレベルの設定) または sun-web.xml ファイル (アプリケーションレベルの設定) 内にある manager-properties 要素の reapIntervalSeconds プロパティに定義した間隔でセッション状態の保存が実行されます。

reapIntervalSeconds の値の設定の詳細は、「セッション持続性のその他のプロパティの設定」を参照してください。

持続性頻度が time-based の場合、セッション状態に関する比較的高い可用性が保証されます (ただし、持続型が web-method の場合の可用性よりは低い)。セッションは、各 Web 要求の終了後ではなく、設定可能な時間間隔の経過後に保存されるので、応答時間が短縮されます。

time-based 持続性頻度を使うと、インスタンスに障害が発生した場合に、最後にセッションを保存した後でセッション状態に対して加えられた変更が失われるリスクが少しあります。

管理インタフェースを使ってアプリケーションサーバーインスタンスの持続性頻度を time-based に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインでアプリケーションサーバーインスタンスを選択し、「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「Properties (プロパティ)」の下にある「Properties (プロパティ)」ボタンをクリックします。
  5. 「Name (名前)」フィールドに次のように入力します。
  6. persistenceFrequency

  7. 「Value (値)」フィールドに次のように入力します。
  8. time-based

コマンド行インタフェースを使って持続性頻度を time-based に設定するには、configure-session-persistence コマンドの frequency オプションの値を time-based に指定します。

例 : インスタンスの持続性頻度を time-based に設定

configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type ha --frequency time-based --scope modified-session --store jdbc_hastore instance1

アプリケーションの持続性頻度を time-based に設定するには、sun-web.xml ファイルで manager-properties 要素の persistenceFrequency プロパティの値を time-based に設定します。

例 : アプリケーションの持続性頻度を time-based に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続性頻度の各オプションの比較

次の表に、持続性頻度の各オプションの長所と短所をまとめます。左側の列には持続性頻度のオプション、中央の列にはそのオプションの長所、右側の列にはそのオプションで予測される短所を示しています。

表 18-5 持続性頻度の各オプションの比較 

持続性頻度のオプション

長所

短所

web-method

最新のセッション状態を利用できることが保証される

応答時間が長くなり、スループットが低下する可能性がある

time-based

応答時間が短縮され、スループットが向上する可能性がある

web-method 持続性頻度の場合と比べ、アプリケーションサーバーインスタンスに障害が発生した後に、直前に更新されたセッション状態を利用できる確実性が低い

持続範囲の設定

HADB を持続性ストアとして使っている場合、保存されるセッション状態の量を示す持続範囲を設定する必要があります。次の 3 つのオプションから、いずれか 1 つを選択する必要があります。

これらのオプションについては、次の各節で説明します。

持続範囲を modified-session に設定

modified-session モードでは、セッションは変更された場合にのみ保存されます。したがって、持続性頻度が web-method の場合、セッションがその最後の保存後に変更されているときにのみ、各 Web 要求の終了時、つまりクライアントに応答を送信する直前にセッション全体が保存されます。また、持続性頻度が time-based の場合、セッションがその最後の保存後に変更されているときにのみ、指定した時間ベースの頻度が経過するたびにセッション全体が保存されます。

Web メソッド (通常は doGet または doPost) の実行中にセッションで setAttribute メソッド (属性の変更) または removeAttribute メソッド (属性の削除) が呼び出された場合にのみ、セッションが変更されたとみなされます。

管理インタフェースを使ってアプリケーションサーバーインスタンスの持続範囲を modified-session に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「Session Store Properties (セッションストアのプロパティ)」の下にある「Properties (プロパティ)」ボタンをクリックします。
  5. 「Name (名前)」フィールドに次のように入力します。
  6. persistenceScope

  7. 「Value (値)」フィールドに次のように入力します。
  8. modified-session

コマンド行インタフェースを使って持続範囲を modified-session に設定するには、configure-session-persistence コマンドの scope オプションの値を modified-session に指定します。

例 : インスタンスの持続範囲を modified-session に設定

asadmin configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type ha --frequency web-method --scope modified-session --store jdbc_hastore instance1

アプリケーションの持続範囲モードを modified-session に設定するには、sun-web.xml ファイルで store-properties 要素の persistenceScope プロパティの値を modified-session に設定します。

例 : アプリケーションの持続範囲を modified-session に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続範囲を session に設定

持続範囲が session の場合、常にセッション全体が保存されます。したがって、持続性頻度が web-method の場合、各 Web 要求の終了時、つまりクライアントに応答を送信する直前にセッション全体が保存されます。また、持続性頻度が time-based の場合、指定した時間ベースの頻度が経過するたびにセッション全体が保存されます。

属性が変更されるたびに setAttribute または removeAttribute を呼び出さないアプリケーションがある場合、使用可能な唯一の持続範囲オプションは session であり、それ以外の持続範囲オプションは使用できません。

管理インタフェースを使ってアプリケーションサーバーインスタンスの持続範囲を session に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「Session Store Properties (セッションストアのプロパティ)」の下にある「Properties (プロパティ)」ボタンをクリックします。
  5. 「Name (名前)」フィールドに次のように入力します。
  6. persistenceScope

  7. 「Value (値)」フィールドに次のように入力します。
  8. session

コマンド行インタフェースを使って持続範囲を session に設定するには、configure-session-persistence コマンドの scope オプションの値を session に指定します。

例 : 持続範囲を session に設定

configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type ha --frequency web-method --scope session --store jdbc_hastore instance1

アプリケーションの持続範囲モードを session に設定するには、sun-web.xml ファイルで store-properties 要素の persistenceScope プロパティの値を session に設定します。

例 : アプリケーションの持続範囲を session に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続範囲を modified-attribute に設定

持続範囲が modified-attribute の場合、セッションの最後の保存後に変更 (挿入、更新、または削除) された属性のみが保存されます。何らかの要求に対応して変更されるセッション状態は全体の僅かな部分であるため、このモードを使うと、アプリケーションのスループットと応答時間が大幅に改善されることがあります。


modified-attribute 持続範囲は、本稼働環境に十分に対応できる機能とは認められていません。この持続範囲を使う場合は、予測される最大の負荷状態で Sun ONE Application Server のパフォーマンスと安定性を評価する必要があります。その結果、例外がログに記録される場合、または許容範囲内の応答時間を得られない場合には、この持続範囲を本稼働環境で使わないでください。


modified-attribute 持続範囲を使う場合、アプリケーションが次のガイドラインに準拠している必要があります。

管理インタフェースを使ってアプリケーションサーバーインスタンスの持続範囲を modified-attribute に設定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Session Manager (セッションマネージャ)」タブをクリックします。
  4. 「Session Store Properties (セッションストアのプロパティ)」の下にある「Properties (プロパティ)」ボタンをクリックします。
  5. 「Name (名前)」フィールドに次のように入力します。
  6. persistenceScope

  7. 「Value (値)」フィールドに次のように入力します。
  8. modified-attribute

コマンド行インタフェースを使って持続範囲を modified-attribute に設定するには、configure-session-persistence コマンドの scope オプションの値を modified-attribute に指定します。

例 : インスタンスの持続範囲を modified-attribute に設定

configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type ha --frequency web-method --scope modified-attribute --store jdbc_hastore instance1

アプリケーションの持続範囲モードを modified-attribute に設定するには、sun-web.xml ファイルで store-properties 要素の persistenceScope プロパティの値を modified-attribute に設定します。

例 : アプリケーションの持続範囲を modified-attribute に設定

例として、サンプル sun-web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

持続範囲の各オプションの比較

次の表に、持続範囲の各オプションの長所と短所をまとめます。左側の列には持続範囲のオプション、中央の列にはそのオプションの長所、右側の列にはそのオプションで予測される短所を示しています。

表 18-6 持続範囲の各オプションの比較 

持続範囲のオプション

長所

短所

modified-session

セッション状態を変更しない要求への応答時間が短縮される

アプリケーションは、Web メソッド (通常は doGet または doPost) の実行中にセッションで setAttribute メソッド (属性の変更) または removeAttribute メソッド (属性の削除) を呼び出す必要がある

session

アプリケーションに対する制約がない

modified-session オプションおよび modified-atttribute オプションを選択した場合と比較して、スループットおよび応答時間が劣る可能性がある

modified-attribute

セッション状態の変更される部分の割合が低い要求に対するスループットと応答時間が向上する

1. セッション状態の、1 つの要求によって変更される部分の割合が約 60% に達すると、スループットと応答時間が低下する。このような場合、属性を別々のレコードに分割することでオーバーヘッドが生じるため、持続範囲が session または modified-session のときよりもパフォーマンスが低下する

2. このモードの使用時に要求される次の制約条件を満たすように、アプリケーションを設定する必要がある

 

  • ユーザーがセッション状態を変更するたびに、setAttribute または removeAttribute が呼び出される
  • 属性間に相互参照を設定しない
  • セッション状態は複数の属性、つまり少なくとも 1 つずつの読み取り専用属性と変更可能な属性に分散させる

セッション持続性のその他のプロパティの設定

セッション持続性の動作を細かく調整するには、server.xml ファイル (インスタンスレベルの設定) または sun-web.xml ファイル (アプリケーションレベルの設定) で、manager-properties 要素のプロパティおよび session-manager 要素の store-properties サブ要素のプロパティを変更します。これらのプロパティは、asadmin set コマンドを使って変更できます。次の表 18-7 および表 18-8 では、これらのプロパティについてまとめています。それぞれの表では、左の列にプロパティの名前、中央の列に各プロパティのデフォルト値、右の列に各プロパティの説明を示します。

表 18-7 セッション持続性に設定可能な manager-properties プロパティ 

プロパティ名

デフォルト値

説明

reapIntervalSeconds

60

期限切れのセッションをチェックする周期を秒単位で指定する。これは、セッションの非活性化が行われる頻度にもなる。持続型が file または ha の場合には、maxSessions を超えたときにセッションが非活性化される。持続性頻度が time-based の場合、アクティブなセッションはこの間隔で保存される

maxSessions

-1

キャッシュ内に保持できるセッションの最大数を指定する。制限しない場合は -1。この制限値に達したときの対応は次のとおり

  • 持続型が memory の場合、新しいセッションを作成しようとすると IllegalStateException がスローされる
  • 持続型が file または ha の場合には、持続性ストアに対してセッションが非活性化される

sessionFilename

なし。再起動すると、その前の状態は破棄される

アプリケーションの再起動の間にセッション状態を保持するディレクトリの絶対パスまたは相対パスを指定する (状態の保持が可能な場合)。相対パスは、このアプリケーションの一時ディレクトリを基準とした場所を示す

持続型が memory の場合にのみ設定可能

表 18-8 セッション持続性に設定可能な store-properties プロパティ 

プロパティ名

デフォルト値

説明

directory

instance_dir/generated/jsp/j2ee-apps/appname/appname_war

個々のセッションファイルが書き込まれるディレクトリの絶対パスまたは相対パスを指定する。相対パスは、このアプリケーションの一時作業ディレクトリを基準とした場所を示す

持続型が file の場合にのみ設定可能

例 : maxSessions プロパティと reapIntervalSeconds プロパティを設定

次の例では、maxSessions の値は 1000 に設定されていて、reapIntervalSeconds の値は 60 に設定されています。

configure-session-persistence --user admin --password MyPassword --host localhost --port 4848 --type ha --property maxSessions=1000:reapIntervalSeconds=60 instance1


HADB データベースに JDBC リソースの JNDI 名を指定

セッション持続性の設定時に、HADB データベース用として作成した JDBC リソースの JNDI 名を指定する必要があります。HADB を持続性ストアとして使う場合、この情報は HADB データベースへの接続に使われます。


configure-session-persistence コマンドを使ってセッション持続性を設定した場合は、すでに --store オプションに JNDI 名を指定しているので、再び指定する必要はありません。


HADB データベース用として作成した JDBC リソースの JNDI 名を管理インタフェースで指定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Availability Service (可用性サービス)」タブをクリックします。
  4. 「Persistence Store Properties (持続性ストアのプロパティ)」の下にある「Properties (プロパティ)」ボタンをクリックします。
  5. 「Name (名前)」フィールドに次のように入力します。
  6. store-pool-jndi-name

  7. 「Value (値)」フィールドに、HADB データベースの JDBC パラメータを設定したときに HADB データベース用として作成した JDBC リソースの JNDI 名を入力します。詳細は、第 20 章「高可用性データベースの管理」を参照してください。

コマンド行インタフェースを使って JDBC リソースの JNDI 名を指定するには、次の例のように、該当するインスタンスの store-pool-jndi-name プロパティの値を JDBC URL の JNDI 名の値に設定します。

例 : HADB に JDBC リソースの JNDI 名を指定

set instance1.availability-service.persistence-store.property.store-pool-jndi-name = jdbc_ha

この例で、instance1 はアプリケーションサーバーインスタンスの名前、jdbc_ha は HADB データベースの JDBC パラメータを設定するときに作成した JDBC URL の JNDI 名の値です。JDBC パラメータの設定の詳細は、「HADB の設定」を参照してください。


アプリケーションサーバーインスタンスのクラスタ名の指定

2 つ以上のクラスタに同じセッションストアを使うことはお勧めできません。ただし、そのようにする場合は、各クラスタがそれぞれ異なるクラスタ名で設定されていることを確認してください。

複数のクラスタ内の各アプリケーションサーバーインスタンスに、それぞれ異なるクラスタ名で各クラスタを設定するには、各インスタンスが属するクラスタの名前を指定します。


各クラスタに別々の HADB データベースを使っている場合、または各クラスタに対応する同一の HADB データベース内で別々のセッションストアを使っている場合は、次の手順を実行する必要はありません。


たとえば、2 つのクラスタに同じセッションストアを使っている場合、一方のクラスタ内のインスタンスに cluster1 という名前をつけて、別のクラスタ内のインスタンスに cluster2 という名前をつけることができます。


クラスタの名前は、loadbalancer.xml ファイルに指定したクラスタの名前と同一にする必要はありません。


管理インタフェースを使ってアプリケーションサーバーインスタンスのクラスタの名前を指定するには、次の手順に従います。

  1. 管理インタフェースの左側のペインで、アプリケーションサーバーインスタンスの下にある「Containers (コンテナ)」コンポーネントを開きます。
  2. 「Web Container (Web コンテナ)」をクリックします。
  3. 「Availability Service (可用性サービス)」タブをクリックします。
  4. 「Persistence Store Properties (持続性ストアのプロパティ)」の下にある「Properties (プロパティ)」ボタンをクリックします。
  5. 「Name (名前)」フィールドに次のように入力します。
  6. cluster-id

  7. 「Value (値)」フィールドに、アプリケーションサーバーインスタンスのクラスタの名前を入力します。
  8. クラスタの詳細は、第 17 章「クラスタの管理」を参照してください。

コマンド行インタフェースを使ってクラスタの名前を指定するには、該当するインスタンスの cluster-id プロパティの値を該当するクラスタの名前に設定します。

例 : インスタンスのクラスタ名の指定

次の例では、アプリケーションサーバーインスタンス instance1 に対して cluster2 というクラスタ名が指定されています。

set instance1.availability-service.persistence-store.property.cluster-id = cluster2


アプリケーションを分散可能にする

セッション持続性をアプリケーションに適用するには、そのアプリケーションが分散可能である必要があります。

アプリケーションを分散可能にするには、対応する web.xml ファイルで web-app 要素に distributable サブ要素を指定します。

例 : アプリケーションを分散可能にする

例として、サンプル web.xml ファイルの一部を次に示します。関連する部分は、強調表示されています。

アプリケーションを分散可能にするには、Java サーブレット仕様バージョン 7.7.2 で分散可能なアプリケーションについて規定している動作と規則にアプリケーションが準拠している必要があります。詳細は、『Java Servlet Specification, v2.3』を参照してください。

アプリケーションの web.xml ファイルの web-app 要素に distributable サブ要素が指定されていない場合、そのアプリケーションは非分散型アプリケーションと呼ばれます。非分散型アプリケーションでは、高可用性に関する設定はできません。


セッション持続性のデフォルト値

高可用性が無効化されている場合、持続型は memory に設定されます。高可用性が有効化されている場合、持続型は ha に設定されます。インスタンスレベルまたはアプリケーションレベルでその他の項目が設定されていない場合、セッション持続性のデフォルトの設定は次のとおりです。

これらのデフォルト設定は、アプリケーションサーバーインスタンスまたはアプリケーションの持続性に関するその他の設定にオーバーライドされます。


セッションストアのクリア

すべてのアプリケーションサーバーインスタンスのセッションを HADB データベースからクリアする必要性が生じることがあります。たとえば、アプリケーションサーバーインスタンスが突然、停止して、不要になったデータが入っているセッションが HADB データベース内に数多く残っている場合などに、セッションをクリアする必要性が生じます。HADB データベースからすべてのセッションをクリアするには、asadmin clear-session-store コマンドを使います。


警告

clear-session-store コマンドによって、非活性化されたセッションを含むすべてのセッションが HADB データベースから削除されます。


この節には次の項目があります。

セッションストアをクリアする前の注意点

クラスタ内のアプリケーションサーバーインスタンスがセッションデータを HADB データベースに保持している場合には、asadmin clear-session-store コマンドを使わないでください。

したがって、asadmin clear-session-store コマンドを使う前に、「アプリケーションサーバーインスタンスの可用性の無効化」の説明に従って、クラスタ内のすべてのインスタンスについて高可用性を無効化する必要があります。

asadmin clear-session-store コマンドの使用

asadmin clear-session-store コマンドの構文は、次のとおりです。

asadmin clear-session-store [--storeurl persistent-store-url] [--storeuser username] [--storepassword userpassword] [--optionsfile file_name]

storeurlstoreuser、および storepassword の値は、「セッションストアの作成」に記載されている値と同じです。

HADB コマンドの使用方法の詳細は、第 20 章「高可用性データベースの管理」を参照してください。

コマンド構文の詳細は、コマンド行インタフェースのヘルプを参照してください。

asadmin の使用方法の詳細は、付録 A 「コマンド行インタフェースの使用」を参照してください。

また、storeurlstoreuser、および storepassword を、それぞれに対応する環境変数とともにファイルに指定することもできます。このファイルの名前は、optionsfile オプションの値として使用できます。環境変数は、次の表のとおりです。この表では、左側の列にオプション、右側の列に対応する環境変数を示しています。

表 18-9 create-session-store コマンドオプションの環境変数

オプション

環境変数

--storeurl

AS_ADMIN_STOREURL

--storeuser

AS_ADMIN_STOREUSER

--storepassword

AS_ADMIN_STOREPASSWORD

このファイルは、1 行ごとに name=value のペアを記述する形式の標準テキストファイルにする必要があります。この後に示す例のように、このファイルの場所を指定することができます。ファイル内に指定された name=value ペアの例を次に示します。

AS_ADMIN_STOREURL = jdbc:sun:hadb:host1:4045,host2:4085

AS_ADMIN_STOREUSER = MyUser

AS_ADMIN_STOREPASSWORD = MyPassword

例 : HADB データベースからすべてのセッションを削除

次の例で、storeurljdbc:sun:hadb:myhost1:7676,myhost2:6767storeuserhaadminstorepasswordhapassworddbstorepassworddbhapassword です。

asadmin clear-session-store --storeurl jdbc:sun:hadb:myhost1:4045,myhost2:4085 --storeuser haadmin --storepassword hapassword --dbstorepassword dbhapassword

例 : 必要なオプションをファイルに指定することによりすべてのセッションを HADB データベースから削除

次のコマンドにより、/space/hadetails.txt ファイルに定義されたオプションに従って、持続性ストア内のすべてのセッションが削除されます。

asadmin clear-session-store --optionsfile /space/hadbdetails.txt

セッションストアをクリアした後の注意点

セッションが復元された後で、「アプリケーションサーバーインスタンスの可用性の有効化」の説明に従って、クラスタ内のすべてのインスタンスについて可用性を有効化します。



前へ      目次      索引      次へ     


Copyright 2003 Sun Microsystems, Inc. All rights reserved.