6.3.2 グローバルセッション情報の削除
グローバルセッション情報の有効期限監視は,J2EEサーバ上のHTTPセッションを監視することで実施されます。有効期限の監視下では,有効期限が切れたHTTPセッションについて,データベース上のグローバルセッション情報が削除されます。しかし,J2EEサーバに障害が発生して停止した場合,そのJ2EEサーバで使用されていたグローバルセッション情報は,ほかのJ2EEサーバに引き継がれるか,そのJ2EEサーバが再起動されるまで有効期限の監視が行われません。有効期限の監視が行われない状態が長く続くと,有効期限が過ぎても削除されないグローバルセッション情報が,セッション情報格納テーブルのレコードを使用し続けることになります。
このため,データベース上に残ったグローバルセッション情報を適宜削除する必要があります。
ここでは,グローバルセッション情報をコマンドによって削除する方法について説明します。
-
グローバルセッション情報の削除方法
グローバルセッション情報を削除するには,cjclearsessionコマンドを使用します。J2EEサーバまたはWebアプリケーションが停止してから,HTTPセッションの有効期限以上の時間が経過したあとに,J2EEサーバまたはWebアプリケーションが再起動する前にコマンドを実行します。
Webアプリケーション内で,Sevlet APIを使用してHTTPセッションごとに有効期限を設定している場合は,最も長い有効期限に合わせてコマンドを実行してください。
グローバルセッション情報を削除する手順を次に示します。
-
環境変数CLASSPATHに,使用するJDBCドライバのパスを設定する。
cjclearsessionコマンドを初めて使用する場合,環境変数CLASSPATHに使用するJDBCドライバのパスを指定します。
-
cjclearsessionコマンドを実行して,グローバルセッション情報を削除する。
コマンドにアプリケーション識別子,サーバID,使用するJDBCドライバの情報,およびデータベースアクセスに必要な情報を指定して実行します。アプリケーション識別子で指定したWebアプリケーションの,サーバIDで指定したJ2EEサーバが所有するグローバルセッション情報がすべて削除されます。
-
必要に応じて,J2EEサーバまたはWebアプリケーションを再起動する。
なお,cjclearsessionコマンドに-countオプションを指定して実行すると,J2EEサーバが所有するグローバルセッション情報数を表示できます。
データベースへの接続試行のタイムアウト,データベースのグローバルセッション情報の取得または削除するSQLの実行タイムアウトは8秒です。
コマンド実行中にデータベースアクセスでエラーが発生した場合,エラーが発生した時点でコマンドの実行を中止します。
cjclearsessionコマンドの詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjclearsession(グローバルセッション情報の削除(データベースセッションフェイルオーバ機能))」を参照してください。
-
-
注意事項
グローバルセッション情報の削除についての注意事項を示します。
-
削除するHTTPセッションを所有するJ2EEサーバが稼働中の場合の削除
J2EEサーバが稼働中の場合,リクエスト処理が行われてグローバルセッション情報が新たに作成されることがあります。このため,削除対象とするHTTPセッションを所有するJ2EEサーバが稼働中の場合は,グローバルセッションの有効期限が切れる前に削除される可能性があります。グローバルセッション情報を削除する場合は,削除対象とするHTTPセッションを所有するJ2EEサーバを停止してからコマンドを実行してください。
-
有効期限前の削除
グローバルセッションの有効期限が切れる前にcjclearsessionコマンドを実行してグローバルセッション情報の削除をした場合,次の動作になります。
項番
完全性保障モード
J2EEサーバ上のHTTPセッションの有無
動作
1
無効
なし
グローバルセッションの引き継ぎができません。
2
あり
削除されたグローバルセッション情報は,以降,データベース上に保存されない状態となり,J2EEサーバ上のHTTPセッションだけでWebアプリケーションが動作します。
-
完全性保障モードが有効の場合の削除
完全性保障モードが有効の場合,動作は保障されません。
-
Oracle JDBC Thin Driverを使用する場合
cjclearsessionコマンドは,JDBCドライバのsetQueryTimeoutメソッドを使用してSQL実行時のタイムアウトを実現しています。Oracle JDBC Thin Driverを使用してOracleに接続する場合の注意事項は,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「3.6.7 Oracleと接続する場合の前提条件と注意事項」を参照してください。
-