Publishing WSDL files using a URL
You can publish a Web Services Description Language (WSDL) file using a URL.
Before you begin
The files
referenced by the <wsdl-file>
element in the webservices.xml might
import other WSDL or XML Schema Definition (XSD) files. Typically,
all WSDL or XSD files are initially placed into the META-INF/wsdl directory
when using Enterprise JavaBeans (EJB)
or the WEB-INF/wsdl directory when using Java™. 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 copied to the wsdl directory
for publishing purposes.
There are two different forms of URL
query strings. The first appends /wsdl
to the service
and returns only HTTP and JMS bindings. The second appends /extwsdl
to
the service and returns the extended WSDL file, including HTTP, JMS,
and EJB bindings. If a WSDL file contains only EJB bindings and the /wsdl
query
is used, an error message displays in the browser saying there are
no HTTP or JMS bindings in the WSDL file. The error message suggests
using the /extwsdl
query instead. Publishing a WSDL
file using a URL requires that the application have a web module;
either provided by the application or in the form of an HTTP router
module. If an EJB application contains a WSDL file with only JMS or
EJB Web service bindings, the endptEnabler command
can be used to add an HTTP router module to the application.
About this task
To publish a WSDL file using a URL:
Procedure
Example
<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 */
If the SOAP address for the foo service is http://examples.com:9080/services/foo
,
the simple way to retrieve the foo service'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.