データベースセッションフェイルオーバ機能を使用すると,リクエストによるセッションの作成処理が発生したときに,処理の延長上でセッション情報がデータベースに格納されます。そのため,障害が発生した場合も,格納されているセッション情報を基にセッションを再作成し,正常に業務を続行できます。
セッション情報の格納の流れ,および障害が発生した場合の処理について説明します。
データベースセッションフェイルオーバ機能を使用すると,リクエストによるセッションの作成処理が発生したときに,処理の延長上でセッション情報がデータベースに格納されます。
セッション情報の格納の流れを次の図に示します。
図6-1 セッション情報の格納の流れ
Webサーバがクライアントからセッションの作成が必要なリクエストを受け取ると,J2EEサーバでセッションが作成されます(1.)。セッションの作成の処理の延長上で,セッション情報が作成され(2.),セッション情報がデータベースに格納されます(3.)。
WebサーバまたはJ2EEサーバで障害が発生した場合,データベースに格納されているセッション情報を基に,ほかのJ2EEサーバでセッションを再作成し,正常に業務を続行できます。
WebサーバまたはJ2EEサーバで障害が発生した場合の処理について,次の図に示します。
図6-2 WebサーバまたはJ2EEサーバで障害が発生した場合の処理
Webサーバ1で障害が発生すると,負荷分散機によってWebサーバ2へリクエストが転送されます(1.)。転送先のJ2EEサーバ2でリクエストを処理するとき,リクエストに関連づけられたセッションが存在しないため,データベースからセッション情報を取得して(2.),セッションを再作成します(3.)。
セッションが正常に引き継がれ,障害発生前の状態で業務を続行できます。
また,J2EEサーバ1を再起動しWebサーバ1が障害から回復すると,再びリクエストはWebサーバ1に送信されます。
データベースで障害が発生すると,J2EEサーバ上のセッション情報だけを操作して業務を続行できます。データベースが障害から回復し,それ以降のセッションの操作でデータベースにアクセスできたとき,J2EEサーバ上で操作したセッション情報でデータベースを更新します。
これによって,クライアントはデータベースに障害が発生したことを意識しないで業務を続行できます。