セションはSession Registry Serverにバックアップされ、Servletコンテナの異常発生時にSession Registry Serverにバックアップされたセションを他のServletコンテナにリカバリすることで、他のServletコンテナでセションを引き継ぎます。
セションのバックアップの契機
セションをバックアップする契機は以下の2種類から選択できます。
リクエストの完了後にセションをバックアップします。また、クライアントへのレスポンスはセションがSession Registry Serverにバックアップされるのを待ってから完了します。
クライアントからのリクエストの処理時間にセションのバックアップ時間も含まれるため、クライアントからのリクエストを処理する時間は一定間隔でバックアップする場合と比較して長くなります。
セションはリクエスト処理が完了した後にServletコンテナによって定期的にバックアップされます。
リクエスト処理とは独立してバックアップが行われるため、個々のリクエスト返却までの性能には直接影響しません。
セションがSession Registry Serverにバックアップされる前にServletコンテナがダウンした場合、そのセションはリカバリすることができません。
設定方法
バックアップの契機は、Session Registry Client側で、Interstage管理コンソールの以下の項目で設定します。デフォルト値は“一定間隔でバックアップする”で、バックアップする間隔のデフォルト値は5秒です。
[ワークユニット] > “ワークユニット名” > [環境設定] > [セションリカバリ設定] > [バックアップの契機]
Session Registry Clientの設定については、“9.4 Session Registry Clientの設定”を参照してください。また、Interstage管理コンソールの詳細については、Interstage管理コンソールのヘルプを参照してください。
isj2eeadminコマンドを使用して、上記の設定を行うこともできます。isj2eeadminコマンドの詳細については、リファレンスマニュアル(コマンド編)の“isj2eeadmin”を参照してください。
バックアップの各契機について、以下の関係が成り立ちます。
|
セションのバックアップに失敗した場合
セションのバックアップに失敗した場合でもクライアント、および、Webアプリケーションへエラーの通知は行われません。これは、セションのバックアップに失敗した場合、クライアント、および、Webアプリケーションにエラーを通知するとセションリカバリ機能を使用することがアプリケーションの稼働率を下げる要因となってしまうためです。
また、セションのバックアップに失敗した場合は、以降Session Registry Serverは使用不可とマークされ、使用可能となるまで通信(バックアップ、リカバリ)を行いません。
Session Registry Serverが使用可能になる契機については“9.1.4 セションリカバリ機能の監視”を参照してください。
複数のリクエストでセションを処理する場合
同じ1つのセションを扱うすべてのリクエストは同じ時間には1つのJavaVMで処理しなければいけないと規約化されています。したがって、いったん他のServletコンテナにセションがリカバリされた場合は、もとあったServletコンテナのセションは無効にする必要があります。
セションを他のServletコンテナにリカバリする際にSession Registry Serverは可能な限り、もとあったServletコンテナのセションを破棄しようとしますが、ネットワーク異常などで破棄できない可能性があります。その場合、もとあったServletコンテナのセションは、そのServletコンテナとSession Registry Server間の通信の復旧時に破棄されます。