Publishing WSDL files using a URL

Before you can publish a Web Services Description Language (WSDL) file using a URL, the Web services-enabled application should be installed and running.

The files referenced by the <wsdl-file> element in the webservices.xml file can or cannot import other WSDL or XSD files. Typically, all WSDL or XSD files are originally placed into the META-INF/wsdl directory when using enterprise JavaBeans (EJBs) or the WEB-INF/wsdl directory when using Java beans. If your WSDL or XSD files are not placed in one of these directories, the file referenced by the <wsdl-file> and its imported files are located at the same directory and copied to the wsdl/ directory for publishing purposes.

Note that EJB-based Web service applications must have an HTTP router or a Web module. Only HTTP URLs are supported for publishing.

To publish a WSDL file using a URL...

  1. Retrieve the outer-most WSDL file.The outer-most WSDL file is the WSDL file defined by the <wsdl-file> element in the webservices.xml file.

    Each Web service has an endpoint address, like http://example.com/services/stockquote. You can retrieve the outer-most WSDL file (defined by the <wsdl-file> element within the webservices.xml file) by appending the string "/wsdl" or "/wsdl/" to the endpoint address, for example,http://example.com/services/stockquote/wsdl.

  2. Retrieve the imported WSDL files.When the outer-most WSDL file imports other WSDL or XSD files, these imported files can be retrieved by appending the relative path to the URL, which is used to retrieve the outer-most WSDL file. This is also true for WSDL files that import other files. This process is similar to the use of relative hyperlinks in HTML documents. If an HTML document contains a hyperlink to other documents, the relative path is appended to create the URL to access the hyperlinked documents.

 

Usage Scenario

Suppose you have an application with the following directory structure

<module-root>/
META-INF/
WEB-INF/
webservices.xml/* define Foo service, the <wsdl-file> element points to "/wsdl/fooImpl.wsdl" 
*/ web.xml
ibm-webservices-bnd.xml
<jaxrpc-mapping-file>
wsdl/
fooImpl.wsdl/* importing foo.wsdl which is an interface wsdl */
foo.wsdl /* importing type definition for the interface */
fooTypes.xsd

If the SOAP address for the foo service is http://examples.com:9080/services/foo, the simple way to retrieve the foo's outer-most WSDL, is with the following form http://examples.com:9090/services/foo/wsdl or http://examples.com:9090/services/foo/wsdl/. The URL is redirected to http://examples.com:9090/services/foo/wsdl/fooImpl.wsdl, where fooImpl.wsdl is the name of the outer-most WSDL file.

Since the fooImpl.wsdl file has the import <import namespace="http://examples.com/foo" location="a/b/foo.wsdl>, use the URL http://examples.com:9090/services/foo/wsdl/a/b/foo.wsdl to obtain the foo.wsdl file.

 

See Also

Developing a WSDL file
Publishing WSDL files with the administrative console
Publishing WSDL files using wsadmin.sh