15.1.4 メッセージのパートからパラメタおよび戻り値へのマッピング(wrapperスタイルの場合)

WSDLのメッセージのパート(wsdl:message要素のwsdl:part子要素)からJavaのメソッドのパラメタおよび戻り値へのマッピングについて説明します。

ここでは,wrapperスタイルの場合について説明します。

<この項の構成>
(1) マッピング
(2) wrapper子要素名の条件
(3) 複数のwrapper子要素が同一のwrapper子要素となる条件
(4) 複数のwrapper 子要素を記述した場合の注意事項
(5) パラメタへのマッピングの注意事項
(6) 戻り値へのマッピングの注意事項

(1) マッピング

マッピングするときに,request-responseオペレーションまたはone-wayオペレーションのどちらの場合でも,WSDLのwrapper子要素名の先頭文字は小文字に変換されます。

(変換前)WrapperName   (変換後)wrapperName

(2) wrapper子要素名の条件

wrapper子要素名には,次の表に示すすべての条件を満たす文字列を記述できます。ただし,バインディング宣言でカスタマイズする場合は,XML Schema仕様のxsd:NCName型として使用できる文字列を記述できます。

表15-9 wrapper子要素名に記述できる文字列の条件(wrapperスタイル)

項番条件不正な文字列の例不正な文字列を指定した場合の動作
1半角英数字(0~9,A~Z,a~z),およびアンダースコア(_)だけを使用した文字列鈴木_wrapper動作は保証されません(エラーメッセージは出力されません)。
2Javaの予約語以外の文字列abstract標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51018-E)。
3先頭が数字以外の文字列1User_wrapper標準エラー出力とログにエラーメッセージが出力され,処理が終了されます。
注※
「Abstract」のように,Java予約語の先頭文字を大文字にした文字列も記述できません(マッピングによって先頭文字が小文字に変換されるため)。

(3) 複数のwrapper子要素が同一のwrapper子要素となる条件

inputメッセージまたはoutputメッセージに出現するwrapper子要素をWSDL内に複数記述した場合,wrapper子要素のローカル名とXML Schemaの型が同じか異なるかによって,wrapper子要素の扱いは次の表のとおり異なります。

表15-10 wrapper子要素のローカル名とXML Schemaの型によって異なるwrapper子要素の扱い

項番wrapper子要素のローカル名wrapper子要素のXML Schema型wrapper子要素の扱い
1ローカル名が同じ場合XML Schema型が同じ場合同じwrapper子要素として扱われます。それぞれのwrapper子要素が,xsd:element要素のref属性で間接的に同じグローバル要素を参照している場合も,同じwrapper子要素として扱われます。
2XML Schema型が異なる場合別のwrapper子要素として扱われます。
3ローカル名が異なる場合XML Schema型が同じ場合別のwrapper子要素として扱われます。
4XML Schema型が異なる場合

(4) 複数のwrapper 子要素を記述した場合の注意事項

複数の同じwrapper子要素と,異なるwrapper子要素を複合型の子要素として同時にWSDLファイルに定義している場合,そのWSDLファイルを指定してcjwsimportコマンドに実行したときに,SEIがnon-wrapperスタイルでマッピングされます。

SEIがnon-wrapperスタイルでマッピングされるWSDLファイルの例を次に示します。

<wsdl:definitions name="TestJaxWsService"
                 xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                 xmlns:tns="http://example.com/example"
                 targetNamespace="http://example.com/example">

  <xsd:element name="getUserData" type="tns:getUserData"/>
   ...
  <xsd:complexType name="getUserData">
    <xsd:sequence>
      <xsd:element name="in0"  type="xsd:string"/>
      <xsd:element name="in0"  type="xsd:string"/>
      <xsd:element name="hoge" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  ...
 </xsd:schema>
</wsdl:types>
...
<wsdl:message name="getUserDataRequest">
 <wsdl:part name="inputParameters" element="tns:getUserData"/>
</wsdl:message>
...
</wsdl:definitions>

(5) パラメタへのマッピングの注意事項

(6) 戻り値へのマッピングの注意事項

outのwrapper子要素が1個の場合,またはoutのwrapper子要素のローカル名が"return"の場合,その値がメソッドの戻り値へマッピングされます。ただし,型は異なっていてもローカル名が"return"であるwrapper子要素を複数記述した場合,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます。