Cosminexus アプリケーションサーバ V8 Webサービス開発の手引
![[目次]](FIGURE/CONTENT.GIF)
![[用語]](FIGURE/GLOSS.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
wrapperスタイルの場合,SEIのメソッド名およびSEIのメソッド名と同じ名称のリクエストbeanが生成されます。また,接尾辞"Response"を付加したレスポンスbeanが生成されます。
メソッドのパラメタとメッセージのパートのマッピング例を次の図に示します。
図13-4 メソッドのパラメタとメッセージのパートのマッピング例(wrapperスタイル)
![[図データ]](FIGURE/ZU120400.GIF)
メソッドの戻り値とメッセージのパートのマッピング例を次の図に示します。
図13-5 メソッドの戻り値とメッセージのパートのマッピング例(wrapperスタイル)
![[図データ]](FIGURE/ZU120500.GIF)
メソッドのパラメタおよび戻り値からメッセージのパートへのマッピング規則を次に示します。
- パラメタおよび戻り値は,wrapper要素の子要素として空の名前空間("")でマッピングされます。wrapper要素は,SEIと同じ名前空間でマッピングされます。
- wrapper要素は,"parameters"という固定値でinputメッセージおよびoutputメッセージのパート名にマッピングされます。
- inパラメタおよびinoutパラメタは,argN※という名称でリクエストbeanのプロパティとしてマッピングされます。
- outパラメタおよびinoutパラメタは,argN※という名称でレスポンスbeanのプロパティとしてマッピングされます。
また,戻り値は,returnという名称で,レスポンスbeanのプロパティとしてマッピングされます。このとき,予約語にならないように,フィールド名の接頭辞にはアンダースコア(_)が付加されます。
- 注※
- argNのNは,パラメタの順番に依存した0以上の整数を表します。
Holder(javax.xml.ws.Holder)型以外のJava型と,Holder型を指定するときの条件および注意事項について説明します。
(a) Holder型以外のJava型
Holder型以外のJava型は,JAXB 2.1仕様に従ってWSDLのスキーマの型にマッピングされます。Holder型以外のJava型を指定するときの注意事項について説明します。
- Javaプリミティブ型は,outおよびinoutパラメタに指定できません。指定した場合,標準エラー出力とログにエラーメッセージが出力されます(KDJW61035-E)。
- Javaプリミティブ型は,javax.xml.ws.Holderクラスの型パラメタとしても指定できません。指定した場合,aptコマンドの実行時にエラーとなり終了します。
- Java型をoutおよびinoutパラメタに指定する場合,javax.xml.ws.Holderクラスの型パラメタとして指定できます。それ以外の方法で指定した場合は,標準エラー出力とログにエラーメッセージが出力されます(KDJW61035-E)。
(b) javax.xml.ws.Holder型
javax.xml.ws.Holder型を指定するときの注意事項について説明します。
- javax.xml.ws.Holderクラスの型パラメタに,javax.jws.WebParamアノテーションを指定する場合,mode要素でMode.OUTまたはMode.INOUTを指定する必要があります。mode要素を指定していない場合,またはmode要素にMode.INを指定した場合,標準エラー出力とログにエラーメッセージが出力されます(KDJW61031-E)。また,javax.jws.WebParamアノテーションを指定していない場合,javax.xml.ws.Holderの型パラメタはinoutパラメタとして解釈されます。
- 次の場合の動作は保証されません。
- javax.xml.ws.Holderクラスをメソッドの引数以外に指定した場合
- javax.xml.ws.Holderクラスの配列を使用した場合
- javax.xml.ws.Holderクラスの型パラメタに型を指定していない場合
- javax.xml.ws.Holderクラスの型パラメタに,javax.xml.ws.Holderクラスやそれを継承したクラスを指定した場合
(c) Java型のマッピング
Java型をマッピングするときの注意事項について説明します。
- javax.jws.WebParamアノテーションのmode要素でカスタマイズしていない場合,javax.xml.ws.Holderクラスの型パラメタ以外の引数は,inパラメタとしてマッピングされ,javax.xml.ws.Holderクラスの型パラメタは,inoutパラメタとしてマッピングされます。outパラメタとしてマッピングする方法については,「13.2.6(4) mode要素(javax.jws.WebParam)」を参照してください。
- inputメッセージ名は,オペレーション名でマッピングされます。outputメッセージ名は,オペレーション名に接尾辞"Response"を付加した値でマッピングされます。
- SEIのメソッドのパラメタは,Javaの仕様に従って254個まで定義できます。255個以上定義した場合は,aptコマンドの実行時にコンパイルエラーとなり終了します。
Javaメソッドのパラメタ名は,WSDLにマッピングされないため,Java言語仕様で定めるJava識別子の命名規則に従って記述してください。
inパラメタ,inoutパラメタ,outパラメタ,および戻り値は,自由に組み合わせて記述できます。
(5) 名前衝突時の動作
wrapper beanクラス名とグローバル要素の名前についての規則,および名前衝突したときの動作について説明します。
- wrapper beanクラス名
生成されるwrapper beanクラス名は,パッケージ内でユニークな名前である必要があります。ただし,大文字/小文字の違いは無視されます。リクエストbeanまたはレスポンスbeanが,パッケージ内で同時に生成されるほかのJavaBeanクラスと名前衝突した場合,標準エラー出力とログにエラーメッセージが出力されます(KDJW61083-E)。
すでに存在するクラスと名前が重複していた場合は,上書きされます。ただし,そのクラスがaptコマンドの引数に含まれていた場合は,aptコマンド実行時にエラーチェックされます。
- グローバル要素(ローカル名および名前空間)
グローバル要素(ローカル名および名前空間)は,WSDL内でユニークである必要があります。ユニークでない場合の動作は保証されません。
SEIの引数または戻り値にjava.util.Mapクラスを使用する場合,SEIのjava.util.Map型の引数または戻り値に対して,次の作業をする必要があります。
- value typeを作成します。
JAXB 2.1仕様に従い,java.util.Map(bound type)に対応するvalue type(マーシャル/アンマーシャルできるJavaBeanクラス)を作成します。
- アダプタを作成します。
javax.xml.bind.annotation.adapters.XmlAdapterを継承するjava.util.Map(bound type)およびvalue typeを相互変換するアダプタを作成し,unmarshalメソッドおよびmarshalメソッドを実装します。
- javax.xml.bind.annotation.adapters.XmlJavaTypeAdapterアノテーションでアノテートします。
java.util.Map型の引数または戻り値を,2.のアダプタを値に持つXmlJavaTypeAdapterアノテーションでアノテートします。
- aptコマンドを実行します。
アノテート済みのSEIをaptコマンドで解釈します。
value type,アダプタ,およびaptコマンドによってxmlJavaTypeAdapterアノテーションが適用されたリクエストbeanクラス/レスポンスbeanクラスの関係と実装例を次に示します。
図13-6 java.util.Mapの使用例
![[図データ]](FIGURE/ZU120600.GIF)
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.