Développement d'un client JAX-WS à partir d'un fichier WSDL
Les outils JAX-WS (Java™ API for XML-Based Web Services) prennent en charge la génération d'artefacts Java. Vous devez développer des clients de services Web JAX-WS statiques lors du démarrage avec un fichier WSDL.
Avant de commencer
S'il s'agit d'un fichier local, l'URL est du type suivant : file:unité:\chemin\nom_fichier.wsdl.
S'il s'agit d'un fichier local, l'URL est du type suivant : file:/chemin\nom_fichier.wsdl.
Vous pouvez également spécifier des fichiers locaux à l'aide du chemin d'accès au système de fichiers absolu ou relatif.
Pourquoi et quand exécuter cette tâche
- Interface SEI (Service endpoint interface)
- Classe de service
- Classe d'exception qui est mappée à partir de la classe wsdl:fault (le cas échéant)
- Valeurs générées de type JAXB (Java Architecture for XML Binding), qui sont des classes Java mappées à partir de types de schéma XML.


Outre l'utilisation des outils à partir de la ligne de commande, vous pouvez appeler ces outils JAX-WS à partir des environnements de génération Ant. Utilisez la tâche Ant com.sun.tools.ant.WsImport à partir de l'environnement de génération Ant pour appeler l'outil wsimport. Pour fonctionner correctement, la tâche Ant doit être appelée par le script ws_ant.
Procédure
![[Windows]](../images/windows.gif)
racine_serveur_app\bin\wsimport.bat wsdl_URL
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
racine_serveur_app/bin/wsimport.sh wsdl_URL
![[IBM i]](../images/iseries.gif)
racine_serveur_app/bin/wsimport wsdl_URL
- Utilisez l'option -verbose pour voir une liste des fichiers générés lorsque vous exécutez la commande.
- L'option -keep permet de conserver les fichiers Java générés.
- L'option -wsdlLocation permet de spécifier l'emplacement du fichier WSDL.
Pratiques recommandées: La procédure recommandée pour vous assurer que vous produisez un fichier EAR de client de service compatible avec d'autres systèmes consiste à conditionner le document WSDL dans le module d'application comme un fichier JAR (Java archive) ou un fichier WAR (web archive). Vous pouvez indiquer un URI relatif pour l'emplacement du fichier WSDL en utilisant l'attribut d'annotation -wsdllocation. Par exemple, si votre fichier MyService.wsdl se trouve dans le répertoire META-INF/wsdl/, exécutez ensuite l'outil wsimport et utilisez l'option -wsdllocation pour spécifier la valeur à employer pour l'emplacement du fichier WSDL. Ceci garantit que les artefacts générés contiennent les informations -wsdllocation correctes, requises lorsque l'application est chargée sur la console d'administration, par exemple :
bpracwsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
- Utilisez l'option -b si vous utilisez des personnalisations de WSDL ou de schéma pour spécifier les fichiers de liaisons externes qui contiennent vos personnalisations.
Vous pouvez personnaliser les liaisons dans le fichier WSDL pour activer les pièces jointes ou les mappages asynchrones. Pour générer les interfaces asynchrones, ajoutez la déclaration de liaison enableAsyncMapping de personnalisation côté client à l'élément wsdl:definitions ou dans un fichier de liaison externe qui est défini dans le fichier WSDL. Utilisez la déclaration de liaison enableMIMEContent dans votre fichier de liaisons de serveur ou le client personnalisé pour activer ou désactiver les règles de mappage mime:content par défaut. Pour plus d'informations sur les déclarations de liaison personnalisées, voir le chapitre 8 de la spécification JAX-WS.
Pour plus d'informations sur la commande et les options supplémentaires qui peuvent être spécifiées, voir la rubrique relative à la commande wsimport.
Résultats
Exemple
- Copiez le fichier ping.wsdl suivant dans un répertoire temporaire.
<?xml version="1.0" encoding="UTF-8"?> <!-- * Ce programme peut être utilisé, exécuté, copié, modifié et distribué * sans paiement d'une redevance aux fins de développement, d'utilisation, de marketing ou de distribution. --> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PingService" targetNamespace="http://com/ibm/was/wssample/sei/ping/"> <wsdl:types> <xsd:schema targetNamespace="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="pingStringInput"> <xsd:complexType> <xsd:sequence> <xsd:element name="pingInput" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="pingOperationRequest"> <wsdl:part element="tns:pingStringInput" name="parameter" /> </wsdl:message> <wsdl:portType name="PingServicePortType"> <wsdl:operation name="pingOperation"> <wsdl:input message="tns:pingOperationRequest" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PingSOAP" type="tns:PingServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="pingOperation"> <soap:operation soapAction="pingOperation" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="PingService"> <wsdl:port binding="tns:PingSOAP" name="PingServicePort"> <soap:address location="http://localhost:9080/WSSampleSei/PingService" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
- Exécutez la commande wsimport à partir du répertoire racine_serveur_app\bin\.
app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
Les systèmes d'exploitation tels qu'AIX ou Linux placent le script sur le shell parent afin qu'il hérite des variables exportées en exécutant la commande suivante :
à partir du répertoire . /racine_serveur_app>/bin. Exécutez la commande wsimport suivante :. ./setupCmdLine.sh (Notez l'espace entre les points.)
app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl
app_server_root/bin/wsimport -keep -verbose ping.wsdl
com\ibm\was\wssample\sei\ping\ObjectFactory.java
com\ibm\was\wssample\sei\ping\package-info.java
com\ibm\was\wssample\sei\ping\PingServicePortType.java
com\ibm\was\wssample\sei\ping\PingService.java
com\ibm\was\wssample\sei\ping\PingStringInput.java
Les fichiers ObjectFactory.java, PingService.java, et PingServicePortType.java sont les fichiers de classes Java générés à utiliser pour réaliser un package des artefacts Java avec votre implémentation client dans un fichier d'archive Java (JAR) ou dans un fichier WAR.