Cosminexus アプリケーションサーバ V8 Webサービス開発の手引

[目次][用語][索引][前へ][次へ]

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

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

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

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

(1) マッピング

wrapperスタイルの場合,WSDLのメッセージのパートから参照するwrapper子要素と,Javaメソッドのパラメタおよび戻り値がマッピングされます。マッピング例を次の図に示します。

図12-4 メッセージのパートとパラメタおよび戻り値のマッピング例(wrapperスタイル)

[図データ]

マッピングするときに,WSDLのwrapper子要素名の先頭文字は小文字に変換されます。

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

(2) wrapper子要素名の条件

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

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

項番 条件 不正な文字列の例 不正な文字列を指定した場合の動作
1 半角英数字(0〜9,A〜Z,a〜z),およびアンダースコア(_)だけを使用した文字列 日立_wrapper 動作は保証されません(エラーメッセージは表示されません)。
2 Javaの予約語以外の文字列 abstract 標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51018-E)。
3 先頭が数字以外の文字列 1User_wrapper 標準エラー出力とログにエラーメッセージが出力され,処理が終了されます。

注※
「Abstract」のように,Java予約語の先頭文字を大文字にした文字列も記述できません(マッピングによって先頭文字が小文字に変換されるため)。

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

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

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

項番 wrapper子要素のローカル名 wrapper子要素のXML Schema型 wrapper子要素の扱い
1 ローカル名が同じ場合 XML Schema型が同じ場合 同じwrapper子要素として扱われます。それぞれのwrapper子要素が,xsd:element要素のref属性で間接的に同じグローバル要素を参照している場合も,同じwrapper子要素として扱われます。
2 XML Schema型が異なる場合 別のwrapper子要素として扱われます。
3 ローカル名が異なる場合 XML Schema型が同じ場合 別のwrapper子要素として扱われます。
4 XML 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子要素を複数記述した場合,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます。