この付録では、Oracle JDeveloperとOracle B2Bを構成してOracle B2Bで同期リクエスト/リプライのサポートを有効化する方法について説明します。
この付録には次のトピックがあります。
Oracle B2Bでは、ファブリックからOracle B2Bへの同期リクエスト/リプライがサポートされています。ただし、初回リリースでサポートされているのは、HTTPトランスポートのみです。図C-1に、エンドツーエンドのシナリオを示します。
送信者を構成するには、次のタスクを実行する必要があります。
Oracle JDeveloperでB2B構成ウィザードを使用して、同期リクエスト/リプライをサポートするための送信者を構成する必要があります。
Oracle B2Bコンソールで、次を実行する必要があります。
Oracle B2Bアグリーメントの設定: アグリーメントを2つ定義する必要があります。図C-4に示すように、一方のアグリーメントはリクエスト送信用、もう一方のアグリーメントはレスポンス受信用にそれぞれ必要です。ここで設定する必要があるOracle B2Bのプロパティはありません。ファブリックからOracle B2Bへのコールに基づいて、メッセージ・タイプは「同期リクエスト」に決定します。
取引パートナ・チャネルの作成: 図C-5
に示すように、リモート取引パートナ・チャネルを作成し、http://
server:port/b2b/syncreceiverを指すように設定する必要があります。これは、2つのOracle B2B製品間で通信が行われる場合に必要です。通信が2つの異なるB2B製品間で行われる場合、URLが変わることに注意してください。
受信者を構成するには、次のタスクを実行する必要があります。
Oracle JDeveloperでB2B構成ウィザードを使用して、同期リクエスト/リプライをサポートするための受信者を構成する必要があります。
Oracle B2Bコンソールで、次を実行する必要があります。
Oracle B2Bアグリーメントの設定: アグリーメントを2つ定義する必要があります。図C-8に示すように、一方のアグリーメントはリクエスト受信用、もう一方のアグリーメントはレスポンス送信用にそれぞれ必要です。ここで設定する必要があるOracle B2Bのプロパティはありません。同期HTTP受信者によって、メッセージ・タイプは「同期リクエスト」に決定します。
ダミー取引パートナ・チャネルの作成: ダミー・リモート取引パートナ・チャネルを作成する必要がありますが、このチャネルは実行時は使用されません。任意のURL値を指定できますが、図C-9
に示すように、http://
host:port/xyzの書式で指定する必要があります。
同期リクエストまたは同期レスポンスの再発行は、アプリケーション側から実行する必要があります。Oracle B2Bコンソールで、Oracle B2Bからアプリケーション・メッセージまたはワイヤ・メッセージを再発行することはできますが、メッセージは非同期モードで再発行されます。メッセージ処理ロジックが非決定性である場合があります。たとえば、送信者側であるOracle B2Bからアプリケーション・メッセージまたはワイヤ・メッセージが再発行された場合、このメッセージはhttp://
server:port
/b2b/syncreceiver
にポストされます。受信者側のOracle B2Bはこのメッセージを非同期リクエストまたは非同期レスポンスとして処理します。送信者側ではレスポンス・メッセージは無視されます。
非同期リクエスト/レスポンス・メッセージ・パターンでは、SOAコンポジットは、メッセージをB2Bに送信し、それに対してB2Bはメッセージを取引パートナ(TP)に送信します。ただし、B2Bが同期HTTP接続でTPからいかなるペイロードも受信しない場合、SOAコンポジットはB2BがTPへのメッセージの送信に成功したかどうか、コンポジットがB2Bから確認を受信しないため確認できません。
一般的に、コンポジットがコール・スレッドでエラーを受信しない場合、同期コールは正常に終了したとみなされます。ただし、B2Bがペイロードの送信に成功したことを確認するには、SOAコンポジットが肯定レスポンス・メッセージをB2Bから受信する必要があります。この時、TPはペイロードの受信を確認済で、HTTPステータスがOKで、リクエスト/リプライ・メカニズムが関連付けられたペイロードではありません。
b2b.defaultsyncHTTPResponseという名前の新しいB2Bプロパティを使用すると、SOAコンポジットは、B2Bから肯定メッセージを受信できます。これは、グローバル・フラグです。
たとえば、新しいパラメータ、b2b.defaultsyncHTTPResponse=<Status>OK</Status> or b2b.defaultsyncHTTPResponse=OKを追加できます。
TPが、これをトランスポート・レベルのHTTPステータスがOK (200)と確認し、ペイロードがない場合、B2BはEMプロパティのコンテンツをペイロードにインバウンドとして構築し、SOAコンポジットに渡します。
b2b.defaultsyncHTTPResponse B2Bプロパティを使用するには、次の事前条件を満たしている必要があります。
HTTPトランスポートを同期モードに設定します。これにより、b2b.defaultsyncHTTPResponseで構成された値が、コンポジットに返ります。
対応するドキュメント定義およびアグリーメントを設定します。これにより、レスポンス値がコンポジットに帰る途中で処理されます。また、B2B同期呼出しに対するコンポジットは、同期リクエスト/リプライです。
次の手順を実行して、ペイロードのないSOAコンポジットに対するHTTPレスポンスを定義します。
「管理」ページで、「カスタム」・プロトコルにドキュメントを作成します。「カスタム」・プロトコルにドキュメントを作成する方法の詳細は、このガイドの第8章の「カスタム・ドキュメント・プロトコルの使用」の項を参照してください。
次の詳細を使用します。
カスタム・バージョンを作成します: 例: "1.0"
バージョン1.0の下に「ドキュメント」を作成します: 例: 'SyncResp'
「ドキュメント」下に、「ドキュメント定義」を作成します: "SyncRespDef"に次のように定義します。
識別タイプ: 「XML」または「フラット」のいずれか
「XML」の場合、次のようになります。
「識別式(XPath)」: //Status
識別値: OK
「フラット」の場合、次のようになります。
識別開始位置: 1
識別終了位置: 2
識別値: OK
ドキュメントのdefタイプが、XMLと識別された場合は、次のようにします。
b2b.defaultsyncHTTPResponseを" <Status>OK</Status>"に設定します。
ドキュメントのdefタイプが、「フラット」と識別された場合は、次のようにします。
b2b.defaultsyncHTTPResponseを"OK"に設定します。
カスタム・ドキュメント・プロトコルの取引パートナに関連付けられたアグリーメントを作成します。
汎用識別子を、ホストおよびリモートの取引パートナに追加します。