付録C 障害発生時のCMR用の表の回復
ここでは,CMRを含むアプリケーションをデプロイしたあとJ2EEサーバで障害が発生した場合に,障害発生前に使用していたCMR用の表を回復させる手順について説明します。なお,CMR用の表の詳細については,マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」の「9.6.3 CMP2.xとデータベースのマッピング」を参照してください。
CMRを含むアプリケーションがデプロイされ,運用していた状態で保守などのためにJ2EEサーバを停止,起動したときに障害が発生すると,CMRを含むアプリケーションがデプロイされた状態で立ち上がらないことが考えられます。障害を解決し,再度CMRを含むアプリケーションをデプロイしようとしても,作成する表と同名の表がデータベース上にある場合,デプロイができません(アプリケーション間で表の共有を避けるため)。
ここで,SQL生成を再度実行すると,新しいCMR用の表名を使用したSQLが生成され,新しいCMR用の表を使用するようにデプロイができます。しかし,J2EEサーバを停止する以前に使用していた関係を使用したい場合,データベースに残っている表を使うようにデプロイする必要があります。
簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内にejbserver.ejb.cmp20.cmr.use.existing_tableパラメタで指定します。ejbserver.ejb.cmp20.cmr.use.existing_tableは,アプリケーションの起動障害発生時,それまで使用していた関係の情報を回復させるためのオプションです。trueを指定すると,データベース既存の表を使用するようにデプロイができます。このオプションを使用して,既存の表を使用する場合の手順を次に示します。
-
障害発生前に使用していたCMR用の表がデータベース上に残っていることを,SQLを使用して確認してください。
-
J2EEサーバを停止します(アプリケーションがデプロイ状態で立ち上がることに失敗した原因の対処をしてください)。
-
簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内にejbserver.ejb.cmp20.cmr.use.existing_tableパラメタで次のように指定します。
- <param-name>タグ
-
ejbserver.ejb.cmp20.cmr.use.existing_table
- <param-value>タグ
-
true
-
J2EEサーバを起動します。
-
デプロイ状態での開始に失敗したCMRを含むアプリケーションを再度デプロイします。
- 注意事項
-
ここでSQL生成を再実行しないでください。再実行すると新しい表名でSQLが生成され,以前の表が使用できなくなります。
-
J2EEサーバを停止します。
-
簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内にejbserver.ejb.cmp20.cmr.use.existing_tableパラメタでfalseを指定するか,またはこのオプションを設定しない状態に戻します。
-
再度J2EEサーバを起動します。