Application Server は、HTTP セッションデータおよびステートフルセッション Bean (SFSB) セッションデータのフェイルオーバーを通して、高可用性セッション持続性を提供します。フェイルオーバーとは、サーバーインスタンスまたはハードウェアに障害が発生しても、別のサーバーインスタンスが分散セッションを引き継ぐことを意味します。
分散セッションは、次の条件が満たされた場合に、複数の Sun Java System Application Server インスタンスで動作できます。
各サーバーインスタンスが、同じ高可用性データベース (HADB) にアクセスできること。このデータベースを使用可能にする方法については、configure-ha-cluster(1)を参照してください。
各サーバーインスタンスに、同じ分散可能 Web アプリケーションが配備されていること。web.xml 配備記述子ファイルの web-app 要素に、distributable 要素が含まれている必要があります。
Web アプリケーションが、高可用性セッション持続性を使用していること。分散可能でない Web アプリケーションが、高可用性セッション持続性を使用するように設定されていると、サーバーはログファイルにエラーを書き込みます。
Web アプリケーションは、--availabilityenabled オプションが true に設定された deploy または deploydir コマンドを使用して配備されている必要があります。これらのコマンドの詳細については、deploy(1)および deploydir(1)を参照してください。
セッションが処理を継続すると、ファイルを開くための参照やネットワーク接続はすべて失われます。アプリケーションは、この制限を念頭においてコード化する必要があります。
フェイルオーバーをサポートする分散セッションには、特定のオブジェクトしかバインドできません。サーブレット 2.4 仕様とは異なり、Sun Java System Application Server は、フェイルオーバーがサポートされていないオブジェクト型が分散セッションにバインドされると IllegalArgumentException をスローしません。
フェイルオーバーをサポートする分散セッションには、次のオブジェクトをバインドできます。
すべての EJB コンポーネントに対するローカルホームおよびオブジェクト参照。
共存エンティティー Bean、ステートフルセッション Bean、および分散エンティティー Bean のリモートホーム参照、リモート参照
分散セッション Bean のリモートホームおよびリモート参照
InitialContext および java:comp/env に対する JNDI コンテキスト。
UserTransaction オブジェクト。ただし、失敗したインスタンスが再起動されない場合は、準備されたグローバルトランザクションはすべて失われ、正しくロールバックまたはコミットされない可能性もあります。
直列化可能な Java 型
フェイルオーバーをサポートする分散セッションには、次のオブジェクト型をバインドできません。
JDBC データソース
Java Message Service (JMS) の ConnectionFactory および Destination オブジェクト
JavaMail™ セッション
接続ファクトリ
管理対象オブジェクト
Web サービス参照
一般に、これらのオブジェクトに対して、フェイルオーバーは機能しません。ただし、オブジェクトが直列化可能な場合など、フェイルオーバーが機能する場合もあります。
次のディレクトリには、セッション持続性を示すサンプルアプリケーションが含まれています。
install_dir/samples/ee-samples/highavailability install_dir/samples/ee-samples/failover
次のサンプルアプリケーションでは、SFSB セッション持続性がデモンストレーションされます。
install_dir/samples/ee-samples/failover/apps/sfsbfailover