プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle B2Bユーザーズ・ガイド
12c (12.2.1.1.0)
E79339-01
目次へ移動
目次
索引へ移動
索引

前
前へ
次
次へ

K 例外処理

Oracle B2Bは、インバウンドおよびアウトバウンド・メッセージの例外を処理します。この付録では、Oracle B2Bの例外処理、エラー・メッセージおよび構造について説明します。

この付録の内容は次のとおりです。

注意:

Oracle B2Bでは、ebMS 2.0仕様で指定されている様々なエラー・コードがサポートされていません。例外メッセージに対して、Oracle B2Bはエラー・コードをUnknownに設定します。予期されるエラー・コードは次のとおりです。

ValueNotRecognized

NotSupported

Inconsistent

OtherXml

DeliveryFailure

TimeToLiveExpired

SecurityFailure

MimeProblem

Unknown

K.1 インバウンド・メッセージ

この項では、インバウンド・メッセージ・タイプを説明します。

K.1.1 リクエスト・メッセージまたはレスポンス・メッセージ

着信リクエスト、レスポンスまたは機能確認メッセージが例外になる場合、デフォルトのエラー処理設定を使用すると次の動作が発生します。

  • アプリケーションに例外メッセージが送信されます。

    例外メッセージは、IP_IN_QUEUEにエンキューされ、受信者名b2berroruserを割り当てられます。エンキューされる例外はipException.xsdに基づいており、エラー・メッセージ(errorTextが短い説明、errorDescriptionが長い説明)およびエラー・コードなどの情報を含みます。

  • 交換の仕様で指定されている場合は、取引パートナに例外メッセージが送信されます。

    取引パートナの発信アグリーメントの識別に必要な情報がある場合、例外メッセージは取引パートナに返信されます。このとき使用されるのがB2BHeader.sendExceptionというフラグです。例外メッセージを取引パートナに送信するために必要な情報を受信メッセージから取得できると、このフラグがtrueに設定されます。

  • Oracle B2Bが、交換またはドキュメント・レイヤーでスローされた例外を捕捉します。

    B2Bheader.sendExceptionフラグがtrueに設定されている場合、取引パートナの発信アグリーメントが処理され、取引パートナに例外メッセージが送信されます。

K.1.1.1 インバウンドebMS、AS1およびAS2メッセージ

着信メッセージの処理中に次のタイプのエラーが発生した場合、受信取引パートナは否定確認を送信者に送信します。

  • 復号化に失敗

  • 検証に失敗

  • アグリーメントが見つからない

  • ドキュメントの識別に失敗

  • ドキュメントの検証に失敗(など)

否定応答メッセージには、送信者側で相関付けするために、元の(リクエスト)メッセージの詳細の参照があります。

K.1.1.2 AS1メッセージのインバウンド・メッセージ・コンテンツ・タイプ処理

AS1メッセージが電子メール・サーバーから取得され、正しく処理されるためには、インバウンド・メッセージ・コンテンツ・タイプが次のいずれかである必要があります。

  • application/xml

  • enveloped

  • pkcs7-mime

  • ipart/report

  • multipart/signed

  • application/edi

たとえば、次のシナリオを考えます。

Sender: Acme admin@slc05hzo.us.mydomain.com 
Receiver: GlobalChips joe@slc05hzo.us.mydomain.com
Outbound channel: joe@slc05hzo.us.mydomain.com 
Listening channel is listening on admin@slc05hzo.us.mydomain.com

インバウンド・ペイロードの送信が、ペイロードを添付ファイルとしてadmin@slc05hzo.us.mydomain.comに電子メールを送信することによって行われる場合、レポートには次のエラー・メッセージが表示されます。

The error info was as follows, see "Inbound failed.jpg": 
Error Code: B2B-51566
Error Description: Machine Info: (slc05hzo) Description: Parse stream 
error 

K.1.2 確認メッセージ

着信確認メッセージが例外になる場合、デフォルトのエラー処理設定を使用すると次の動作が発生します。

  • アプリケーションに例外メッセージが送信されます。

    例外メッセージは、IP_IN_QUEUEにエンキューされ、受信者名b2berroruserを割り当てられます。エンキューされる例外はipException.xsdに基づいており、エラー・テキストおよびエラー・コードなどの情報を含みます。

  • 取引パートナに例外メッセージは返信されません。

K.1.3 例外メッセージ

例外メッセージが着信する場合、デフォルトのエラー処理設定を使用すると次の動作が発生します。

  • 元のメッセージは更新されてエラー発生の状態になります。着信例外が処理されて、アプリケーションに正常に配信されます。

  • 着信例外メッセージ自体が例外になる場合、アプリケーションに例外メッセージが送信されます。

    例外メッセージは、IP_IN_QUEUEにエンキューされ、受信者名b2berroruserを割り当てられます。エンキューされる例外はipException.xsdに基づいており、エラー・テキストおよびエラー・コードなどの情報を含みます。この場合、取引パートナに例外メッセージは返信されません。

例外は、デフォルトのキュー(B2B_IN_QUEUEまたはIP_IN_QUEUE)または例外メッセージ用に構成されたカスタムJMSキューに配信できます。詳細は、エラー・メッセージ配信でのカスタム例外キューの使用を参照してください。

K.2 アウトバウンド・メッセージ

アウトバウンド・メッセージの送信中にエラーが発生した(たとえば、取引パートナの識別に失敗した)場合、アプリケーションに例外メッセージが送信されます。

デフォルトのエラー処理設定を使用すると、例外メッセージはIP_IN_QUEUEにエンキューされ、受信者名b2berroruserを割り当てられます。エンキューされる例外はipException.xsdに基づいており、エラー・テキストおよびエラー・コードなどの情報を含みます。

Oracle B2Bの起動時に例外が発生すると、例外メッセージはIP_IN_QUEUEにエンキューされ、受信者名b2berroruserを割り当てられます。エンキューされる例外はipException.xsdに基づいており、エラー・テキストおよびエラー・コードなどの情報を含みます。この場合、相関IDは移入されません。

次の事項に注意してください。

  • アプリケーションに例外メッセージが返信される際のドキュメント・タイプは、元のメッセージのドキュメント・タイプではなくExceptionになります。

  • アプリケーションに例外メッセージが返信される際、inReplyToMessageIdには相関ID値が移入されます。

  • 例外メッセージの<b2bMessageId>タグ内のデータには解析不能文字が含まれますが、それらは解析されないようにCDATAセクションに格納され、XML解析エラーの発生を防いでいます。

  • インバウンド例外処理の場合、ビジネス・メッセージが常に作成され、使用可能な情報が移入されます。また、対応するワイヤ・メッセージをポイントします。ワイヤ・メッセージは、更新されてエラー発生の状態になります。アウトバウンド方向の場合、ワイヤ・メッセージが存在しないためビジネス・メッセージのみが更新されます。ただし、伝送エラーが発生した場合、ワイヤ・メッセージ表にエントリが発生します。

  • エラー・レポートは、ビジネス・メッセージのみを表示するように更新されます。インバウンドおよびアウトバウンド方向で常にビジネス・メッセージが作成されます。

K.3 エラー・メッセージ配信でのJMSキューの使用

「構成」タブで「JMSキューをデフォルトとして使用」パラメータをtrueに設定することによって、JMSキューを使用するようにB2Bを構成できます。

インバウンド・メッセージおよびアウトバウンド・メッセージの説明にあるように、デフォルトの設定では例外キューとしてAQキューIP_IN_QUEUEを使用します。デフォルトの例外キューは、カスタムJMS例外キューを構成して「例外キュー」パラメータ値として選択(参照: 「エラー・メッセージ配信でのカスタム例外キューの使用」)していないかぎり、JMSキューB2B_IN_QUEUEになります。一般的に、B2Bでは、インバウンド・メッセージをB2B_IN_QUEUEに送信し、アウトバウンド・メッセージについてB2B_OUT_QUEUEをポーリングします。

JMSキューではb2berroruserをコンシューマとして使用できないため、エラー処理で例外メッセージをフィルタ処理するために、JMSメッセージ・プロパティが使用されます。具体的には、MSG_TYPE値が3である(MSG_TYPE='3')場合、すべての例外メッセージはJMSレシーバによって受信されます。(正常なメッセージの場合、MSG_TYPE='1'。)すべてのJMSメッセージ・プロパティのタイプはstringです。

「JMSキューをデフォルトとして使用」パラメータの詳細は、表17-1を参照してください。

K.4 エラー・メッセージ配信でのカスタム例外キューの使用

この項では、カスタムJMS例外キューを作成する手順について説明します。

カスタムJMS例外キューを作成するには、次の手順を実行してください。

  1. 図K-1に示すように、「パートナ」「チャネル」タブで、ホスト取引パートナのJMS内部デリバリ・チャネル(JMSキューまたはJMSトピック)を構成することによって、カスタムJMS例外キューを作成できます。

    図K-1 カスタム例外キューの作成

    図K-1の説明が続きます
    「図K-1 カスタム例外キューの作成」の説明
  2. 「構成」タブで、「例外キュー」パラメータからキューを選択します。「例外キュー」ドロップダウンに、ホスト取引パートナからのすべてのJMS内部デリバリ・チャネルが表示されます。

    このパラメータのNULLデフォルト値は、「JMSキューをデフォルトとして使用」がtrueに設定されている場合はJMSキューB2B_IN_QUEUEが例外キューであり、「JMSキューをデフォルトとして使用」がfalseに設定されている場合はAQキューIP_IN_QUEUEが例外キューであることを意味します。

選択されたカスタム例外キューへの例外メッセージの配信にB2Bが失敗した場合、例外メッセージはデフォルトの内部デリバリ・チャネルに送信されます。

「例外キュー」パラメータの詳細は、表17-1を参照してください。

K.5 インバウンド例外処理のシナリオ

この項では、インバウンド例外処理のシナリオを説明します。

表K-1 インバウンド例外処理のシナリオ

例外発生の原因 Oracle B2Bの処理

交換の識別に失敗、または交換が未サポート

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー発生状態として更新

  • ワイヤ・メッセージに対しエラー発生の状態でビジネス・メッセージを作成

  • 交換レイヤーでsendExceptionフラグが設定されている場合、取引パートナにトランスポート・エラー・メッセージを送信

メッセージの解凍に失敗

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー発生状態として更新

  • ワイヤ・メッセージに対しエラー発生の状態でビジネス・メッセージを作成

着信メッセージのデコードに失敗

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー発生状態として更新

  • ワイヤ・メッセージに対しエラー発生の状態でビジネス・メッセージを作成

  • 交換レイヤーにsendExceptionフラグが設定されている場合は、取引パートナに例外メッセージを送信

メッセージが重複

  • ミドルウェアに通知

  • ワイヤ・メッセージを重複メッセージ・エラーとして更新

  • ワイヤ・メッセージに対し重複メッセージとしてビジネス・メッセージを作成

ドキュメントの識別に失敗

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー発生状態として更新

  • ワイヤ・メッセージに対しエラー発生の状態でビジネス・メッセージを作成

  • 交換レイヤーにsendExceptionフラグが設定されている場合は、取引パートナに例外メッセージを送信

着信取引パートナ・アグリーメントの処理に失敗

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー発生状態として更新

  • ワイヤ・メッセージに対しエラー発生の状態でビジネス・メッセージを作成

  • 交換レイヤーにsendExceptionフラグが設定されている場合は、取引パートナに例外メッセージを送信

着信ドキュメントの処理に失敗

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー発生状態として更新

  • ワイヤ・メッセージに対しエラー発生の状態でビジネス・メッセージを作成

  • 交換レイヤーにsendExceptionフラグが設定されている場合は、取引パートナに例外メッセージを送信

次の事項に注意してください。

  • 取引パートナに例外が返信されるのは、RosettaNet交換の場合のみです。その他の交換の場合は、それぞれの仕様で規定されているように失敗が報告されます。たとえば、ebMS交換では、定義されているエラー・リストとともに確認が送信されます。AS2交換では、エラーを示す確認が送信されますが、例外の詳細は送信されません。

  • 確認を除くすべてのメッセージ・タイプについて、取引パートナに例外が返信されます。

K.6 例外ペイロード定義

この項では、例外ペイロードipException.xsdの定義を示します。

例K-1 例外ペイロード定義

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://integration.oracle.com/B2B/Exception"
targetNamespace="http://integration.oracle.com/B2B/Exception">
 
  <xs:element name="Exception">
    <!--xs:complexType name="Exception"-->
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="correlationId"/>
        <xs:element ref="b2bMessageId"/>
        <xs:element ref="errorCode"/>
        <xs:element ref="errorText"/>
        <xs:element ref="errorDescription"/>
        <xs:element ref="errorSeverity"/>
        <xs:element ref="errorDetails" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="correlationId" type="xs:string"/>
  <xs:element name="b2bMessageId" type="xs:string"/>
  <xs:element name="errorCode" type="xs:string"/>
  <xs:element name="errorText" type="xs:string"/>
  <xs:element name="errorDescription" type="xs:string"/>
  <xs:element name="errorSeverity" type="xs:string"/>
  <xs:element name="errorDetails">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="parameter" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="parameter">
    <xs:complexType>
      <xs:attribute name="name" type="xs:string" use="required" /> 
      <xs:attribute name="value" type="xs:string" use="required" /> 
    </xs:complexType>
  </xs:element>
</xs:schema>

K.7 AS4ベースのメッセージ・エラー

この項では、AS4ベースのメッセージ・エラーについて説明します。これには、SOAPフォルトとebMSエラーが含まれます。

SOAPフォルト

受信側のパートナは、メッセージ処理のエラーをSOAPフォルトとして送信者にレポートします。エラー・メッセージは、同じ接続を使用して送信側のMSHに送信されます。また、バックエンド・アプリケーションもエラーについての通知を受け取ります。

ebMS Error

表K-2に示したエラー・コードは、ebMS V3エラー・コードのセットを拡張して、AS4の追加機能をサポートするためのものです。

表K-2 ebMS V3のエラー・コード

エラー・コード 簡単な説明 説明またはセマンティクス

EBMS:0301

MissingReceipt

このエラーを生成しているMSHが前に送信したメッセージに対する受領通知が受信されていません。

EBMS:0302

InvalidReceipt

このエラーを生成しているMSHが前に送信したメッセージに対する受領通知は受信されていますが、その内容がメッセージの内容と一致しません。たとえば、一部が確認されていない場合や、関連するダイジェストが署名ダイジェストと一致していない場合などです(NRRの場合)。

EBMS:0303

Decompression-Failure

圧縮解除中にエラーが発生しました。