ヘッダーをスキップ
Oracle Fusion Middleware Oracle B2Bユーザーズ・ガイド
11g リリース1(11.1.1)
B61381-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

D 例外処理

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

ここでは、次の項目について説明します。

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

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

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

受信リクエスト・メッセージ、レスポンス・メッセージまたは機能確認メッセージで例外が発生すると、デフォルトのエラー処理設定を使用している場合は、次のアクションが発生します。

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

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

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

    発信取引パートナ・アグリーメントを特定できる十分な情報がある場合にのみ、例外メッセージは取引パートナに送信されます。このために、フラグB2BHeader.sendExceptionを使用します。例外メッセージを取引パートナに送信するための十分な情報が受信メッセージから抽出されると、フラグがtrueに設定されます。

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

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

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

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

  • 復号化に失敗

  • 検証に失敗

  • アグリーメント未検出

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

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

否定確認メッセージには、送信者側で相関付けるために、元の(リクエスト)メッセージの詳細に対する参照が含まれています。

D.1.2 確認メッセージ

受信確認メッセージで例外が発生すると、デフォルトのエラー処理設定を使用している場合は、次のアクションが発生します。

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

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

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

D.1.3 例外メッセージ

受信例外メッセージでは、デフォルトのエラー処理設定を使用している場合は、次のアクションが発生します。

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

  • 受信例外メッセージ自体で例外が発生すると、例外メッセージがアプリケーションに送信されます。

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

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

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

アウトバウンド・メッセージの送信中に例外(取引パートナの識別に失敗するなど)が発生すると、例外メッセージがアプリケーションに送信されます。 デフォルトのエラー処理設定を使用している場合、例外メッセージはIP_IN_QUEUEにエンキューされ、受信者名はb2berroruserになります。エンキューされる例外はipException.xsdに基づいており、エラー・テキストおよびエラー・コードなどの情報を含みます。

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

次に注意事項を記載します。

D.3 エラー・メッセージ配信に対するJMSキューの使用

D.1項およびD.2項で説明したように、デフォルトの設定では、例外キューとしてAQキューであるIP_IN_QUEUEが使用されます。 JMSキューを使用するようにB2Bを構成するには、「構成」タブで「JMSキューをデフォルトとして使用」パラメータを「true」に設定します。 カスタムのJMS例外キューを構成し、そのキューを「例外キュー」パラメータの値として選択しないかぎり、JMSキューであるB2B_IN_QUEUEがデフォルトの例外キューになります(D.4項「エラー・メッセージ配信に対するカスタム例外キューの使用」を参照)。B2Bでは通常、インバウンド・メッセージはB2B_IN_QUEUEに送信され、アウトバウンド・メッセージはB2B_OUT_QUEUEでポーリングされます。

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

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

D.4 エラー・メッセージ配信に対するカスタム例外キューの使用

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

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

Description of Figure D-1 follows
「図D-1 カスタム例外キューの作成」の説明

次に、「構成」タブの「例外キュー」パラメータからキューを選択します。 「例外キュー」ドロップダウンに、ホスト取引パートナからのすべてのJMS内部デリバリ・チャネルがリストされます。

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

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

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

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

表D-1に、インバウンド例外処理のシナリオを示します。

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

例外発生の原因 . . Oracle B2Bによる処置 . .

交換の識別に失敗、または交換がサポートされていない

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー状態に更新

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

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

メッセージの解凍に失敗

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー状態に更新

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

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

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー状態に更新

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

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

メッセージが重複

  • ミドルウェアに通知

  • ワイヤ・メッセージを重複メッセージ・エラー状態に更新

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

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

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー状態に更新

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

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

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

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー状態に更新

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

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

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

  • ミドルウェアに通知

  • ワイヤ・メッセージをエラー状態に更新

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

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


次に注意事項を記載します。

D.6 例外ペイロードの定義

例D-1に、例外ペイロードipException.xsdの定義を示します。

例D-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>