16.1.6 パラメタおよび戻り値からメッセージのパートへのマッピング(non-wrapperスタイルの場合)
SEIのメソッドのパラメタからWSDL(wsdl:part要素のname属性)へのマッピングについて説明します。
ここでは,non-wrapperスタイルの場合について説明します。
- 〈この項の構成〉
(1) マッピング
non-wrapperスタイルの場合,SEIのメソッドパラメタはオペレーション名と同じ値の名称で,WSDLのパートおよびグローバル要素にマッピングされます。戻り値は,オペレーション名に接尾辞"Response"を付加した名称で,WSDLのパートおよびグローバル要素にマッピングされます。なお,non-wrapperスタイルでは,リクエストbeanおよびレスポンスbeanは必要ありません。このため,hwsgenコマンドによるリクエストbeanおよびレスポンスbeanの自動生成はしませんが,コンパイルしたWebサービス実装クラスに対してhwsgenコマンドを実行することで,事前にエラーチェックができます。詳細については,「10.23.1 hwsgenコマンドによるエラーチェックについて」を参照してください。
マッピング例を次の図に示します。
(2) パラメタに指定できるJava型
パラメタに指定できるJava型については,wrapper型の場合と同様です。「16.1.5(2) パラメタに指定できるJava型」を参照してください。
(3) パラメタ名の条件
Javaメソッドのパラメタ名は,WSDLにマッピングされないため,Java言語仕様で定めるJava識別子の命名規則に従って記述してください。
(4) パラメタと戻り値の組み合わせ
SOAPヘッダであるメソッドのパラメタは,幾つでも指定できます。ただし,SOAPボディであるメソッドのパラメタは,戻り値との関係で指定可否および指定個数が決まります。メソッドの戻り値の条件と,パラメタの指定方法を次の表に示します。
項番 |
戻り値の条件 |
パラメタの指定方法 |
|
---|---|---|---|
戻り値の有無 |
指定位置 |
||
1 |
なし |
− |
|
2 |
あり |
SOAPヘッダ |
|
3 |
あり |
SOAPボディ |
|
(5) アノテーションの指定とパート名へのマッピングの関係
メソッドのパラメタからWSDLのパート(wsdl:part要素のname属性)へのマッピングは,javax.jws.WebParamアノテーションおよびjavax.jws.WebMethodアノテーションの要素値の指定によって異なります。
アノテーションの指定内容と,マッピング方法の関係を次の表に示します。
項番 |
アノテーションの要素指定の有無 |
WSDLのパート名へのマッピング方法 |
||
---|---|---|---|---|
javax.jws.WebParam @partName |
javax.jws.WebParam @name |
javax.jws.WebMethod @operationName |
||
1 |
指定あり |
− |
− |
指定ありのアノテーションの要素値がwsdl:part要素のname属性にマッピングされます。 |
2 |
指定なし |
指定あり |
− |
|
3 |
指定なし |
指定あり |
Javaのメソッド名がwsdl:part要素のname属性にマッピングされます。 |
|
4 |
指定なし |
(6) 名前衝突時の動作
パート名およびグローバル要素の名前衝突時の動作について説明します。
-
パート名の衝突
non-wrapperスタイルでは,JavaソースからマッピングされるWSDLのwsdl:part要素の名前をWSDL内でユニークにする必要があります。ユニークではない場合の動作は保証されません。
-
グローバル要素(ローカル名および名前空間)の衝突
グローバル要素(ローカル名および名前空間)はWSDL内でユニークにする必要があります。ユニークではない場合の動作は保証されません。
(7) java.util.Mapクラスの使用
java.util.Mapクラスを使用する方法については,「16.1.5(6) java.util.Mapクラスの使用」を参照してください。