10.6.2 発行されるメタデータ
リクエスト時の条件と,発行されるメタデータの対応を次の表に示します。
項番 |
リクエスト時の条件 |
発行されるメタデータ |
Webサービスの適用可否 |
|
---|---|---|---|---|
POJO |
EJB※ |
|||
1 |
javax.jws.WebServiceアノテーション(Webサービス実装クラスの場合),またはjavax.xml.ws.WebServiceProviderアノテーション(プロバイダ実装クラスの場合)にwsdlLocation属性がある場合 |
wsdlLocation属性に指定された場所にあるWSDLファイルが返されます。 |
○ |
○ |
2 |
javax.jws.WebServiceアノテーション(Webサービス実装クラスの場合),またはjavax.xml.ws.WebServiceProviderアノテーション(プロバイダ実装クラスの場合)にwsdlLocation属性の指定はないが,デプロイされたWARファイルのWEB-INF/wsdlディレクトリにwsdl:service要素を持つWSDLファイルがある場合 |
デプロイされたWebアプリケーションのWEB-INF/wsdlディレクトリにあるWSDLファイルが返されます。 |
○ |
− |
3 |
WSDLがWebアプリケーション内にない場合 (項番1および項番2以外の場合) |
対象がWebサービス実装クラスの場合は,WSDLが新たに生成されて返されます。 対象がプロバイダ実装クラスの場合は,メタデータは発行されません。 |
○ |
○ |
メタデータが発行される前提条件は,Webサービスのアプリケーションがエラーもなく,正常にデプロイされ実行が開始されている状態です。
メタデータの発行に関する注意事項を示します。
-
wsdlLocation属性には,「WEB-INF/wsdl」または「META-INF/wsdl」から始まるWSDLファイルへの相対パスを指定してください。wsdlLocation属性に指定されたWSDLファイルが,WEB-INF/wsdlディレクトリまたはMETA-INF/wsdlディレクトリにない場合,またはWSDLの構文として不正な場合は,Webサービスのデプロイ時にエラーとなります。
-
wsdlLocation属性に指定されたWSDLファイルにwsdl:service要素が含まれていない場合は,Webサービスのデプロイ時にエラーとなります。
-
項番1,項番2の場合であっても,WEB-INF/wsdlディレクトリまたはMETA-INF/wsdlディレクトリ以下にあるWSDLファイルが次のどちらかに該当すると,Webサービスのデプロイ時にエラーとなります。
-
wsdl:service要素を持つファイルが複数ある。
-
wsdl:portType要素を持つファイルが複数ある(Webサービス実装クラスの場合)。
-
-
項番1,項番2の場合であっても,そのWSDLファイルを基に,要求されたWebアプリケーションのWSDLとして内容を更新したものを返します。
プロバイダ実装クラスの場合,基本的にWSDLを持つ必要がありません。また,このため,標準仕様でもjavax.xml.ws.WebServiceProviderアノテーションとWSDLのマッピング規則は定義されていません。そのため,メタデータを発行したい場合,作成したWSDLをWARファイルに適切に含めておく必要があります(Webサービス実装クラスの場合とは異なり,JAX-WSエンジンによって自動生成されません)。また,WARファイルにcosminexus-jaxws.xmlを含めない場合,javax.xml.ws.WebServiceProviderアノテーションのportName属性とtargetNamespace属性は必須です。WSDLの定義内容に従って,適切な値を設定してください。cosminexus-jaxws.xmlについては,「10.3 cosminexus-jaxws.xmlによるカスタマイズ」を参照してください。