15.1.5 メッセージのパートからパラメタおよび戻り値へのマッピング(non-wrapperスタイルの場合)
WSDLのメッセージのパート(wsdl:message要素のwsdl:part子要素)からJavaのメソッドのパラメタおよび戻り値へのマッピングについて説明します。
ここでは,non-wrapperスタイルの場合について説明します。
- 〈この項の構成〉
(1) マッピング
-
request-responseオペレーションのWSDLからのマッピングの場合
request-responseオペレーションのWSDL(wsdl:input要素,およびwsdl:output要素を1個と,wsdl:fault要素を0個以上定義)のメッセージのパートと,Javaメソッドのパラメタおよび戻り値のマッピング例を次の図に示します。
図15‒6 メッセージのパートとパラメタおよび戻り値のマッピング例(request-responseオペレーション) -
one-wayオペレーションのWSDLからのマッピングの場合
one-wayオペレーションのWSDL(wsdl:input要素を1個だけ定義)のメッセージのパートと,Javaメソッドのパラメタのマッピング例を次の図に示します。なお,マッピングしたJavaメソッドには,javax.jws.Onewayアノテーションを付与します。
図15‒7 メッセージのパートとパラメタのマッピング例(one-wayオペレーション)
マッピングするときに,request-responseオペレーションまたはone-wayオペレーションのどちらの場合でも,メッセージのパート名(wsdl:part要素のname属性)の先頭文字は小文字に変換されます。
(変換前)PartName (変換後)partName
-
パートの種類とJavaソースへのマッピングの関係
パートの種類(in/inout/out)と,Javaソースへのマッピングの関係を次の表に示します。
(2) パート名の条件
パート名には,次の表に示すすべての条件を満たす文字列を記述できます。ただし,バインディング宣言でカスタマイズする場合は,XML Schema仕様のxsd:NCName型として使用できる文字列を記述できます。
(3) 複数のパートから同じグローバル要素を参照している場合の扱い
WSDL内でinputメッセージまたはoutputメッセージに出現するパートを複数記述した場合,パート名が同じで,かつ参照先のグローバル要素が同じときにだけ,同じパートとして扱われます。
パート名,参照先のグローバル要素のどちらかが異なる場合は,別のパートとして扱われます。
(4) パラメタへのマッピングの注意事項
-
inおよびinoutのパートは,inputメッセージ内の対応するパートの出現順序でマッピングされます。outのパートは,outputメッセージ内の対応するパートの出現順序でマッピングされます。
-
in,inout,outのパートが混在している場合,inとinoutのパートはinputメッセージ内の対応するパートの出現順序でマッピングされ,そのあとに,outのパートがoutputメッセージ内の対応するパートの出現順序でマッピングされます。
-
Javaプリミティブ型やJava配列型,ユーザ定義型であるout(戻り値にマッピングされるものは除く)およびinoutのパートは,JavaソースではHolder型(javax.xml.ws.Holder<T>)にマッピングされます。その例を次に示します。
- (例)
-
outおよびinoutのパートのデータ型:java.lang.String
Javaへマッピング後のデータ型:javax.xml.ws.Holder<java.lang.String>
(5) 戻り値へのマッピングの注意事項
outputメッセージでoutのパートが1個だけの場合,メソッドの戻り値へマッピングされます。outのパートが2個以上の場合,戻り値にマッピングされません。