Cosminexus アプリケーションサーバ V8 Webサービス開発の手引

[目次][用語][索引][前へ][次へ]

13.1.10 JavaからWSDLへのマッピングに関する注意事項

JavaからWSDLへのマッピングでの注意事項について説明します。

<この項の構成>
(1) ジェネリクスの型削除
(2) JAXBアノテーションのサポートについて
(3) ジェネリクス型の制限

(1) ジェネリクスの型削除

JavaBean(リクエストbean,レスポンスbean,フォルトbean)生成時には,ジェネリクスの型が削除されます。ジェネリクスの型削除の例を次の表に示します。

表13-10 ジェネリクスの型削除の例

型削除前 型削除後
T NumbersData
List<E> List<java.lang.Object>
List<? extends NumbersData> List<NumbersData>
List<? super NumbersData> List< java.lang.Object >
Map<K, V> Map< java.lang.Object, java.lang.Object >
Map<? extends NumbersKey, ? extends NumbersData> Map<NumbersKey, NumbersData>
Map<? super NumbersKey, ? super NumbersData> Map< java.lang.Object, java.lang.Object >
Iterator<E> Iterator< java.lang.Object >
Iterator<? extends NumbersData> Iterator<NumbersData>
Iterator<? super NumbersData> Iterator< java.lang.Object >
List<List<? extends NumbersData>> List<List<NumbersData>

注※
Tの型定義は,<T extends NumbersData>の場合を示します。

メソッド引数や戻り値をjavax.jws.WebParamやjavax.jws.WebResultアノテーションでカスタマイズしている場合も,ジェネリクスの型は削除されます(カスタマイズも有効)。また,メソッド引数や戻り値がwrapperスタイルであっても,ジェネリクスの型は削除されます。なお,メソッド引数や戻り値がnon-wrapperスタイルの場合にはジェネリクスの型は削除されません。

(2) JAXBアノテーションのサポートについて

CosminexusのJAX-WS機能は,JAX-WS 2.1仕様のComformance 3.14に対応しています。コマンド実行時には,必要に応じて次に示すJAXBアノテーションが解釈されます。

CosminexusのJAX-WS機能ではMIMEバインディングはサポートされません。

CosminexusのJAX-WS機能が提供するアノテーションプロセッサでは,javax.xml.bind.annotation.XmlListアノテーションはwrapperスタイルの場合には解釈されますが,non-wrapperスタイルの場合には解釈されません。

これらのJAXBアノテーションで,SEIおよびサービス実装クラス以外の引数や戻り値をアノテートした場合の動作は保証されません。

CosminexusのJAX-WS機能が提供するアノテーションプロセッサでは,javax.xml.bind.annotation.XmlJavaTypeAdapterアノテーションおよびjavax.xml.bind.annotation.XmlMimeTypeアノテーションは,SEIまたはサービス実装クラスの引数や戻り値,またはJavaBeanのフィールドをアノテートした場合に解釈されます。パッケージや,インタフェース,またはクラスをアノテートした場合の動作は保証されません。

開発したWebサービスを呼び出すときに,Webサービスの引数や戻り値のサブクラスを使用するとエラーが発生します。正常に呼び出すには,SEIおよびWebサービス実装クラスを定義するときに,javax.xml.bind.annotation.XmlSeeAlsoアノテーションによってサブクラスを関連づける必要があります。

(3) ジェネリクス型の制限

wrapperスタイルの場合にはメソッド引数や戻り値にジェネリクス型を使用できますが,non-wrapperスタイルの場合にはジェネリクス型を使用できません。