コネクターには、イベント処理を行うプロトコル・リスナー・フレームワークと要求処理を行うプロトコル・ハンドラー・フレームワークがあります。コネクター・フレームワークでは、この双方向の機能を利用して以下のことが可能になります。
SOAP データ・ハンドラーについて詳しくは、SOAP データ・ハンドラーを参照してください。
コネクター・イベント処理 (またはイベント通知) は、Web サービスからの要求を処理するために使用します。このイベント処理機能は、以下のコンポーネントを含む、プロトコル・リスナー・フレームワークを採用しています。これらのコンポーネントについては、この章の後半でさらに詳しく説明します。
コネクターはリスナーを使用して、コラボレーションを Web サービスとして公開し、Web サービス・クライアントから公開済みコラボレーションへの呼び出しのためのトランスポートを listen します。
SOAP/HTTP および SOAP/HTTPS プロトコル・リスナーは、コラボレーションを SOAP/HTTP Web サービスとして公開します。SOAP/JMS プロトコル・リスナーは、コラボレーションを SOAP/JMS Web サービスとして公開します。
Web サービス・クライアントからの要求が到着すると、リスナーは、SOAP 要求メッセージをビジネス・オブジェクトに変換し、コラボレーションを呼び出します。これが同期要求である場合、コネクターは同一タイプの応答ビジネス・オブジェクトを、要求ビジネス・オブジェクトとして受信します。リスナーは、応答ビジネス・オブジェクトを SOAP 応答メッセージに変換します。リスナーは、次に SOAP 応答メッセージを Web サービス・クライアントにトランスポートします。イベントの順序付けは、このコネクターの要件ではないので注意してください。つまり、コネクターはイベントをどのような順序でもデリバリーできます。
Web サービス・コネクターは、SOAP データ・ハンドラーを使用して、着信した SOAP 要求メッセージをビジネス・オブジェクトに変換します。着信した SOAP 要求メッセージをどのビジネス・オブジェクトで解決すべきか、データ・ハンドラーが判別できるように、コネクターは、サポートされているビジネス・オブジェクトに関するメタ情報をデータ・ハンドラーに提供します。コネクターはまず最初に、サポートされているビジネス・オブジェクトの中から変換の候補となるすべてのビジネス・オブジェクトのリストを作成します。このリストは、TLO と非 TLO の両方から構成される可能性があります。サポートされている TLO ビジネス・オブジェクトは、オブジェクト・レベル ASI が ws_eventtlo=true のビジネス・オブジェクトです。
TLO を使用する場合、プロトコル・リスナーは、以下のようにして TLO のオブジェクト・レベル ASI を読み取ります。
非 TLO を使用する場合、プロトコル・リスナーは、WSDL 構成ウィザードにより生成された WSCollaborations 構成プロパティー値から、コラボレーションおよび処理モードを読み取ります。
コネクターは SOAP 要求の BodyName と BodyNamespace を変換候補のビジネス・オブジェクトの名前と比較し、突き合わせます。TLO の場合、この BodyName/BodyNamespace のペアは、SOAP 要求ビジネス・オブジェクトの SOAP 構成 MO プロパティーを使用して検出されます。非 TLO の場合、BodyName/BodyNamespace のペアは、WSCollaborations コネクター構成プロパティーを使用して検出されます。(コネクターは、WSCollaborations プロパティーにエントリーのある 非 TLO の場合のみを検討しますので注意してください。) データ・ハンドラーは、この BodyName/BodyNamespace ペアを用いて、SOAP 要求をビジネス・オブジェクトに変換する際に使用するビジネス・オブジェクトを判別します。
コネクターは SOAP データ・ハンドラーから戻された要求ビジネス・オブジェクトを検査します。このビジネス・オブジェクトに ws_tloname ASI が存在する場合は、コネクターはこの TLO に要求ビジネス・オブジェクトを設定します。この TLO はコラボレーションを呼び出すために使用されます。ただし、この ASI が設定されていなければ、コネクターは、SOAP データ・ハンドラーから戻された要求ビジネス・オブジェクトを使用して、コラボレーションを呼び出します。
コラボレーションを同期実行する場合、コネクターは SOAP データ・ハンドラーを使用して、クライアントに戻す SOAP 応答または障害メッセージを作成します。この場合、コネクターは、SOAP ビジネス・オブジェクト (TLO の子) または非 TLO のいずれかをデータ・ハンドラーに渡すだけです。SOAP データ・ハンドラーは、渡されたビジネス・オブジェクトに基づいて SOAP メッセージを戻します。
コネクターは、コラボレーションのために、SOAP/HTTP(S) および SOAP/JMS を介して Web サービスを呼び出すことができます。この要求処理機能は、WSDL Object Discovery Agent (ODA) およびプロトコル・ハンドラー・フレームワークによってサポートされています。WSDL ODA は、ターゲット Web サービスに関する情報を持つ SOAP ビジネス・オブジェクトを生成する際に使用する設計時ツールです。詳しくは、要求処理のためのコラボレーションの有効化を参照してください。プロトコル・ハンドラー・フレームワークは、以下のコンポーネントから成る、構成可能なランタイム・モジュールです。これらのコンポーネントについては、この章の後半でさらに詳しく説明します。
プロトコル・ハンドラー・フレームワークは、コラボレーションの要求ビジネス・オブジェクト (WSDL ODA を介して常に TLO に設定されている) を受け取ると、該当するプロトコル・ハンドラーをロードします。プロトコル・ハンドラーは、Web サービスの呼び出しおよび (オプションで) 応答の保護に必要なトランスポート・レベルの詳細を管理し、コラボレーション要求ビジネス・オブジェクトの SOAP 要求メッセージへの変換、要求メッセージによるエンドポイント Web サービスの呼び出し、および SOAP 応答メッセージのビジネス・オブジェクトへの変換ならびにそのオブジェクトのコラボレーションへのリターン (要求/応答 (同期) モードの場合)、という 3 つの主要なタスクを実行します。コネクターは、SOAP/HTTP-HTTPS プロトコル・ハンドラーを使用して SOAP/HTTP(S) Web サービスを呼び出し、SOAP/JMS プロトコル・ハンドラーを使用して SOAP/JMS Web サービスを呼び出します。
Web サービス・コネクターは常に TLO を使用してコラボレーションから呼び出されます。コネクターは、TLO から SOAP 要求ビジネス・オブジェクトを判別して、このビジネス・オブジェクトにより SOAP データ・ハンドラーを呼び出します。データ・ハンドラーは、コネクターにより送信された要求メッセージを Web サービスに戻します。
Web サービスを同期実行する場合、コネクターは SOAP データ・ハンドラーを使用して、SOAP 応答および障害メッセージをそれぞれ SOAP 応答ビジネス・オブジェクトおよび障害ビジネス・オブジェクトに変換します。データ・ハンドラーが、これらの SOAP 応答/障害をビジネス・オブジェクトに変換する際に、どのビジネス・オブジェクトにより解決すべきかを判別できるようにするために、コネクターは、特定のメタ情報をデータ・ハンドラーに提供します。具体的には、コネクターは、呼び出し側の TLO の子であるすべての応答および障害ビジネス・オブジェクトのリストを作成します。応答ビジネス・オブジェクトは 1 つだけ存在している必要があり、オプションで多数の障害ビジネス・オブジェクトが存在します。defaultfault ビジネス・オブジェクトが 1 つだけ存在している場合もあります。コネクターは SOAP の BodyName と BodyNamespace をすべての応答ビジネス・オブジェクトのリスト内にあるビジネス・オブジェクト名と突き合わせ、次にマップします。SOAP 応答ビジネス・オブジェクトの場合、このペアは、SOAP 応答ビジネス・オブジェクトの SOAP 構成 MO プロパティーを使用して検出されます。SOAP 障害ビジネス・オブジェクトの場合、このペアは、詳細エレメントの最初の子の elem_name および elem_ns 属性レベル ASI プロパティーを使用して検出されます。defaultfault ビジネス・オブジェクトの場合、コネクターは、データ・ハンドラーに defaultfault ビジネス・オブジェクトの名前を通知するだけです。この変換で解決する障害ビジネス・オブジェクトが他にない場合、最後の手段として、データ・ハンドラーによって defaultfault ビジネス・オブジェクトを解決する必要があります。