Web サービス・メッセージ用の SDO データ・グラフのマッピング
Web サービス・メッセージの構造は、Web サービス・メッセージ用のサービス・データ・オブジェクト (SDO) バージョン 1 データ・グラフにより記述されます。
Web サービス・メッセージの全体のレイアウト
Web サービス・メッセージは、書式制御ストリングと、operationName、messageName、および messageType の 3 つのメタデータ・フィールドで記述されます。 メッセージのペイロードは、ヘッダー、添付ファイルおよび本体という 3 つの他のセクションにまたがって 分割されています。
Info ノードが、 すべての Web サービス・メッセージ用の SDO データ・グラフの最上位です。以下の表では、Info ノードのプロパティーおよび関連タイプを説明しています。
プロパティー名 | プロパティー・タイプ | プロパティーの説明 |
---|---|---|
operationName | java.lang.String | このメッセージと関連付けられている WSDL オペレーションを識別する。データ・アクセス・サービスが メッセージを識別できない場合は、このフィールドはヌルです。 Web サービス・メッセージの識別を参照してください。 |
messageName | java.lang.String | このメッセージと関連付けられている WSDL メッセージを識別する。データ・アクセス・サービスが メッセージを識別できない場合は、このフィールドはヌルです。 Web サービス・メッセージの識別を参照してください。 |
messageType | java.lang.String | メッセージ・インスタンスの WebService タイプを識別する。このフィールドには、 input、output、fault、ambiguous の値があります。 データ・アクセス・サービスが メッセージを識別できない場合は、このフィールドはヌルです。 Web サービス・メッセージの識別を参照してください。 |
headers | データ・オブジェクトの java.util.List。 | ヘッダー・エントリー・データ・オブジェクトのリストを含みます。メッセージ内の各 SOAP ヘッダーは、 このリストにおいてヘッダー・エントリーとなります。メッセージ・ヘッダー・レイアウトを参照してください。 |
attachments | データ・オブジェクトの java.util.List。 | 添付エントリー・データ・オブジェクトのリストを含みます。添付ファイルを伴う SOAP メッセージでは、 メッセージの各 MIME パーツ (SOAP エンベロープ を含んでいる MIME パーツを除く) が、このリストのあるエントリーにマップされます。メッセージ添付レイアウトを参照してください。 |
本文 | commonj.sdo.DataObject | SOAP エンベロープの本体を表すネストされたデータ・オブジェクト。 メッセージ本体レイアウトを参照してください。 |
Web サービス・メッセージの識別
メッセージの処理は、メッセージに WSDL 定義があるかどうかに依存しています。 WSDL なしの処理に必要な最低限の情報量は、「SOAP:」です。WSDL ありの処理に必要な最低限の情報量は、「SOAP: ロケーション、名前空間、サービス、ポート」です。書式制御ストリングに、これらの 5 つのフィールドのすべてがない場合、SOAP データ・アクセス・サービスは WSDL なしでメッセージを処理しようと試みます。
- WSDL 定義なしでメッセージを処理: 書式制御ストリングに、完全な WSDL 情報がない場合、SOAP データ・アクセス・サービスは、WSDL にある定義に対してメッセージの突き合わせを試みずにメッセージを処理します。その結果、operationName および messageName にはヌルが設定され、障害メッセージを処理する場合にのみ、messageType が設定されます。
- WSDL ありでメッセージを処理: 書式制御ストリングに <WSDL location>、<Service namespace>、<Service name>、および <Port name> がある場合は、SOAP および Beans データ・アクセス・サービスは、サービスの WSDL 定義を使用してメッセージを処理します。注: 以下のいずれかの状況では、SOAP メッセージ処理は、必要なすべての WSDL 情報を提供した後に失敗します。
- SOAP データ・アクセス・サービスが WSDL を位置指定するのに失敗する
- WSDL がメッセージの確認に失敗する
SOAP データ・アクセス・サービスが SOAP 要求または応答メッセージを 処理する場合、WSDL にあるメッセージ定義に対してそれを突き合わせようと試みます。 通常は 1 つの一致する定義があり、operationName、messageName および messageType の値が適切に入力されます。 複数の一致する定義があった場合、データ・アクセス・サービスはメッセージ定義を選択し、operationName および messageName に値が入力され、messageType が ambiguous に設定されます。
障害メッセージを処理する場合は、識別がわずかに異なります。 すべてのケースにおいて、messageType には、fault が設定されることになります。メッセージが WSDL における固有の障害定義と一致した場合、operationName および messageName プロパティーも設定されることになります。
メッセージ・ヘッダー・レイアウト
ヘッダーのリストには、ヘッダー・エントリーとバインド・ヘッダー・エントリーの 2 つのタイプのエントリーがありますが、これはヘッダーがメッセージのパーツであるかどうかによって決まります。
- ヘッダーが WSDL でモデル化されているメッセージの一部である。
- ヘッダーが WSDL でモデル化されていないがメッセージの一部に基づく、メッセージの一部である。
バインド・ヘッダー・エントリー・タイプは、メッセージ用の SOAP バインディングが本体の一部を MIME 添付にバインドした場合に使用されます。(これは、添付にメッセージの一部をバインドするために、<MIME:content> エレメントを 使用する場合に起こります。) 一貫性のあるメディエーション・プログラミングのために、 すべての本体データはグラフの本体ノードに格納されています。 通常の添付エントリーとは異なり、バインド添付エントリーは添付リスト内に置かれます。バインド添付エントリーには、添付用の MIME メタデータおよびこの添付から取ったデータを含むメッセージ・パーツが含まれています。 これにより、メディエーションがデータ・グラフの本体パーツにデータを配置する ように、添付を処理するよう設計されることが可能になります。 この添付のモデルについては、バインド・ヘッダー・エントリーを参照してください。
ヘッダー・エントリー
プロパティー名 | プロパティー・タイプ | プロパティーの説明 |
---|---|---|
mustUnderstand | java.lang.Boolean | SOAP ヘッダー上の mustUnderstand 属性の値を格納します (存在する場合)。 |
actor | java.lang.String | SOAP ヘッダー上の actor 属性の値を格納します (存在する場合)。 |
任意 | commonj.sdo.Sequence | SOAP ヘッダーのコンテンツ用のコンテナー。 |
バインド・ヘッダー・エントリー
プロパティー名 | プロパティー・タイプ | プロパティーの説明 |
---|---|---|
mustUnderstand | java.lang.Boolean | SOAP ヘッダー上の mustUnderstand 属性の値を格納します (存在する場合)。 |
actor | java.lang.String | SOAP ヘッダー上の actor 属性の値を格納します (存在する場合)。 |
messagePart | java.lang.String | メッセージ・ヘッダーのデータを格納するメッセージ・パーツの名前が入っています。 |
メッセージ添付レイアウト
メッセージ添付は、 ヘッダーと同様の方法で処理され、それらのインスタンスは Info ノードの添付リストを取り込みます。
MIME 添付を処理する添付エントリーには、添付エントリーとバインド添付エントリーの 2 つのタイプがあります。
添付エントリーは、一般添付用です。添付エントリーを参照してください。
バインド添付エントリーには、本体の一部を MIME 添付内にバインドした <MIME:content> エレメントが含まれています。メディエーションをプログラミングする場合は、グラフ内のデータの配置方法を知る必要があります。 一貫性のあるメディエーション・プログラミングのために、 添付データはメッセージ本体に配置され、他の MIME メタデータを含むヘッダー・エントリーの パーツ名によって参照されます。 この添付のモデルについては、バインド添付エントリー を参照してください。
添付エントリー
プロパティー名 | プロパティー・タイプ | プロパティーの説明 |
---|---|---|
contentType | java.lang.String | 添付エントリーによって表されている MIME パーツの contentType を格納します。 |
contentTransferEncoding | java.lang.String | 添付エントリーによって表されている MIME パーツの contentTransferEncoding を格納します。 |
contentId | java.lang.String | 添付エントリーによって表されている MIME パーツの contentId を格納します。 |
data | byte[] | MIME エレメントのコンテンツをバイト配列として格納します。 |
バインド添付エントリー
プロパティー名 | プロパティー・タイプ | プロパティーの説明 |
---|---|---|
contentType | java.lang.String | 添付エントリーによって表されている MIME パーツの contentType を格納します。 |
contentTransferEncoding | java.lang.String | 添付エントリーによって表されている MIME パーツの contentTransferEncoding を格納します。 |
contentId | java.lang.String | 添付エントリーによって表されている MIME パーツの contentId を格納します。 |
messagePart | java.lang.String | この添付のデータを格納するメッセージ・パーツの名前が入っています。 |
メッセージ本体レイアウト
本体のデータ・オブジェクトの レイアウトは、サービスの WSDL によって定義されています。データ・オブジェクトのタイプは、 WSDL でのメッセージ定義から派生しています。データ・オブジェクトは、メッセージ定義において 各パーツに 1 つのプロパティーを持つことになります。各メッセージ・パーツのレイアウトは、 XML スキーマを SDO にマッピングするための規則に従っています。詳しくは、Web サービス・コード実例を参照してください。
Web サービス障害メッセージ
メッセージが障害メッセージである場合、グラフの Info ノードにある messageType フィールドは「fault」に設定され、メッセージ本体は以下のプロパティーを持つことになります。
プロパティー名 | プロパティー・タイプ | プロパティーの説明 |
---|---|---|
faultcode | javax.xml.namespace.QName | SOAP 障害エレメントの faultcode 値を格納します。 |
faultstring | java.lang.String | SOAP 障害エレメントの faultstring 値を格納します。 |
faultactor | java.lang.String | SOAP 障害エレメントの faultactor 値を格納します。 |
detail | commonj.sdo.DataObject | 詳細な SOAP 障害エレメントの子の中のコンテンツを格納します。 |