16.2.6 javax.jws.WebMethodアノテーション
javax.jws.WebMethodアノテーションは,オペレーションのマッピングをカスタマイズするときに使用できます。
javax.jws.WebMethodアノテーションを使用したカスタマイズ例を次の図に示します。
- 〈この項の構成〉
(1) exclude要素(javax.jws.WebMethod)
Webサービス実装クラスが持つpublicメソッドのうち,オペレーションとして公開したくないpublicメソッドは,exclude要素の要素値が"true"のjavax.jws.WebMethodアノテーションでアノテートすることで,マッピングされるオペレーションから除外できます。継承した親クラスが持つメソッドの場合,そのメソッドをオーバーライドし,exclude要素の要素値が"true"のjavax.jws.WebMethodアノテーションでアノテートすることで,マッピングされるオペレーションから除外できます。
exclude要素を指定するときの注意事項について説明します。
-
Webサービス実装クラスでこの要素の要素値に"true"を指定した場合,Webサービス実装クラスのjavax.jws.WebMethodアノテーションに,ほかの要素を指定できません。
-
SEIでこの要素を指定する場合,要素値には"false"を指定してください。
-
Webサービス実装クラスで親クラスのメソッドをオーバーライドしている場合で,親クラスとWebサービス実装クラス(子クラス)の両方にこの要素を指定した場合,Webサービス実装クラス(子クラス)に指定した要素が優先されます。
-
Webサービス実装クラスでjavax.jws.WebServiceアノテーションのendpointInterface要素を指定していない場合,Webサービス実装クラスが持つstatic修飾子またはfinal修飾子を適用していないすべてのpublicメソッドが暗黙のSEIにマッピングされます。また,Webサービス実装クラスが持つstatic修飾子またはfinal修飾子を適用していないpublicメソッドに,exclude要素が"true"ではないjavax.jws.WebMethodアノテーションを一つでも指定しているとき,次の表の条件を満たすWebサービス実装クラスのメソッドが,暗黙のSEIにマッピングされます。
表16‒13 アノテーションの指定と暗黙のSEIへのマッピング 項番
Webサービス実装クラスのメソッド
(WebMethodアノテーション)
暗黙のSEIが持つメソッド
1
なし
マッピングされます。
2
あり(exclude要素なし)
マッピングされます。
3
exclude=false
マッピングされます。
4
exclude=true
マッピングされません。
(2) operationName要素(javax.jws.WebMethod)
operationName要素は,オペレーション名のマッピングをカスタマイズするときに指定します。operationName要素に要素値を指定すると,オペレーション名をマッピングのデフォルト値に持つメッセージ名がカスタマイズできます。non-wrapperスタイルの場合は,グローバル要素名およびパート名もカスタマイズできます。
operationName要素を指定するときの注意事項について説明します。
-
operationName要素は半角英数字とアンダースコア(_)で指定します。それ以外の文字を指定した場合の動作は保証されません(エラーメッセージは出力されません)。
-
Java言語仕様で規定されるJava識別子の命名規則に従った値を指定してください。Java識別子の命名規則に従っていない場合,Webサービスクライアントの開発で,cjwsimportコマンドを実行するときにコンパイルエラーとなります。
-
wrapperスタイルの場合,javax.xml.ws.RequestWrapperアノテーションのlocalName要素は「オペレーション名」と同じである必要があります。ただし,javax.xml.ws.RequestWrapperアノテーションが存在しない場合,またはjavax.xml.ws.RequestWrapperアノテーションのlocalName要素に空文字("")が指定されている場合,同一かどうかの比較処理は行われません。