16.1.4 SEIのメソッド名からオペレーションへのマッピング
(1) マッピング
SEIのメソッド名とWSDLのオペレーションは,JAX-WS 2.2仕様に従ってマッピングされます。マッピング例を次の図に示します。
図16-3 SEIのメソッド名とオペレーションのマッピング例
![[図データ]](figure/zu120300.gif)
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個まで定義できます。256個以上定義した場合は,標準エラー出力とログに警告メッセージが出力され,処理が続行されます(KDJW61026-W)。
- SEIのメソッド名からマッピングされるwsdl:operation要素のname属性の値は,WSDL内でユニークである必要があります。名前衝突が発生した場合,標準エラー出力とログにエラーメッセージが出力されます(KDJW61060-E)。
- 公開対象メソッドが一つもない場合,標準エラー出力とログにエラーメッセージを出力し,処理を終了します(KDJW61093-E)。
(2) メソッド名の条件
メソッド名には,次の表に示すすべての条件を満たす文字列を記述できます。
表16-4 メソッド名に記述できる文字列の条件
項番 | 条件 | 不正な文字列の例 | 不正な文字列を指定した場合の動作 |
---|
1 | 半角英数字(0~9,A~Z,a~z),およびアンダースコア(_)だけを使用した文字列 | 鈴木_sei | 動作は保証されません(エラーメッセージは出力されません)。 |
2 | Java言語仕様で定められているJava識別子の命名規則に従った文字列 | abstract | cjaptコマンド実行時にコンパイルエラーとなり,終了します。 |
ただし,次に示すアノテーションをすべて使用する場合,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) オーバーロードによる名前衝突
メソッドのオーバーロードを使用している場合,デフォルトマッピングでは名前衝突が発生するため,名前がユニークになるようにアノテーションでカスタマイズする必要があります。
オーバーロードによる名前衝突が発生する個所と,参照先を次の表に示します。
表16-5 オーバーロードによる名前衝突の発生個所と参照先
- 注※
- ローカル名または名前空間のどちらかをカスタマイズすれば,名前衝突は発生しません。