JText での障害の処理

JText コネクターでは、以下のタイプのエラーが発生することがあります。

表 12. 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:

$ProdDir/JText/Event/Customer.in:: 1,3,4
 

OS/400:

/QIBM/UserData/WebBIICS/JText/Event/Customer.in:: 1,3,4
 

Windows:

C:¥JText¥Event¥Customer.in:: 1,3,4
 

Customer.in ファイル全体の処理の途中でコネクターがダウンした場合は、コネクターは始動するときに、イベント・ファイルの処理を処理が停止したポイントから再開するためにログ・ファイルの情報を使用します。コネクターは、ログ・ファイルを参照して、リカバリーさせるイベント・ファイルの名前や最後に処理したビジネス・オブジェクトのシーケンス番号を取得します。次にコネクターは、ログ・ファイルに記録されている最後の番号より大きいシーケンス番号が付いたイベント・ファイル内のすべてのビジネス・オブジェクトを統合ブローカーに送信します。例えば、上記のファイルの場合は、コネクターは Customer.in ファイルの 5 番目のビジネス・オブジェクトから処理を開始します。

コネクターはパフォーマンスを改善するためにログ・ファイルの内容をメモリーに保持します。そして、ログ・ファイルに新規エントリーがあり、更新するときにのみディスク上にあるこのファイルにアクセスします。コネクターはリカバリー時間にのみこのログ・ファイルを参照します。

コネクターがリカバリー処理でどのように event.log ファイルを使用するかについての情報は、障害リカバリーを参照してください。

障害リカバリー

注:
以下に示すリカバリーのための手順は、ディスクで障害が発生した場合やディスクがいっぱいの場合には適用しません。

イベント通知時に発生した障害からリカバリーするには、コネクターは以下の手順を行います。

  1. コネクターはイベント・ファイルからビジネス・オブジェクト・ストリングを処理します。コネクターはエントリーを正常に処理したときにこのエントリーを event.log ファイルに記録します。また、このエントリーを (ArchiveDir メタオブジェクト属性で指定された) アーカイブ・ディレクトリー内のファイルにも書き込みます。

    出荷時のこれらの拡張子のデフォルト値は .success および .partial です。

  2. エラーが発生すると、コネクターは以下を行います。

    コネクターは処理に失敗したビジネス・オブジェクトを event.log に記録しません。

  3. コネクターはすべてのビジネス・オブジェクトをイベント・ファイルに処理してから event.log ファイルを消去し、次のイベント・ファイルからそのファイルへの書き込みを開始します。
  4. コネクターが、イベント・ファイル内のすべてのビジネス・オブジェクトを処理する前にダウンした場合は、リカバリー処理中に処理を開始する場所を判別するために event.log 内の情報を使用します。コネクターがログ・ファイルを参照するときに、ログ・ファイル内に新規エントリーがあるかどうかをチェックします。

    ユーザーが EventRecovery 構成プロパティーを retry に設定している場合は、コネクターは始動時に、前に処理したファイルから未解決のイベントを自動的にリカバリーします。ただし、このプロパティーを abort に設定している場合は、コネクターは、リカバリーさせるイベントがある場合に始動時に終了します。

  5. イベント通知プロセスの間に発生したエラーからリカバリーするには、コネクターを再始動する必要があります。ただし、コネクターを再始動する前に以下を行ってください。

以下のガイドラインは、ユーザーが、発生したエラーのタイプに応じて実行するリカバリーの手順を判別する際に役立ちます。

ビジネス・オブジェクトの区切り文字エラーからのリカバリー

コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリーに書き込むときに、FailArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。

  1. イベント・ファイルにビジネス・オブジェクトの区切り文字が含まれ、この区切り文字に間違いがなく、それにデータ自体の区切り文字の値がテキストとして含まれないようにしてください。この区切り文字の使用法が正しくない場合は訂正してください。
  2. 処理に失敗した他の理由を特定するには、コネクターのログ・ファイル (LogFileName 構成の属性で指定されている) を参照してください。
  3. そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリーにコピーして、.fail 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前をわかりやすく変更します。例えば、Customer.failCustomer_delimiter_error.in に変更します。

サブスクリプション・エラーからのリカバリー

コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリーに格納されているファイルに書き込むときに、UnsubscribedArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。

  1. アーカイブされたファイルを開き、そのビジネス・オブジェクト・ストリングを検出して、ビジネス・オブジェクト名と動詞がサブスクライブされていることを確認してください。必要があれば適切な修正を加えます。
  2. 統合ブローカーが実行中であることを確認します。
  3. そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリーにコピーして、.unsub 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前をわかりやすく変更します。例えば、Customer.unsubCustomer_unsub_resubmit.in に変更します。

フォーマット・エラーからのリカバリー

コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリーに格納されているファイルに書き込むときに、FailArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。

  1. アーカイブされたファイルを開き、以下を確認してください。
  2. そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリーにコピーして、.fail 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前をわかりやすく変更します。例えば、Customer.failCustomer_fail_formatting.in に変更します。

送信エラーからのリカバリー

コネクターがビジネス・オブジェクトをアーカイブ・ディレクトリーに格納されているファイルに書き込むときに、FailArchiveExt メタオブジェクト属性で指定された拡張子を付けます。このような障害のリカバリーを行うには、以下を行います。

  1. ビジネス・インテグレーション・システムのすべてのコンポーネントが実行中であることを確認します。
  2. そのファイルをアーカイブ・ディレクトリーからイベント・ディレクトリーにコピーして、.fail 拡張子を EventExt 属性で指定された拡張子 (デフォルトでは .in) に変更します。レコードの保持を容易にするために、このファイルの名前をわかりやすく変更します。例えば、Customer.failCustomer_fail_sending.in に変更します。
  3. コネクターを再始動します。

データ・ハンドラーとサポートされているビジネス・オブジェクト

データ・ハンドラーが構成されていないことを示すエラーをコネクターが戻すときは、データ・ハンドラーのメタオブジェクトがサポートされているビジネス・オブジェクトのリストに含まれていることを確認してください。コネクターが最も頻繁に戻すエラーは、BOPrefix が設定されていないことを示すものです。

DHFormatter のサポートされているビジネス・オブジェクトのリストには、以下が含まれています。

Copyright IBM Corp. 2004