JText での障害の処理
JText コネクターでは、以下のタイプのエラーが
発生することがあります。
表 11. JText エラー・タイプ
エラーのタイプ |
説明 |
ビジネス・オブジェクトの区切り文字に関する障害 |
ビジネス・オブジェクトの区切り文字に関する障害は、トップレベルのメタオブジェクトの EndBODelimiter 属性が有効な値に
設定されていて、イベント・ファイルにはそれぞれのビジネス・オブジェクトの末尾に
指定された区切り文字が含まれているが、データ自体が区切り文字をテキスト内で
使用しているときに発生します。コネクターはテキスト内の区切り文字の値を
検出すると、ビジネス・オブジェクト・ストリングの一部を
処理に失敗したフォーマッターに送信します。この場合は、コネクターはそのイベントを filename_timestamp.fail ファイルに書き込みます。このファイルには、区切り文字の障害
が検出されたすべてのビジネス・オブジェクトのレコードが含まれます。 |
サブスクリプション・エラー |
コネクターがビジネス・オブジェクトの区切り文字を検出
しそのビジネス・オブジェクト名を取得できるが、そのビジネス・オブジェクトが
サブスクライブされていないときに発生することがあります。この場合は、イベントが filename_timestamp.unsub ファイルに送信されます。このファイルには、アンサブスクライブされたビジネス・オブジェクトのレコードがすべて
含まれます。 |
フォーマット・エラー |
コネクターが入力ビジネス・オブジェクト名と一致しない
ビジネス・オブジェクト名の区切り文字を検出する場合や、ビジネス・オブジェクト・ファイルのフォーマットがメタオブジェクトの
フォーマットと一致しない場合に発生することがあります。イベントは filename_timestamp.fail ファイルに送信されます。このファイルには、フォーマットに失敗したすべてのビジネス・オブジェクトのレコードが
含まれます。 |
送信エラー |
統合ブローカーがダウンしているときにコネクターが
ビジネス・オブジェクトを送信しようとすると発生することがあります。Send 操作に
失敗すると、イベントは filename_timestamp.fail ファイルに送信されます。このファイルには、正常に送信されなかったすべてのビジネス・オブジェクトのレコードが
含まれます。 |
イベント・ログ・ファイル
コネクターは正常に処理されたビジネス・オブジェクトに関する情報
を event.log ファイル
に記録します。コネクターが、イベント・ファイル内のすべてのビジネス・オブジェクト
を処理する前にダウンした場合は、それぞれのビジネス・オブジェクトを統合ブローカーに
一度だけ送信するように、リカバリーのときにこのログ・ファイルを使用します。
ログ・ファイルの形式を以下に示します。
EventFileName::1,2,n
ここで、EventFileName は現行のイベント・ファイルの名前を表し、それぞれの番号はそのファイルの中の正常に処理されたビジネス・オブジェクト
のシーケンス番号を表します。
例えば、コネクターが Customer.in ファイルの中の最初の 4 つの
ビジネス・オブジェクトのうち 3 つを正常に処理し、2 つ目のビジネス・
オブジェクトの処理に失敗したとします。さらに、コネクターが Customer.in の処理をまだ完了していない
とします。この場合に event.log ファイルは、次のように表示されます。
Linux:
$ProductDir/JText/Event/Customer.in:: 1,3,4
Windows:
C:¥JText¥Event¥Customer.in:: 1,3,4
i5/OS:
/QIBM/UserData/WebBIICS/JText/Event/Customer.in:: 1,3,4
Customer.in ファイル全体の処理の途中でコネクターがダウン
した場合は、コネクターは始動するときに、イベント・ファイルの処理を
処理が停止したポイントから再開するために
ログ・ファイルの情報を使用します。コネクターは、ログ・ファイルを参照して、リカバリーさせるイベント・
ファイルの名前や最後に処理したビジネス・オブジェクトのシーケンス番号を
取得します。次にコネクターは、ログ・ファイルに記録されている最後の番号より大きいシーケンス番号が付いた
イベント・ファイル内のすべてのビジネス・オブジェクトを統合ブローカー
に送信します。例えば、上記のファイルの場合は、コネクターは Customer.in ファイルの 5 番目のビジネス・オブジェクトから
処理を開始します。
コネクターはパフォーマンスを改善するためにログ・ファイルの内容を
メモリーに保持します。そして、ログ・ファイルに新規エントリーがあり、更新するときにのみディスク上にある
このファイルにアクセスします。コネクターはリカバリー時間にのみこのログ・ファイルを
参照します。
コネクターがリカバリー処理でどのように event.log ファイル
を使用するかについての情報は、障害リカバリーを参照してください。
障害リカバリー
注:
以下に示すリカバリーのための手順は、ディスクで障害が発生した場合やディスクがいっぱいの場合には適用しません。
イベント通知時に発生した障害からリカバリーするには、コネクターは
以下の手順を行います。
- コネクターはイベント・ファイルからビジネス・オブジェクト・ストリング
を処理します。コネクターはエントリーを正常に処理したときに
このエントリーを event.log ファイルに記録します。また、このエントリーを
(ArchiveDir メタオブジェクト属性で指定された)
アーカイブ・ディレクトリー内のファイルにも書き込みます。
- イベント・ファイル内のどのビジネス・オブジェクトの処理も
失敗しなかった場合は、コネクターは正常に処理したビジネス・オブジェクトを、SuccessArchiveExt 属性で指定された拡張子が付いたアーカイブ・ファイル
にアーカイブします。
- イベント・ファイル内のビジネス・オブジェクトのいずれかの処理に失敗
した場合は、コネクターは正常に処理したビジネス・オブジェクトを、PartialArchiveExt 属性で指定された拡張子が付いたアーカイブ・ファイル
にアーカイブします。
- コネクターは SuccessArchiveExt 属性で指定されたファイルに
ビジネス・オブジェクトを書き込んでから、処理に失敗したビジネス・オブジェクトが
ある場合はこのファイルの拡張子を、PartialArchiveExt で指定された
拡張子に変更します。
出荷時のこれらの拡張子のデフォルト値は .success および .partial です。
- エラーが発生すると、コネクターは以下を行います。
- サブスクリプション・エラー-- コネクターはアーカイブ・ディレクトリー内に
UnsubscribedArchiveExt メタオブジェクト属性で指定された拡張子が
付いたアーカイブ・ファイルを作成します。引き渡されるこの拡張子のデフォルト値
は .unsub です。
- フォーマット・エラーまたは送信エラー-- コネクターはアーカイブ・ディレクトリー
内に、FailArchiveExt メタオブジェクト属性で指定された拡張子が付いたアーカイブ・ファイルを作成します。出荷時のこの拡張子の
デフォルト値は .fail です。
- ビジネス・オブジェクト区切り文字エラー-- コネクターはアーカイブ・ディレクトリー
内に、FailArchiveExt 属性で指定された拡張子が付いたアーカイブ・ファイルを作成します。さらにコネクターは、イベント・ファイルを
バックアップするために、アーカイブ・ディレクトリーに移動させて、拡張子を OriginalArchiveExt で指定されたものに変更します。
コネクターは処理に失敗したビジネス・オブジェクトを event.log に記録しません。
- コネクターはすべてのビジネス・オブジェクトをイベント・ファイルに
処理してから event.log ファイルを消去し、次のイベント・ファイルからそのファイルへの書き込みを開始
します。
- コネクターが、イベント・ファイル内のすべてのビジネス・オブジェクト
を処理する前にダウンした場合は、リカバリー処理中に処理を開始する場所を判別
するために event.log 内の情報を
使用します。バックアップ時、コネクターはログ・ファイル内に
エントリーがあるかどうかをチェックします。
ユーザーが EventRecovery構成プロパティーを retry に設定している場合は、コネクターは始動時に、前に処理したファイルから
未解決のイベントを自動的にリカバリーします。ただし、このプロパティーを abort に設定している場合は、コネクターは、リカバリーさせるイベントがある場合
に始動時に終了します。
- イベント通知プロセスの間に発生したエラーからリカバリーするには、コネクターを再始動する必要があります。ただし、コネクターを再始動する前に
以下を行ってください。
- 処理に失敗した、およびアンサブスクライブされたビジネス・オブジェクト用に
コネクターが作成したファイルを検査します。適切な修正を加えて、コネクターが始動した時にビジネス・オブジェクト・ストリングを正しく処理できる
ようにします。
- 適切なファイルをアーカイブ・ディレクトリーからイベント・ディレクトリー
にコピーして、すべての .fail または .unsub 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、これらのファイルの名前を
わかりやすく変更します。例えば、Customer.unsub を Customer_unsub_resubmit.in に変更します。
- 発生した障害のタイプに応じて、リカバリーに必要な追加の手順を
手動で実行しなければならないことがあります。
以下のガイドラインは、ユーザーが、発生したエラーのタイプに応じて実行する
リカバリーの手順を判別する際に役立ちます。
ビジネス・オブジェクトの区切り文字エラーからのリカバリー
コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリー
に書き込むときに、FailArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。
- イベント・ファイルにビジネス・オブジェクトの区切り文字が含まれ、この区切り文字に間違いがなく、それにデータ自体の区切り文字の値が
テキストとして含まれないようにしてください。この区切り文字の使用法が
正しくない場合は訂正してください。
- 処理に失敗した他の理由を特定するには、コネクターの
ログ・ファイル (LogFileName 構成の属性で指定されている) を参照してください。
- そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリー
にコピーして、.fail 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前を
わかりやすく変更します。例えば、Customer.fail を Customer_delimiter_error.in に変更します。
サブスクリプション・エラーからのリカバリー
コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリーに格納されて
いるファイルに書き込むときに、UnsubscribedArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。
- アーカイブされたファイルを開き、そのビジネス・オブジェクト・ストリング
を検出して、ビジネス・オブジェクト名と動詞がサブスクライブされている
ことを確認してください。必要があれば
適切な修正を加えます。
- 統合ブローカーが実行中であることを確認します。
- そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリー
にコピーして、.unsub 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前を
わかりやすく変更します。例えば、Customer.unsub を Customer_unsub_resubmit.in に変更します。
フォーマット・エラーからのリカバリー
コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリーに格納されて
いるファイルに書き込むときに、FailArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。
- アーカイブされたファイルを開き、以下を確認してください。
- ビジネス・オブジェクト・ストリングのフォーマットが、メタオブジェクト
の予期されたフォーマットと一致すること。一致しない場合は、メタオブジェクト
かビジネス・オブジェクト・ストリングのどちらか一方のフォーマット・タイプを変更してください。
- ビジネス・オブジェクト・ストリングのフォーマット構文が正しいこと。正しくない場合は修正してください。
- そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリー
にコピーして、.fail 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前を
わかりやすく変更します。例えば、Customer.fail を Customer_fail_formatting.in に変更します。
送信エラーからのリカバリー
コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリーに格納されて
いるファイルに書き込むときに、FailArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。
- ビジネス・インテグレーション・システムのすべてのコンポーネントが実行中である
ことを確認します。
- そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリー
にコピーして、.fail 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前を
わかりやすく変更します。例えば、Customer.fail を Customer_fail_sending.in に変更します。
- コネクターを再始動します。
データ・ハンドラーとサポートされているビジネス・オブジェクト
データ・ハンドラーが構成されていないことを示すエラーをコネクターが
戻すときは、データ・ハンドラーのメタオブジェクトが
サポートされているビジネス・オブジェクトのリストに含まれていることを確認してください。コネクターが戻す最も一般的なエラーは、BOPrefix が設定されていない
ことを示すものです。
DHFormatter のサポートされているビジネス・オブジェクトのリストには、以下が含まれています。
- MO_JTextConnector_Default
- MO_JTextConnector_BusObjName (特定のビジネス・オブジェクト用に作成されたメタオブジェクト)
- ファイルから読み取られる、またはファイルに書き込まれるビジネス・オブジェクト
- データ・ハンドラーのメタオブジェクト (データ・ハンドラーは MO_JTextConnector_Default メタオブジェクトの DataHandlerConfigMO 属性で指定されたもの)
