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