16.2.9 javax.jws.WebServiceアノテーション
javax.jws.WebServiceアノテーションは,SEIおよびWebサービス実装クラスに必須です。
javax.jws.WebServiceアノテーションを使用したカスタマイズ例を次の図に示します。
なお,javax.xml.ws.WebServiceProviderアノテーションとjavax.jws.WebServiceアノテーションは,どちらか一方しか指定できません。
- 〈この項の構成〉
(1) targetNamespace要素(javax.jws.WebService)
SEIでtargetNamespace要素を指定した場合,指定した名前空間は,types要素,message要素,およびportType要素に対して有効です。
Webサービス実装クラスでこの要素を指定した場合,指定した名前空間は,binding要素およびservice要素に対して有効です。Webサービス実装クラスで,javax.jws.WebServiceアノテーションのendpointInterface要素を使用しない場合,暗黙のSEIとWebサービス実装クラスの両方に同じ名前空間を指定したものと見なされます。
targetNamespace要素には,http://またはurn:のプロトコルを名前空間として指定します。指定できる名前空間の形式および文字列を示します。
-
プロトコル
名前空間のプロトコルは,http://またはurn:のプロトコルで記述してください。
-
名前空間の記述形式
名前空間には次に示す形式は記述できません。
-
クエリストリング(例)http://example.com/?a=b
-
アンカー(例)http://example.com/index.html#anchor
-
ポート番号(例)http://example.com:8080/
-
ユーザ名/パスワード(例)http://user:password@example.com
-
-
記述できる文字列
区切り文字のスラッシュ(/)またはピリオド(.)で区切られたセグメントには,次の表に示すすべての条件を満たす文字列を記述できます。
表16‒16 名前空間に記述できる文字列の条件(javax.jws.WebService) 項番
条件
不正な文字列の例
不正な文字列を指定した場合の動作
1
半角英数字(0〜9,A〜Z,a〜z)だけを使用した文字列
http://鈴木.com
http://133.145.224.19/
http://[1080:2C14;D30:BA04:275:806:270C:418A]/
動作は保証されません(エラーメッセージは出力されません)。
2
Javaの予約語以外の文字列
http://xxx.com/abstract
動作は保証されません。
3
先頭が数字でない文字列
http://1xxx.com
(2) endpointInterface要素(javax.jws.WebService)
endpointInterface要素を指定するときの注意事項について説明します。
-
endpointInterface要素は,Webサービス実装クラスのjavax.jws.WebServiceアノテーションで,javax.jws.WebServiceアノテーションを持つSEIを指定します。
-
Webサービス実装クラスのjavax.jws.WebServiceアノテーションにendpointInterface要素を指定している場合,javax.jws.WebServiceアノテーションのname要素を同時に指定できません。
-
SEIには,javax.jws.WebServiceアノテーションのendpointInterface要素を指定できません。
-
Webサービス実装クラスのjavax.jws.WebServiceアノテーションにendpointInterface要素を指定している場合,Webサービス実装クラス内に次に示すアノテーションは指定できません。
-
javax.jws.WebMethod
-
javax.jws.WebParam
-
javax.jws.WebResult
-
javax.jws.Oneway
-
javax.jws.SOAPBinding
-
(3) name要素(javax.jws.WebService)
name要素は,ポートタイプ名のマッピングをカスタマイズするときに指定します。name要素に要素値を指定すると,ポートタイプ名をマッピングのデフォルト値に持つすべての要素もカスタマイズできます。
name要素を指定するときの注意事項について説明します。
-
SEIのjavax.jws.WebServiceアノテーションで使用する場合,name要素は半角英数字とアンダースコア(_)で指定します。それ以外の文字を指定した場合の動作は保証されません(エラーメッセージは出力されません)。
-
Webサービス実装クラスのjavax.jws.WebServiceアノテーションにendpointInterface要素を指定している場合,Webサービス実装クラスでjavax.jws.WebServiceアノテーションのname要素を同時に指定できません。
(4) serviceName要素(javax.jws.WebService)
serviceName要素は,サービス名のマッピングをカスタマイズするときに指定します。
serviceName要素を指定するときの注意事項について説明します。
-
SEIには,javax.jws.WebServiceアノテーションのserviceName要素は指定できません。
-
Webサービス実装クラスのjavax.jws.WebServiceアノテーションで使用する場合,serviceName要素は半角英数字とアンダースコア(_)で指定します。それ以外の文字を指定した場合,動作は保証されません。
-
Java言語仕様で規定されるJava識別子の命名規則に従った値を指定してください。Java識別子の命名規則に従っていない場合は,Webサービスクライアントの開発でcjwsimportコマンドを実行するときにコンパイルエラーとなります。