この章では、高可用性セッション持続性の有効化と設定を行う方法について説明します。
Enterprise Server は、HTTP セッションデータおよびステートフルセッション Bean (SFSB) セッションデータのフェイルオーバーを通して、高可用性セッション持続性を提供します。フェイルオーバーとは、サーバーインスタンスまたはハードウェアに障害が発生しても、別のサーバーインスタンスが分散セッションを引き継ぐことを意味します。
分散セッションは、次の条件が満たされた場合に、複数の Sun GlassFish Enterprise Server インスタンスで動作できます。
各サーバーインスタンスが、同じセッション状態データにアクセスする。Enterprise Server では、HTTP セッションおよびステートフルセッション Bean のデータを格納するための、次のタイプの高可用性ストレージが用意されています。
クラスタ内の別のサーバーにおけるインメモリーレプリケーション。インメモリーレプリケーションは、クラスタプロファイルではデフォルトで有効です。
インメモリーレプリケーションを使用するには、「グループ管理サービス (GMS)」 を有効にする必要があります。GMS の詳細については、「グループ管理サービス」を参照してください。
クラスタ内の複数のサーバーインスタンスが異なるマシンに配置されている場合は、次の前提条件が満たされていることを確認してください。
GMS およびインメモリーレプリケーションが正常に機能することを保証するには、すべてのマシンが同じサブネット上に存在している必要があります。
インメモリーレプリケーションが正常に機能することを保証するには、クラスタ内のすべてのマシンのシステムクロックができるだけ厳密に同期している必要があります。
高可用性データベース (HADB)。このデータベースを使用可能にする方法については、configure-ha-cluster(1) を参照してください。
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
各サーバーインスタンスに、同じ分散可能な Web アプリケーションが配備されていること。web.xml 配備記述子ファイルの web-app 要素に、distributable 要素が含まれている必要があります。
Web アプリケーションが、高可用性セッション持続性を使用していること。分散可能でない Web アプリケーションが、高可用性セッション持続性を使用するように設定されていると、サーバーはログファイルにエラーを書き込みます。
Web アプリケーションは、--availabilityenabled オプションが true に設定された deploy または deploydir コマンドを使用して配備されている必要があります。これらのコマンドの詳細については、deploy(1)および deploydir(1)を参照してください。
セッションが処理を継続すると、ファイルを開くための参照やネットワーク接続はすべて失われます。アプリケーションは、この制限を念頭においてコード化する必要があります。
フェイルオーバーをサポートする分散セッションには、特定のオブジェクトしかバインドできません。サーブレット 2.4 仕様とは異なり、Sun GlassFish Enterprise Server は、フェイルオーバーがサポートされていないオブジェクト型が分散セッションにバインドされると IllegalArgumentException をスローしません。
フェイルオーバーをサポートする分散セッションには、次のオブジェクトをバインドできます。
すべての EJB コンポーネントに対するローカルホームおよびオブジェクト参照。
共存ステートレスセッション Bean、ステートフルセッション Bean、またはエンティティー Bean の参照。
分散ステートレスセッション Bean、ステートフルセッション Bean、またはエンティティー Bean の参照。
InitialContext および java:comp/env に対する JNDI コンテキスト。
UserTransaction オブジェクト。ただし、失敗したインスタンスが再起動されない場合は、準備されたグローバルトランザクションはすべて失われ、正しくロールバックまたはコミットされない可能性もあります。
直列化可能な Java 型。
フェイルオーバーをサポートする分散セッションには、次のオブジェクト型をバインドできません。
JDBC データソース
Java Message Service (JMS) の ConnectionFactory および Destination オブジェクト
JavaMail™ セッション
接続ファクトリ
管理対象オブジェクト
Web サービス参照
一般に、これらのオブジェクトに対して、フェイルオーバーは機能しません。ただし、オブジェクトが直列化可能な場合など、フェイルオーバーが機能する場合もあります。
この節では、高可用性セッション持続性を設定する方法について、次のトピックとともに説明します。
高可用性セッション持続性は、動的配備、動的再読み込み、および自動配備とは互換性がありません。これらの機能は、本稼働環境ではなく開発環境を対象としているため、HA セッション持続性を有効にする前に無効にする必要があります。これらの機能を無効にする方法については、『Sun GlassFish Enterprise Server 2.1 Application Deployment Guide』を参照してください。
Enterprise Server クラスタを作成します。
詳細については、「クラスタを作成する」を参照してください。
セッション状態データの格納に HADB を使用している場合は、クラスタの HADB データベースを作成します。
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
セッション状態データの格納にクラスタ内の別のサーバーへのインメモリーレプリケーションを使用している場合は、この手順を省略します。
HADB データベースの作成の詳細については、configure-ha-cluster(1)を参照してください。
クラスタの 負荷分散を設定します。
詳細については、「HTTP 負荷分散の設定」を参照してください。
目的のアプリケーションサーバーインスタンス、および Web または EJB コンテナの可用性を有効にします。
次に、セッション持続性の設定を行います。次の方法のうち 1 つを選択します。
管理コンソールを使用します。「サーバーインスタンスの可用性の有効化」を参照してください。
asadmin コマンド行ユーティリティーを使用します。set(1)およびconfigure-ha-persistence(1)を参照してください。
クラスタ内の各サーバーインスタンスを再起動します。
インスタンスが現在要求を処理中の場合、インスタンスをいったん休止してから再起動して、インスタンスが処理中の要求を完了するまでの時間が十分に取れるようにします。詳細については、「サーバーインスタンスまたはクラスタの無効化 (休止)」を参照してください。
可用性を必要とする特定の SFSB の可用性を有効にします。
セッション状態にチェックポイントを設定する必要のあるメソッドを選択します。「個々の Bean の可用性の設定」を参照してください。
配備中に、個々のアプリケーション、Web モジュール、または EJB モジュールの可用性を有効にします。
「個々のアプリケーションまたは EJB モジュールの可用性の設定」を参照してください。
管理コンソールで、可用性を有効にするチェックボックスをチェックするか、または--availabilityenabled オプションを true にして asadmin deploy コマンドを実行します。
セッション可用性は、次の 5 つの異なるスコープ (高いレベルから低いレベルへの順) で有効にすることができます。
サーバーインスタンス。デフォルトでは有効になっています。サーバーインスタンスのセッション可用性を有効にすると、サーバーインスタンスで実行されているすべてのアプリケーションが高可用性セッション持続性を持つことができるようになります。手順については、次の節の 「サーバーインスタンスの可用性の有効化」を参照してください。
コンテナ (Web または EJB)。デフォルトでは有効になっています。コンテナレベルでの可用性の有効化については、次の節を参照してください。
アプリケーション。デフォルトでは無効になっています。
スタンドアロンの Web または EJB モジュール。デフォルトでは無効になっています。
個々の SFSB。デフォルトでは無効になっています。
可用性を指定されたスコープで有効にするには、それより上のすべてのレベルでも有効にする必要があります。たとえば、アプリケーションレベルで可用性を有効にするには、サーバーインスタンスレベルおよびコンテナレベルでも有効にする必要があります。
ある特定のレベルの可用性は、デフォルトでは 1 つ上のレベルに設定されます。たとえば、可用性がコンテナレベルで有効になっている場合、デフォルトではアプリケーションレベルで有効になります。
可用性がサーバーインスタンスレベルで無効になっている場合、ほかのすべてのレベルで有効にしても反映されません。可用性がサーバーインスタンスレベルで有効になっている場合、明示的に無効化しないかぎり、すべてのレベルで有効になります。
サーバーインスタンスの可用性を有効にするには、asadmin set コマンドを使用して、設定の availability-service.availability-enabled プロパティーを true に設定します。
たとえば、設定の名前が config1 の場合は、次のように指定します。
asadmin set --user admin --passwordfile password.txt --host localhost --port 4849 config1.availability-service.availability-enabled="true" |
ツリーコンポーネントで、「設定」ノードを開きます。
編集する設定のノードを展開します。
「可用性サービス」ノードを選択します。
「可用性サービス」ページで、「可用性サービス」ボックスにチェックマークを付けて、インスタンスレベルの可用性を有効にします。
無効にするには、このボックスのチェックマークを外します。
さらに、セッションの持続性のために HADB への接続に使用する JDBC リソースを変更した場合は、ストアプール名を変更できます。詳細については、configure-ha-cluster(1)を参照してください。
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
「保存」ボタンをクリックします。
サーバーインスタンスを停止し、再起動します。
Java EE アプリケーションは一般に、大量のセッション状態データを保持しています。Web ショッピングカートは、セッション状態の古典的な例です。アプリケーションはまた、頻繁に必要になるデータをセッションオブジェクトにキャッシュすることもできます。実際、ユーザーとの対話が多いほぼすべてのアプリケーションには、セッション状態の保持が必要になります。
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
HADB を使用している場合は、asadmin configure-ha-persistence を使用して、Web コンテナの可用性を有効にして設定します。このコマンドの詳細については、configure-ha-persistence(1)を参照してください。
あるいは、asadmin set コマンドを使用して、設定の availability-service.web-container-availability.availability-enabled プロパティーを true に設定し、次に configure-ha-persistence を使用して必要に応じてプロパティーを設定します。
セッション状態データの格納にインメモリーレプリケーションを使用している場合、Web コンテナ可用性の有効化およびプロパティーの設定は asadmin set コマンドを使用して行う必要があります。configure-ha-persistence コマンドは HADB に対してのみ使用できます。
たとえば、set コマンドを使用して次のように指定します。ここで、config1 は設定の名前です。
asadmin set config1.availability-service.web-container-availability.availability-enabled="true" |
asadmin set config1.availability-service.web-container-availability.persistence-frequency="time-based" |
または、set および configure-ha-persistence コマンドを次のように使用します。config1 は設定名を表します。
asadmin set config1.availability-service.web-container-availability.availability-enabled="true" asadmin configure-ha-persistence --user admin --passwordfile secret.txt --type ha --frequency web-method --scope modified-session --store jdbc/hastore --property maxSessions=1000:reapIntervalSeconds=60 cluster1 |
ツリーコンポーネントで、目的の設定を選択します。
「可用性サービス」をクリックします。
「Web コンテナの可用性」タブを選択します。
「可用性サービス」ボックスにチェックマークを付けて、可用性を有効にします。無効にするには、このボックスのチェックマークを外します。
次の節の 「Web コンテナの可用性の設定」の説明に従って、ほかの設定を変更します。
サーバーインスタンスを再起動します。
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
「可用性サービス」の「Web コンテナの可用性」タブを使用すると、次の可用性設定を変更できます。
持続型: 可用性が有効化されている Web アプリケーションのセッションの持続性メカニズムを指定します。使用できる値は memory (持続性なし)、file (ファイルシステム)、ha (HADB)、および replicated (ほかのサーバー上のメモリー) です。
ha セッション持続性を使用するには、HADB を設定し、有効にしておく必要があります。設定の詳細については、configure-ha-cluster(1)を参照してください。
Web コンテナの可用性が有効にされている場合、次の表に示されているように、デフォルトの持続型はプロファイルに応じて異なります。
プロファイル |
持続型 |
---|---|
開発者 |
memory |
クラスタ |
replicated |
エンタープライズ |
ha |
セッションの持続性が必要となる本稼動環境では、ha または replicated を使用します。memory および file の持続型は、高可用性セッション持続性を提供しません。
Web コンテナの可用性を無効にする場合、デフォルトの持続型は memory です。
持続性の頻度: セッション状態を格納する頻度を指定します。持続性のタイプが ha または replicated の場合にのみ適用できます。指定できる値は次のとおりです。
web-method - セッション状態は、各 Web 要求の終了時に、クライアントに応答を返信する前に格納されます。このモードでは、障害発生時にセッション状態を完全に更新するための最良の保証が得られます。これはデフォルトの設定です。
time-based - セッション状態が、reapIntervalSeconds ストアプロパティーによって設定された頻度でバックグラウンドに格納されます。このモードでは、セッション状態が必ずしも完全に更新される保証は得られません。ただし、各要求後に状態が格納されないので、パフォーマンスが大幅に向上します。
持続性の範囲: 格納するセッションオブジェクトの範囲と、セッション状態を格納する頻度を指定します。持続性のタイプが ha または replicated の場合にのみ適用できます。使用できる値は次のとおりです。
session - 常にすべてのセッション状態が格納されます。このモードでは、セッションデータを分散可能な Web アプリケーションに正しく格納するための最良の保証が得られます。これはデフォルトの設定です。
modified-session - セッション状態が変更された場合、すべてのセッション状態が格納されます。HttpSession.setAttribute() または HttpSession.removeAttribute() が呼び出された場合に、セッションが変更されたと見なします。属性が変更されるたびに、必ず setAttribute() を呼び出す必要があります。これは Java EE 仕様の要件ではありませんが、このモードを正しく動作させるために必要になります。
modified-attribute - 変更されたセッション属性だけが格納されます。このモードを正しく動作させるには、次のガイドラインに従う必要があります。
セッション状態が変更されるたびに、setAttribute() を呼び出します。
属性間で相互参照しないようにします。別個の各属性キーにあるオブジェクトグラフを直列化し、別々に格納します。別個の各キーにあるオブジェクト間に相互参照がある場合は、正常な直列化および直列化復元は行われません。
複数の属性間、または少なくとも読み取り専用属性と変更可能な属性間でセッション状態を分散します。
シングルサインオン状態: シングルサインオン状態の持続性を有効にするには、このボックスにチェックマークを付けます。無効にするには、このボックスのチェックマークを外します。詳細については、「セッションフェイルオーバーでのシングルサインオンの使用」を参照してください。
HTTP セッションストア: セッションの持続性のために HADB への接続に使用する JDBC リソースを変更した場合、HTTP セッションストアを変更できます。詳細については、configure-ha-cluster(1)を参照してください。
個々の Web アプリケーションの可用性の有効化と設定を行うには、アプリケーション配備記述子ファイル sun-web.xml を編集します。アプリケーションの配備記述子の設定は、Web コンテナの可用性の設定より優先されます。
session-manager 要素の persistence-type 属性によって、アプリケーションが使用するセッション持続性のタイプが決定されます。高可用性セッション持続性を有効にするには、この要素を ha または replicated に設定する必要があります。
sun-web.xml ファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 Application Deployment Guide』の「The sun-web.xml File」を参照してください。
<sun-web-app> ... <session-config> <session-manager persistence-type="replicated"> <manager-properties> <property name="persistenceFrequency" value="web-method" /> </manager-properties> <store-properties> <property name="persistenceScope" value="session" /> </store-properties> </session-manager> ... </session-config> ...
単一のアプリケーションサーバーインスタンスにおいて、ユーザーがあるアプリケーションによって一度認証されると、同じインスタンス上で動作しているほかのアプリケーションに対する個別の再認証は必要ありません。これをシングルサインオンといいます。詳細については、『Sun GlassFish Enterprise Server 2.1 Developer’s Guide』の「User Authentication for Single Sign-on」を参照してください。
HTTP セッションがクラスタ内のほかのインスタンスにフェイルオーバーした場合でも、シングルサインオンが機能し続けるようにするには、インメモリーレプリケーションまたは HADB を使用して、シングルサインオン情報が持続される必要があります。シングルサインオン情報を持続させるには、最初にサーバーインスタンスと Web コンテナの可用性を有効にし、次にシングルサインオン状態のフェイルオーバーを有効にします。
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
「Web コンテナの可用性の設定」で説明するように、シングルサインオン状態のフェイルオーバーは、管理コンソールの「可用性サービス」の「Web コンテナの可用性」タブで有効にすることができます。asadmin set コマンドを使用して、設定の availability-service.web-container-availability.sso-failover-enabled プロパティーを true に設定することもできます。
たとえば、set コマンドを使用して次のように指定します。ここで、config1 は設定の名前です。
asadmin set --user admin --passwordfile password.txt --host localhost --port 4849 config1.availability-service.web-container-availability. sso-failover-enabled="true"
単一の名前とパスワードの組み合わせによってアクセス可能なアプリケーションは、シングルサインオングループを構成します。シングルサインオングループに属するアプリケーションに対応する HTTP セッションでは、1 つのセッションがタイムアウトになった場合でも、ほかのセッションは無効化されず、引き続き有効となります。これは、1 つのセッションがタイムアウトしてもほかのセッションの可用性に影響を与えるべきではないからです。
この動作の当然の結果として、あるセッションがタイムアウトして、セッションを実行していた同じブラウザウィンドウから対応するアプリケーションにアクセスを試みる場合、再度認証を行う必要はありません。ただし、新しいセッションが作成されます。
シングルサインオングループに属するショッピングカートアプリケーションの例を挙げます。このグループにはほかに 2 つのアプリケーションが含まれます。ほかの 2 つのアプリケーションのセッションタイムアウト値は、ショッピングカートアプリケーションのセッションタイムアウト値を上回るものと仮定します。ショッピングカートアプリケーションのセッションがタイムアウトして、セッションを実行していた同じブラウザウィンドウからショッピングカートアプリケーションの実行を試みる場合、再度認証を行う必要はありません。ただし、以前のショッピングカートは失われていて、新しいショッピングカートを作成する必要があります。ほかの 2 つのアプリケーションは、ショッピングカートアプリケーションを実行していたセッションのタイムアウト後も変わらず動作し続けます。
同様に、ほかの 2 つのアプリケーションのどちらかに対応するセッションがタイムアウトしたとします。セッションを実行していた同じブラウザウィンドウからアプリケーションに接続している間は、再度認証を行う必要はありません。
この動作は、セッションがタイムアウトした場合にのみ当てはまります。シングルサインオンが有効になっていて、HttpSession.invalidate() を使用してセッションの 1 つを無効にする場合、シングルサインオングループに属するすべてのアプリケーションのセッションが無効になります。シングルサインオングループに属する任意のアプリケーションへのアクセスを試みる場合、再認証が必要であり、アプリケーションにアクセスするクライアントに対して新しいセッションが作成されます。
ステートフルセッション Bean (SFSB) には、クライアント固有の状態が含まれています。クライアントとステートフルセッション Bean の間には、一対一の関係が存在します。作成時、EJB コンテナは各 SFSB に、クライアントにバインドするための一意のセッション ID を割り当てます。
サーバーインスタンスが失敗した場合に備えて、SFSB の状態を持続的なストアに保存することができます。SFSB の状態は、そのライフサイクル内のあらかじめ定義された時点に、持続性ストアに保存されます。これを、チェックポイント設定と呼びます。有効になっている場合、チェックポイント設定は一般に、トランザクションがロールバックする場合でも、Bean がトランザクションを完了したあとに実行されます。
ただし、SFSB が Bean 管理によるトランザクションに参加している場合、そのトランザクションは Bean メソッドの実行の途中でコミットされる可能性があります。このメソッド呼び出しの結果、Bean の状態は遷移している途中である可能性があるため、これは Bean の状態にチェックポイントを設定するのに適切なタイミングではありません。この場合、EJB コンテナは、対応するメソッドの終了時に Bean の状態にチェックポイントを設定します。ただし、メソッドの終了時に、その Bean が別のトランザクションの範囲に入っていないことが前提です。Bean 管理によるトランザクションが複数のメソッドにまたがっている場合は、後続のメソッドの終了時にアクティブなトランザクションが存在しなくなるまで、チェックポイント設定が遅延されます。
SFSB の状態は必ずしもトランザクションではなく、非トランザクションビジネスメソッドの結果として大幅に変更される可能性もあります。SFSB がこれに当てはまる場合は、「チェックポイントを設定するメソッドの指定」で説明しているように、チェックポイントを設定するメソッドのリストを指定することができます。
分散可能 Web アプリケーションが SFSB を参照しており、その Web アプリケーションのセッションがフェイルオーバーする場合は、EJB 参照もフェイルオーバーされます。
Enterprise Server インスタンスの停止中に、セッション持続性を使用している SFSB の配備が取り消されると、持続性ストア内のセッションデータがクリアされない可能性があります。これを回避するには、Enterprise Server インスタンスが動作している間、SFSB の配備を取り消します。
「EJB コンテナの可用性」タブを選択します。
「可用性サービス」ボックスにチェックマークを付けます。
可用性を無効にするには、このボックスのチェックマークを外します。
「可用性の設定」の説明に従って、ほかの設定を変更します。
「保存」ボタンをクリックします。
サーバーインスタンスを再起動します。
EJB コンテナの可用性を有効にするには、asadmin set コマンドを使用して、設定に次の 3 つのプロパティーを設定します。
availability-service.ejb-container-availability.availability-enabled
availability-service.ejb-container-availability.sfsb-persistence-type
availability-service.ejb-container-availability.sfsb-ha-persistence-type
たとえば、設定の名前が config1 の場合は、次のコマンドを使用します。
asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability.availability-enabled="true"
asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability.sfsb-persistence-type="file"
asadmin set --user admin --passwordfile password.txt --host localhost --port 4849config1.availability-service.ejb-container-availability.sfsb-ha-persistence-type="replicated"
HADB ソフトウェアは、Sun GlassFish Enterprise Server の Enterprise Server スタンドアロン配布 で提供されます。Sun GlassFish Enterprise Server の利用可能な配布の詳細については、『Sun GlassFish Enterprise Server 2.1 Installation Guide』の「Distribution Types and Their Components」を参照してください。HADB 機能はエンタープライズプロファイルでのみ利用可能です。プロファイルの詳細については、『Sun GlassFish Enterprise Server 2.1 管理ガイド』の「プロファイル」を参照してください。
「可用性サービス」の「EJB コンテナの可用性」タブを使用すると、次の設定を変更できます。
HA 持続型: 可用性が有効になっている SFSB のセッション持続性と非活性化メカニズムを指定します。使用できる値は、file (ファイルシステム)、ha (HADB)、および replicated (ほかのサーバー上のメモリー) です。HADB がインストールされている場合、デフォルト値は ha です。それ以外の場合は、replicated です。セッションの持続性が必要となる本稼動環境では、ha または replicated を使用します。
SFSB 持続型: 可用性が有効になっていない SFSB の非活性化メカニズムを指定します。使用できる値は、file (デフォルト)、ha、および replicated です。
いずれかの持続型を file に設定すると、EJB コンテナによって非活性化されたセッション Bean が格納されるファイルシステムの場所が指定されます。ファイルシステムに対するチェックポイントはテストには有効ですが、本稼働環境には役立ちません。ストアプロパティーの設定については、管理コンソールのオンラインヘルプを参照してください。
HA 持続性によって、どのサーバーインスタンスが失敗した場合でも、サーバーインスタンスのクラスタは SFSB 状態を復元できます。HA ストアはまた、非活性化と活性化のストアとしても使用されます。SFSB 状態の持続性を必要とする本稼働環境では、このオプションを使用します。HADB の詳細については、configure-ha-cluster(1)を参照してください。
SFSB ストアプール名: セッションの持続性のために HADB への接続に使用する JDBC リソースを変更した場合は、SFSB ストアプール名を変更できます。詳細については、configure-ha-cluster(1)を参照してください。
可用性が無効になっている場合、ローカルファイルシステムは SFSB 状態の非活性化に使用されますが、持続性には使用されません。SFSB 状態が格納される場所を変更するには、EJB コンテナのセッション格納位置の設定を変更します。ストアプロパティーの設定については、管理コンソールのオンラインヘルプを参照してください。
配備中に、個々のアプリケーションまたは EJB モジュールの SFSB の可用性を有効にすることができます。
管理コンソールを使用して配備している場合は、可用性を有効にするチェックボックスをチェックします。
asadmin deploy または asadmin deploydir コマンドを使用して配備している場合は、--availabilityenabled オプションを true に設定します。詳細については、deploy(1) および deploydir(1)を参照してください。
個々の SFSB について可用性を有効にし、チェックポイントを設定するメソッドを選択するには、sun-ejb-jar.xml 配備記述子ファイルを使用します。
高可用性セッション持続性を有効にするには、ejb 要素に availability-enabled="true" を設定します。SFSB キャッシュのサイズと動作を制御するには、次の要素を使用します。
max-cache-size: キャッシュに保持されるセッション Bean の最大数を指定します。キャッシュがオーバーフローする (Bean の数が max-cache-size を超える) 場合、コンテナは一部の Bean を非活性化するか、または Bean の直列化された状態をファイルに書き出します。ファイルを作成するディレクトリは、設定 API を使用して EJB コンテナから取得されます。
resize-quantity
cache-idle-timeout-in-seconds
removal-timeout-in-seconds
victim-selection-policy
sun-ejb-jar.xml の詳細については、『Sun GlassFish Enterprise Server 2.1 Application Deployment Guide』の「The sun-ejb-jar.xml File」を参照してください。
<sun-ejb-jar> ... <enterprise-beans> ... <ejb availability-enabled="true"> <ejb-name>MySFSB</ejb-name> </ejb> ... </enterprise-beans> </sun-ejb-jar>
有効になっている場合、チェックポイント設定は一般に、トランザクションがロールバックする場合でも、Bean がトランザクションを完了したあとに実行されます。Bean の状態に重要な変更をもたらす非トランザクションビジネスメソッドの終了時に、SFSB のオプションのチェックポイント設定を追加で指定するには、sun-ejb-jar.xml 配備記述子ファイルの ejb 要素にある checkpoint-at-end-of-method 要素を使用します。
checkpoint-at-end-of-method 要素内の非トランザクションメソッドは、次のいずれかになります。
SFSB のホームインタフェースで定義された create() メソッド。作成の直後に、SFSB の初期状態にチェックポイントを設定する場合に使用します。
コンテナ管理によるトランザクションのみを使用している SFSB の場合は、トランザクション属性 TX_NOT_SUPPORTED または TX_NEVER でマークされた Bean のリモートインタフェースのメソッド。
Bean 管理によるトランザクションのみを使用している SFSB の場合は、Bean 管理によるトランザクションが起動もコミットもされないメソッド。
このリストに記述されているその他のメソッドはすべて無視されます。これらの各メソッドの呼び出しの終了時に、EJB コンテナは SFSB の状態を持続性ストアに保存します。
SFSB がどのトランザクションにも参加しておらず、checkpoint-at-end-of-method 要素で明示的に指定されているメソッドがない場合は、この Bean に対して availability-enabled="true" が設定されていても、この Bean の状態にチェックポイントは設定されません。
パフォーマンスを向上させるには、メソッドの小さなサブセットを指定します。これらのメソッドは一般に、大量の処理を実行するか、または Bean の状態に重要な変更をもたらします。
<sun-ejb-jar> ... <enterprise-beans> ... <ejb availability-enabled="true"> <ejb-name>ShoppingCartEJB</ejb-name> <checkpoint-at-end-of-method> <method> <method-name>addToCart</method-name> </method> </checkpoint-at-end-of-method> </ejb> ... </enterprise-beans> </sun-ejb-jar>