Publication de fichiers WSDL à l'aide d'une adresse URL
Vous pouvez publier un fichier WSDL (Web Services Description Language) à l'aide d'une URL.
Avant de commencer
Les fichiers référencés par l'élément <wsdl-file> dans webservices.xml peuvent importer d'autres fichiers WSDL ou XSD (XML Schema Definition, langage de définition de schéma XML). En général, tous les fichiers WSDL ou XSD sont initialement placés dans le répertoire META-INF/wsdl en cas d'utilisation d'EJB (JavaBeans) ou dans le répertoire WEB-INF/wsdl en cas d'utilisation de Java™. Si vos fichiers WSDL ou XSD ne se trouvent pas dans l'un de ces répertoires, le fichier référencé par l'élément <wsdl-file> et ses fichiers importés sont copiés dans le répertoire wsdl à des fins de publication.
Il existe deux formes différentes de chaînes de requête d'URL. La première ajoute /wsdl à la suite du service et renvoie seulement les liaisons HTTP et JMS. La seconde ajoute /extwsdl à la suite du service et renvoie le fichier WSDL étendu, dans lequel figurent les liaisons HTTP, JMS et EJB. Si un fichier WSDL contient exclusivement des liaisons d'EJB et que la requête /wsdl est utilisée, un message d'erreur s'affiche dans le navigateur, indiquant que le fichier WSDL ne contient pas de liaison HTTP ou JMS. Ce message d'erreur conseille d'utiliser la requête /extwsdl à la place. La publication d'un fichier WSDL à l'aide d'une URL exige que l'application comporte un module Web fourni soit par l'application elle-même, soit sous la forme d'un module routeur HTTP. Si une application EJB contient un fichier WSDL dans lequel figurent seulement des liaisons JMS ou EJB, la commande endptEnabler peut être utilisée pour ajouter un module routeur HTTP à cette application.
Pourquoi et quand exécuter cette tâche
Pour publier un fichier WSDL à l'aide d'une adresse URL, procédez comme suit :
Procédure
Exemple
<module-root>/
WEB-INF/
webservices.xml /* l'élément <wsdl-file> pointe sur "WEB-INF/wsdl/fooImpl.wsdl"*/
web.xml
ibm-webservices-bnd.xml
wsdl/
fooImpl.wsdl /* importe foo.wsdl qui est une interface wsdl */
foo.wsdl /* définition de type pour l'interface */
Si l'adresse SOAP pour le service foo est http://examples.com:9080/services/foo, le moyen le plus simple pour extraire le WSDL le plus externe du service est d'utiliser la forme http://examples.com:9090/services/foo/wsdl ou http://examples.com:9090/services/foo/wsdl/. L'URL est redirigée vers http://examples.com:9090/services/foo/wsdl/fooImpl.wsdl, où fooImpl.wsdl est le nom du fichier WSDL le plus externe.
Comme le fichier fooImpl.wsdl comporte l'importation <import namespace="http://examples.com/foo" location="a/b/foo.wsdl>, utilisez l'URL http://examples.com:9090/services/foo/wsdl/a/b/foo.wsdl pour obtenir le fichier foo.wsdl.