16.1.4 SEIのメソッド名からオペレーションへのマッピング
SEIのメソッド名からWSDLのオペレーション(wsdl:operation要素のname属性)へのマッピングについて説明します。
- 〈この項の構成〉
(1) マッピング
SEIのメソッド名とWSDLのオペレーションは,JAX-WS 2.2仕様に従ってマッピングされます。マッピング例を次の図に示します。
SEIのメソッドを公開対象とするには,次に示す条件を満たす必要があります。
-
アクセス修飾子がpublicである
-
static修飾子またはfinal修飾子が適用されていない
-
javax.jws.WebMethodアノテーションでアノテートされている場合,javax.jws.WebMethodアノテーションのexclude要素がtrueではない
SEIのメソッド名からオペレーションへのマッピング規則を次に示します。
-
javax.jws.WebMethodアノテーションの有無に関係なく,SEIのすべての公開対象メソッドがWSDLのオペレーションにマッピングされます。
-
javax.jws.WebServiceアノテーションのendpointInterface要素を使用していない場合,Webサービス実装クラスの公開対象メソッドを暗黙のSEIが持っているものと見なされ,WSDLのオペレーションにマッピングされます。暗黙のSEIにマッピングされるメソッドについては,「16.2.6 javax.jws.WebMethodアノテーション」を参照してください。
-
Webサービス実装クラスが別のWebサービス実装クラスを継承している場合,次の条件に合うすべてのメソッドがWSDLのオペレーションにマッピングされます。
(条件)
Webサービス実装クラスおよび親のWebサービス実装クラスが持つjavax.jws.WebMethodアノテーションのexclude要素が,trueではない公開対象メソッド。
-
Webサービス実装クラスが別のWebサービス実装クラスを継承し,親クラスのメソッドをオーバーライドしている場合,Webサービス実装クラスでオーバーライドした公開対象メソッドがWSDLのオペレーションにマッピングされます。親クラスでオーバーライドされたメソッドはマッピングされません。
-
SEIに定義できる公開対象メソッドおよびWebサービス実装クラスの公開対象メソッドは,255個まで定義できます。
-
SEIのメソッド名からマッピングされるwsdl:operation要素のname属性の値は,WSDL内でユニークである必要があります。
(2) メソッド名の条件
メソッド名には,次の表に示すすべての条件を満たす文字列を記述できます。
ただし,次に示すアノテーションをすべて使用する場合,Java言語仕様で定められているJava識別子の命名規則に従った文字列を記述できます。
-
javax.jws.WebMethodアノテーションのoperationName要素
-
javax.xml.ws.RequestWrapperアノテーションのlocalName要素およびclassName要素(wrapperスタイルの場合)
-
javax.xml.ws.ResponseWrapperアノテーションのlocalName要素およびclassName要素(wrapperスタイルの場合)
-
javax.jws.WebParamアノテーションのname要素(non-wrapperスタイルの場合)
-
javax.jws.WebResultアノテーションのname要素(non-wrapperスタイルの場合)
(3) オーバーロードによる名前衝突
メソッドのオーバーロードを使用している場合,デフォルトマッピングでは名前衝突が発生するため,名前がユニークになるようにアノテーションでカスタマイズする必要があります。
オーバーロードによる名前衝突が発生する個所と,参照先を次の表に示します。
項番 |
名前衝突の発生個所 |
アノテーションの参照先 |
|
---|---|---|---|
wrapperスタイル |
non-wrapperスタイル |
||
1 |
オペレーション名 |
||
2 |
inputのグローバル要素※ |
||
3 |
outputのグローバル要素※ |
||
4 |
リクエストbeanクラス名 |
||
5 |
レスポンスbeanクラス名 |