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

SEIのメソッドのパラメタからWSDL(wsdl:part要素のname属性)へのマッピングについて説明します。

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

<この項の構成>
(1) マッピング
(2) パラメタに指定できるJava型
(3) パラメタ名の条件
(4) パラメタと戻り値の組み合わせ
(5) アノテーションの指定とパート名へのマッピングの関係
(6) 名前衝突時の動作
(7) java.util.Mapクラスの使用

(1) マッピング

non-wrapperスタイルの場合,SEIのメソッドパラメタはオペレーション名と同じ値の名称で,WSDLのパートおよびグローバル要素にマッピングされます。戻り値は,オペレーション名に接尾辞"Response"を付加した名称で,WSDLのパートおよびグローバル要素にマッピングされます。なお,non-wrapperスタイルでは,リクエストbeanおよびレスポンスbeanは必要ありません。このため,cjaptコマンドおよびcjwsgenコマンドによるリクエストbeanおよびレスポンスbeanの自動生成はしませんが,コンパイルしたWebサービス実装クラスに対してcjwsgenコマンドを実行することで,事前にエラーチェックができます。詳細については,「10.23(1) cjwsgenコマンドによるエラーチェックについて」を参照してください。

マッピング例を次の図に示します。

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

[図データ]

(2) パラメタに指定できるJava型

パラメタに指定できるJava型については,wrapper型の場合と同様です。「16.1.5(2) パラメタに指定できるJava型」を参照してください。

(3) パラメタ名の条件

Javaメソッドのパラメタ名は,WSDLにマッピングされないため,Java言語仕様で定めるJava識別子の命名規則に従って記述してください。

(4) パラメタと戻り値の組み合わせ

SOAPヘッダであるメソッドのパラメタは,幾つでも指定できます。ただし,SOAPボディであるメソッドのパラメタは,戻り値との関係で指定可否および指定個数が決まります。メソッドの戻り値の条件と,パラメタの指定方法を次の表に示します。

表16-6 メソッドの戻り値の条件とパラメタの指定方法

項番戻り値の条件パラメタの指定方法
戻り値の有無指定位置
1なし
  • inパラメタおよびinoutパラメタはどちらか1個指定できます。※1
  • outパラメタおよびinoutパラメタはどちらか1個指定できます。※2
2ありSOAPヘッダ
  • inパラメタおよびinoutパラメタはどちらか1個指定できます。※1
  • outパラメタおよびinoutパラメタはどちらか1個指定できます。※2
3ありSOAPボディ
  • inパラメタを1個指定できます。※1
  • outパラメタおよびinoutパラメタは指定できません。※3
注※1
合計で0個または2個以上指定した場合は,標準エラー出力とログにエラーメッセージが出力されます(KDJW61056-E)。
注※2
合計で0個または2個以上指定した場合は,標準エラー出力とログにエラーメッセージが出力されます(KDJW61057-E)。
注※3
outパラメタまたはinoutパラメタを指定した場合,標準エラー出力とログにエラーメッセージが出力されます(KDJW61059-E)。

non-wrapperスタイルでoutパラメタまたはinoutパラメタを使用する場合,javax.jws.WebParamアノテーションのname要素を指定する必要があります。javax.jws.WebParamアノテーションのname要素を指定していない場合,標準エラー出力とログにエラーメッセージが出力されます(KDJW61085-E)。

(5) アノテーションの指定とパート名へのマッピングの関係

メソッドのパラメタから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指定なし
(凡例)
-:要素の指定有無がマッピングに影響しないことを示します(指定しても指定しなくてもマッピング方法は同じです)。

(6) 名前衝突時の動作

パート名およびグローバル要素の名前衝突時の動作について説明します。

(7) java.util.Mapクラスの使用

java.util.Mapクラスを使用する方法については,「16.1.5(6) java.util.Mapクラスの使用」を参照してください。