この項目では、URL を使用した Web サービス記述言語 (WSDL) ファイルの公開方法について説明します。
webservices.xml の <wsdl-file> エレメントで参照されるファイルは、 他の WSDL ファイルまたは XML Schema Definition (XSD) ファイルをインポートする場合があります。 通常、すべての WSDL ファイルまたは XSD ファイルは、最初は、 Enterprise JavaBean (EJB) を使用している場合には META-INF/wsdl ディレクトリーに配置され、 Java Bean を使用している場合には WEB-INF/wsdl ディレクトリーに配置されます。 WSDL ファイルまたは XSD ファイルがこれらのディレクトリーに配置されていない場合、 <wsdl-file> によって参照されるファイルとそのインポート・ファイルは、 公開を目的として wsdl ディレクトリーにコピーされます。
URL 照会ストリングには 2 つの形式があります。最初の形式は、 サービスに /wsdl を付加して、HTTP および JMS バインディングのみを戻します。 2 番目の形式は、サービスに /extwsdl を付加して、 拡張 WSDL ファイル (HTTP、JMS、および EJB バインディングなど) を戻します。WSDL ファイルに EJB バインディングのみが含まれ、 /wsdl 照会が使用される場合は、ブラウザーに、 WSDL ファイルに HTTP バインディングも JMS バインディングも存在しないという意味のエラー・メッセージが表示されます。 このエラー・メッセージでは、代わりに /extwsdl 照会の使用が提案されます。 URL を使用して WSDL ファイルを公開する場合は、 アプリケーションに Web モジュールが必要です。この Web モジュールは、 アプリケーションが提供するか、HTTP ルーター・モジュールの形を取るかのいずれかです。 EJB アプリケーションに、JMS バインディングか EJB Web サービス・バインディングのみを持つ WSDL ファイルが含まれている場合は、 endptEnabler コマンドを使用して、HTTP ルーター・モジュールをアプリケーションに追加することができます。
URL を使用して WSDL ファイルを公開するには、以下のようにします。
<module-root>/ WEB-INF/ webservices.xml /* the <wsdl-file> element points to "WEB-INF/wsdl/fooImpl.wsdl"*/ web.xml ibm-webservices-bnd.xml wsdl/ fooImpl.wsdl /* imports foo.wsdl which is an interface wsdl */ foo.wsdl /* type definition for the interface */
foo サービスの SOAP アドレスが http://examples.com:9080/services/foo の場合、foo サービスの最外部 WSDL を検索する単純な方法は、http://examples.com:9090/services/foo/wsdl または http://examples.com:9090/services/foo/wsdl/ という形式を使用することです。URL は http://examples.com:9090/services/foo/wsdl/fooImpl.wsdl にリダイレクトされます。この fooImpl.wsdl は、最外部 WSDL ファイルの名前です。
fooImpl.wsdl ファイルにはインポート <import namespace="http://examples.com/foo" location="a/b/foo.wsdl> があるため、URL http://examples.com:9090/services/foo/wsdl/a/b/foo.wsdl を使用して foo.wsdl ファイルを取得します。