WSDLからJavaへのマッピングでの注意事項について説明します。
1個のポートタイプに複数のオペレーションを記述する場合,オペレーション名はすべてユニークでなければなりません。したがって,WSDLからJavaへのマッピングでは,Javaメソッドのオーバーロードはできません。オペレーション名が重複している場合はカスタマイズして,それぞれユニークな名称にしてください。
cjwsimportコマンドを実行するときに,SEI名,クラス名,メソッド名,およびパラメタ名で名前衝突が発生することがあります。ここでは,名前衝突時のマッピングについて説明します。
WSDLからJavaソースへのマッピングで,SEI名およびクラス名(非例外Javaクラス名,例外クラス名,サービスクラス名,スケルトンクラス名)で名前が衝突した場合,優先順位に従って名前衝突が解決されます。
名前衝突時の優先順位と解決方法を次の表に示します。項番は優先順位を表します(項番1がいちばん高い)。
表15-19 名前衝突の優先順位と解決方法
項番 | 種別 | 名前衝突時の解決方法 |
---|---|---|
1 | SEI名 | 優先順位がいちばん高いため,名前は変更されません。 |
2 | 非例外Javaクラス名 | クラス名に"_Type"サフィックスが付加されます。 |
3 | 例外クラス名 | クラス名に"_Exception"サフィックスが付加されます。 |
4 | サービスクラス名 | クラス名に"_Service"サフィックスが付加されます。 |
5 | スケルトンクラス名 | クラス名に"_Impl"サフィックスが付加されます。 |
SEI名と非例外Javaクラス名が衝突した場合の名前解決の例を示します。
図15-15 SEI名と非例外Javaクラス名の衝突時の名前解決例
名前解決によってサフィックスが付加されたクラス名と,同名のクラス名が定義されていた場合は,再度,名前衝突が発生します。この場合,定義済みのクラス名からアンダースコアを削除することで解決します。
サフィックスが付加されたあとに,名前衝突する場合の名前解決例を示します。
図15-16 サフィックス付加後に名前衝突する場合の名前解決例
さらに,アンダースコアの削除によって変更されたクラス名と,同名のクラス名が定義されていた場合は,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51030-E※)。
WSDLからJavaソースへのマッピングで,メソッド同士およびメソッドのパラメタ同士で名前が衝突した場合は,名前衝突は解決されないでエラーになります。
cjwsimportコマンドは,JAX-WS 2.2仕様のComformance 2.17に対応しています。cjwsimportコマンド実行時に,必要に応じて次に示すJAXBアノテーションがSEIに付与されます。
なお,Application ServerのJAX-WS機能ではMIMEバインディングはサポートしていないため,javax.xml.bind.annotation.XmlMimeTypeアノテーションは付与されません。MIMEバインディングを指定した場合は,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51188-E)。