Sun ONE Application Server 6.5 は、ステートフルセッション Bean のフェイルオーバーをサポートします。6.5 で SFSB フェイルオーバーを利用するには、フェイルオーバーと DSync (Distributed Store) を使用してセッションを設定する必要があります。DSync 機構は、実行中のセッション Bean の対話状態を保存するために使用されます。
Sun ONE Application Server 6.5 は、RMI/IIOP パス上のリッチクライアントに関して、ステートフルセッション Bean のフェイルオーバーをサポートしません。このようなアプリケーションは、Sun Java System Application Server 8.2 の RMI/IIOP パス上の SFSB フェイルオーバーを利用できます。SFSB フェイルオーバーの設定の詳細については、『Sun Java System Application Server Enterprise Edition 8.2 高可用性 (HA) 管理ガイド』の「ステートフルセッション Bean のフェイルオーバー」を参照してください。
Sun Java System Application Server 8.2, Enterprise Edition は、ステートフルセッション Bean のフェイルオーバーをサポートします。Application Server 8.2 は、セッションデータの格納に高可用性データベース (HADB) を使用します。SFSB フェイルオーバーのサポートで順守される原則は、SFSB の対話状態をそのライフサイクルのあらかじめ定義された時点で持続的ストアに保存することです。この機構は、チェックポイントと呼ばれます。サーバーがクラッシュした場合は、SFSB のチェックポイント化された状態を持続的ストアから取得できます。セッションデータの格納に HADB を使用するには、HADB を永続的ストアとして設定してください。HTTP セッションとステートフルセッション Bean の基本となるストアは同じであり、永続的ストアの設定はセッションストアの設定とほぼ同じです。
セッションフェイルオーバーのための HADB の設定については、『Sun Java System Application Server Enterprise Edition 8.2 高可用性 (HA) 管理ガイド』の第 9 章「高可用性 (HA) セッション持続性とフェイルオーバーの設定」を参照してください。
Sun ONE Application Server 6.5 に配備されたステートフルセッション Bean を Sun Java System Application Server 8.2 に移行するときは、EJB のコードを変更する必要はありません。ただし、次の手順を実行する必要があります。
ejb-jar.xml などの J2EE の標準配備記述子の場合は、最新の DTD URL を指し示すように <!DOCTYPE 定義を変更します。
ias-ejb-jar.xml ファイルをこのファイルの修正バージョン (つまり、DTD に従って手動で作成した sun-ejb-jar.xml) に置き換えます。
すべての <ejb-name>-ias-cmp.xml ファイルを、手動で作成した 1 つの sun-cmp-mappings.xml ファイルに置き換えます。
SFSB 状態のフェイルオーバーのサポートを利用するために、アプリケーションのソースコードを変更する必要はありません。SFSB のチェックポイント化に必要なすべての設定は、Application Server 固有の配備記述子 (sun-ejb-jar.xml) またはドメイン設定ファイル (domain.xml) に適用されます。
ただし、サーブレット経由で EJB にアクセスする場合は、EJB のホーム参照とリモート参照をセッションに格納する必要があります。ejbHome インタフェースと ejbRemote インタフェースをセッションに格納するコード例を次に示します。
session.setAttribute("ejbhome", ejbHome); session.setAttribute("ejbremote", ejbRemote);
次のコード例は、セッションから ejbHome と ejbRemote を取得する方法を示しています。
ejbHome = session.getAttribute("ejbhome"); ejbRemote = session.getAttribute("ejbremote");
domain.xml で、availability-service 要素の availability-enabled 属性が TRUE に設定されていることを確認します。availability-enabled 属性が TRUE に設定されている場合は、サーバーインスタンスのレベルでフェイルオーバーが有効になっていることを示します。つまり、サーバーインスタンスが要求を処理できなかった場合は、その要求は使用可能な次のサーバーインスタンスにルーティングされます。
SFSB チェックポイントによって EJB コンテナのパフォーマンスにオーバーヘッドが発生するので、アプリケーションにとって状態のフェイルオーバーが重要である SFSB だけにチェックポイントを制限することもできます。
sun-ejb-jar.xml では、チェックポイントをメソッドレベルで有効または無効にできます。詳細は、『Sun Java System Application Server Enterprise Edition 8.2 高可用性 (HA) 管理ガイド』の「チェックポイントを設定するメソッドの指定」を参照してください。
6.5 の SFSB EJB モジュールの配備記述子 (ias-ejb-jar.xml) で session 要素の failoverrequired 属性が TRUE に設定されている場合は、Application Server 8.2 環境でそのような EJB モジュールに対する可用性サービスを有効にすることもできます。