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

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

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

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

(1) マッピング

wrapperスタイルの場合,SEIのメソッド名およびSEIのメソッド名と同じ名称のリクエストbeanが生成されます。また,接尾辞"Response"を付加したレスポンスbeanが生成されます。リクエストbeanおよびレスポンスbeanの生成には,cjaptコマンドまたはcjwsgenコマンドで自動生成する方法と,Webサービスの開始時に動的に生成する方法があります。動的に生成する方法の場合は,Webサービスの開始時にエラーが発生しないように,コンパイルしたWebサービス実装クラスに対してcjwsgenコマンドを実行することで,事前にエラーチェックができます。詳細については,「10.23(1) cjwsgenコマンドによるエラーチェックについて」を参照してください。

メソッドのパラメタとメッセージのパートのマッピング例を次の図に示します。

図16-4 メソッドのパラメタとメッセージのパートのマッピング例(wrapperスタイル)

[図データ]

メソッドの戻り値とメッセージのパートのマッピング例を次の図に示します。

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

[図データ]

メソッドのパラメタおよび戻り値からメッセージのパートへのマッピング規則を次に示します。

注※
argNのNは,パラメタの順番に依存した0以上の整数を表します。

javax.xml.bind.annotation.XmlElementアノテーションについては,「16.2.10 javax.xml.bind.annotation.XmlElementアノテーション」を参照してください。

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

Holder(javax.xml.ws.Holder)型以外のJava型と,Holder型を指定するときの条件および注意事項について説明します。

(a) Holder型以外のJava型

Holder型以外のJava型は,JAXB 2.2仕様に従ってWSDLのスキーマの型にマッピングされます。Holder型以外のJava型を指定するときの注意事項について説明します。

(b) javax.xml.ws.Holder型

javax.xml.ws.Holder型を指定するときの注意事項について説明します。

(c) Java型のマッピング

Java型をマッピングするときの注意事項について説明します。

(3) Javaメソッドのパラメタの条件

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

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

inパラメタ,inoutパラメタ,outパラメタ,および戻り値は,自由に組み合わせて記述できます。

(5) 名前衝突時の動作

wrapper beanクラス名とグローバル要素の名前についての規則,および名前衝突したときの動作について説明します。

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

SEIの引数または戻り値にjava.util.Mapクラスを使用する場合,SEIのjava.util.Map型の引数または戻り値に対して,次の作業をする必要があります。

  1. value typeを作成します。
    JAXB 2.2仕様に従い,java.util.Map(bound type)に対応するvalue type(マーシャル/アンマーシャルできるJavaBeanクラス)を作成します。
  2. アダプタを作成します。
    javax.xml.bind.annotation.adapters.XmlAdapterを継承するjava.util.Map(bound type)およびvalue typeを相互変換するアダプタを作成し,unmarshalメソッドおよびmarshalメソッドを実装します。
  3. javax.xml.bind.annotation.adapters.XmlJavaTypeAdapterアノテーションでアノテートします。
    java.util.Map型の引数または戻り値を,2.のアダプタを値に持つXmlJavaTypeAdapterアノテーションでアノテートします。
  4. cjaptコマンドを実行します。
    アノテート済みのSEIをcjaptコマンドで解釈します。
    value type,アダプタ,およびcjaptコマンドによってxmlJavaTypeAdapterアノテーションが適用されたリクエストbeanクラス/レスポンスbeanクラスの関係と実装例を次に示します。

    図16-6 java.util.Mapの使用例

    [図データ]