以下のセクションでは、データ・ハンドラーの制約事項について説明します。
SOAP メッセージは、Web サービスによって定義された Style および Use に基づいて作成されます。SOAP データ・ハンドラーが提供するサポートのレベルは、表 47 に示すとおりです。
Style | Use | パーツを定義するもの | データ・ハンドラーのサポート |
---|---|---|---|
document | literal | element | 完全 |
document | literal | type | 限定 (下記を参照) |
document | encoded | element | なし |
document | encoded | type | 限定 (下記を参照) |
rpc | literal | element | なし |
rpc | literal | type | 完全 |
rpc | encoded | element | なし |
rpc | encoded | type | 完全 |
SOAP データ・ハンドラーが SOAP メッセージをビジネス・オブジェクトに変換する際に、SOAP メッセージが document/literal/type または document/encoded/type のフォーマットに従う場合、メッセージのパーツは、WSDL で記述されたとおりの順序になっていなければなりません。例えば、次の WSDL を検討してください。
<operation name="GetQuote" style="document" ...> <input> <soap:body parts="Part1 Part2 Part3 Part4" use="literal"> </input> </operation> <definitions xmlns:stns="(SchemaTNS)" xmlns:wtns="(WsdlTNS)" targetNamespace="(WsdlTNS)"> <schema targetNamespace="(SchemaTNS)" elementFormDefault="qualified"> <element name="SimpleElement" type="xsd:int"/> <element name="CompositElement" type="stns:CompositeType"/> <complexType name="CompositeType"> <all> <element name='elem_a' type="xsd:int"/> <element name='elem_b' type="xsd:string"/> </all> </complexType> </schema> <message...> <part name='Part1' type="stns:CompositeType"/> <part name='Part2' type="xsd:int"/> <part name='Part3' element="stns:SimpleElement"/> <part name='Part4' element="stns:CompositeElement"/> </message> Ö </definitions>
SOAP メッセージは、パーツによって定義された順序に従うわなければなりません。下の SOAP 例では、Part1 要素が Part2、Part3、および Part4 要素に先行しています。正しいビジネス・オブジェクト解決を行うためには、この順序を維持しなければなりません。
<soapenv:body... xmlns:mns="(MessageNS)" xmlns:stns="(SchemaTNS)"> <stns:elem_a>123</stns:elem_a> <stns:elem_b>hello</stns:elem_b> <soapenc:int>123</soapenc:int>123</soapenc:int>123</soapenc:int> <stns:SimpleElement>123</stns:SimpleElement> <stns:CompositeElement> <stns:elem_a>123</stns:elem_a> <stns:elem_b>hello</stns:elem_b> </stns:CompositeElement> </soapenv:body>
SOAP メッセージが document/literal/type フォーマットまたは document/encoded/type フォーマットに従う場合、パーツ要素も定義された順序に従う必要があります。上の例の Part1 で、elem_a タグは elem_b タグの前になければなりません。この制約は、データ・ハンドラーのビジネス・オブジェクト解決プロセスで指示されています。document スタイルの場合のデフォルトのビジネス・オブジェクト解決には、最初の要素の本文の名前およびネーム・スペースが使用されるため、これらを、特定の要求、応答、または障害に関するすべての SOAP メッセージで同じ要素になるようにして、要求、応答、または障害のいずれの場合にも同じビジネス・オブジェクトに解決されるようにする必要があります。
以下の XML 構造、機能、および表記はサポートされません。