この章では、エラー状態を解釈し、Oracle Enterprise Service Busで処理する方法について説明します。Oracle ESB Controlの「インスタンス」ビューを使用すると、Enterprise Service Bus内で発生したエラー状態を表示および管理できます。
項目は次のとおりです。
エラー状態の詳細は、Oracle Enterprise Managerでログ・ファイルを表示して確認することもできます。 「ログ・ファイルの確認」を参照してください。
Oracle Enterprise Service Busでの処理中に発生したエラーは、Oracle ESB Controlでは、アイコンや色の変化などの視覚的な方法で表現されます。 図9-4、図9-5および図9-6を参照してください。 電子メール、FAXまたは電話によるエラーの発生通知を設定することもできます。 「通知チャネルの設定」を参照してください。
Oracle Enterprise Service Busでのエラー処理は、トランザクション処理で発生する可能性があるいくつかのタイプのエラーに関連しています。
アプリケーション・フォルトまたはビジネス・フォルト
再試行可能な例外: 通常は比較的短時間で解決するが、メッセージのルーティングに影響を与える一時的なサービスの損失
致命的な例外: 使用不可もしくは削除されたサービスやシステム、メモリー不足の状態、またはシステム管理者による手当てを必要とする重大なエラーの原因となるその他の深刻な問題
エラー処理では、ルーティング・サービスに指定した実行が非同期か、同期かによって処理方法が異なります。 同期実行で発生したエラーはロールバックされ、Oracle ESB Controlでは再試行できません。一方、非同期実行で発生したエラーは再送信できます。 非同期および同期での実行の詳細は、「同期または非同期実行の指定」を参照してください。
同期実行の場合は、トランザクションがロールバックされ、エラー通知はその処理を開始したアダプタに戻されます。 エラーおよび再送信を処理するには、呼出しアダプタが必要です。 「インバウンド・アダプタのエラー処理」を参照してください。
非同期実行の場合、ユーザーは、エラー状態の解決後にトランザクションを再送信できます。 「ユーザーによるエラー処理」を参照してください。
この項では、Oracle Enterprise Service Busで発生したエラー状態を管理する方法について説明します。
項目は次のとおりです。
インバウンド・アダプタでは、アダプタのデフォルトのエラー処理プロセスを使用して例外およびフォルトを処理します。
デフォルトでは、アダプタは、1つのエラー状態について、3回のメッセージを5秒間隔で再試行します。 再試行の回数と間隔は、アダプタ・サービスのエンドポイント・プロパティで指定できます。 エンドポイント・プロパティについては、「エンドポイント・プロパティの使用」を参照してください。
インバウンド・アダプタが、ある特定期間の間に連続してルーティング・サービスの呼出しに失敗した場合は、そのインバウンド・アダプタ自体に破損というマークが付けられて無効となります。 Oracle ESB Controlでは、このイベント・ソースが使用不可の状態であることを視覚的に表すために、特別なアイコンが表示されます。 このアダプタ・サービスは有効にできます。
インバウンド・アダプタが呼び出す次のサービスが、削除または無効のために存在しない場合、インバウンド・アダプタ・プロセッサは自身を無効にして破損のマークを付けます。
サブスクリプションがある特定期間の間に連続して失敗した場合、サービスは、そのサブスクリプションに破損状態のマークを付けるようにリポジトリに通知します。 ディスパッチャは、この破損のマークが付けられた後のサブスクリプションをディスパッチしません。
無効なサービスはすべて管理者に通知されます。
エラー管理の説明も含めたアダプタの詳細は、『Oracle Application Server Adapter概要』を参照してください。
メッセージ・インスタンスの処理中に発生したエラーは、Oracle ESB Controlの「インスタンス」ビューにある「トラッキング」タブに、赤色のサービス・アイコンで示されます。
「トラッキング」タブのエラー状態は、図10-1のように表示されます。
図10-3に示すように、「エラー」タブの「メッセージ」列にあるエラーの詳細アイコンをクリックすると、エラー・メッセージ、トレース、ペイロードの詳細を表示できます。
図10-2は、「エラーの詳細」ダイアログの例です。
エラーの詳細を確認してエラー状態を修正した後は、このメッセージを呼出しサービスに再送信できます。
実行時におけるペイロードの検証の有効化については、「サービス定義の表示」の表3-6を参照してください。
状況によっては、メッセージ・インスタンスの再送信が可能です。 ルーティング・ルールが非同期実行に設定されている場合は、通常、エラー状態を修正した後で、メッセージ・インスタンスを再送信できます。
エラーに関するメッセージを再送信する手順は、次のとおりです。
メッセージ・インスタンス処理を表示するには、Oracle ESB Controlの上部の「インスタンス」アイコンをクリックします。
「インスタンス」ビューの「インスタンス」パネルで、エラーが発生したメッセージ・インスタンスをクリックします。
「エラー」タブをクリックして、エラー情報を表示します。
「メッセージ」列の下にある「エラーの詳細」アイコンをクリックし、「エラーの詳細」ダイアログに、エラー状態に関するエラー・メッセージ、トレースおよびペイロードの詳細を表示します。
エラー・メッセージの詳細を確認した後は、「OK」をクリックして「エラーの詳細」ダイアログを閉じます。
「エラー」タブで、エラー状態を修正して「再送信」をクリックします。
たとえば、メッセージ・ペイロードが不適切な場合は、「再送信ペイロード」ウィンドウでそのメッセージ・ペイロードを編集し、「再送信」をクリックします。
図10-3は、再送信されたメッセージ・インスタンスの例です。