Commande wsimport pour les applications JAX-WS
L'outil de ligne de commande wsimport traite un fichier WSDL (Web Services Description Language) existant et génère les artefacts requis pour le développement des applications de service Web JAX-WS (API Java™ des services Web XML). Les artefacts générés sont compatibles avec Java 5, ce qui les rend portables sur différentes versions et plateformes Java.
L'outil de ligne de commande wsimport prend en charge l'approche ascendante pour le développement de services Web JAX-WS. Lorsque vous démarrez à l'aide d'un fichier WSDL existant, utilisez l'outil de ligne de commande wsimport pour générer les artefacts JAX-WS requis.


- Interface SEI (Service Endpoint Interface) : Il s'agit de la représentation Java annotée du fichier WSDL pour le service web. Cette interface permet d'implémenter des noeuds finaux JavaBeans ou de créer des instances de client Dynamic Proxy.
- Classe d'extension javax.xml.ws.Service : Il s'agit d'une classe générée qui permet l'extension de la classe javax.xml.ws.Service. Cette classe sert à configurer et créer des instances proxy et dispatch dynamiques.
- Beans de données obligatoires, y compris tous les beans JAXB (Java Architecture for XML Binding) requis pour la modélisation des données de service web.

- Vous devez définir tous vos services dans le fichier WSDL principal. Les services définis dans un fichier WSDL importé ne sont pas traités par l'outil wsimport.
- Si vous exécutez l'outil wsimport sur un fichier WSDL implémentant un modèle de style Document ou Littéral, les éléments complexTypes qui définissent les types d'entrée et de sortie doivent comporter des noms uniques afin d'éviter des conflits dans la liste de paramètres pour l'opération.
- Si vous exécutez l'outil wsimport et prenez un URI (Uniform Resource Identifier) ?wsdl en tant que paramètre pour un fichier WSDL, vérifiez que vous employez l'URI WSDL résolu. Dans le profil complet, l'outil wsimport résout correctement l'URI ?wsdl, mais pas forcément d'autres URI liés auxquels il est fait référence. Dans le profil Liberty, l'outil wsimport résout correctement l'URI ?wsdl, ainsi que d'autres URI liés auxquels il est fait référence.
Outre l'utilisation des outils à partir de la ligne de commande, vous pouvez appeler ces outils JAX-WS à partir de l'environnement de construction Ant pour WebSphere Application Server Traditional. Utilisez la tâche Ant com.sun.tools.ws.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.
Syntaxe
La syntaxe de ligne de commande est la suivante :
![[Windows]](../images/windows.gif)
racine_serveur_app\bin\wsimport.bat [options] WSDL_URI
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
racine_serveur_app/bin/wsimport.sh [options] WSDL_URI
![[IBM i]](../images/iseries.gif)
racine_serveur_app/bin/wsimport [options] WSDL_URI
Paramètres
URI_WSDL est le seul paramètre obligatoire. Les paramètres suivants sont facultatifs pour la commande wsimport :
- -b <chemin>
- Indique les fichiers de liaisons JAX-WS ou JAXB. Vous pouvez spécifier plusieurs fichiers de liaisons JAX-WS et JAXB à l'aide de l'option -b. Cependant, chaque fichier doit être spécifié avec sa propre option -b.
- -B <optionJaxb>
- Indique que cette option doit être transmise au compilateur de schéma JAXB.
- -catalog
- Indique le fichier catalogue permettant la résolution des références d'entité externes. Il prend en charge les formats de catalogue TR9401, XCatalog et OASIS XML.
- -d <répertoire>
- Indique l'emplacement dans lequel stocker les fichiers de sortie générés.
- -extension
- Indique si des extensions personnalisées doivent être admises pour les fonctionnalités non définies par la spécification JAX-WS. L'utilisation des extensions personnalisées peut donner lieu à des applications non portables ou non interopérables avec d'autres implémentations.
- -help
- Affiche le menu d'aide.
- -httpproxy:<hôte>:<port>
- Indique un proxy HTTP. La valeur de port par défaut est 8080.
- -keep
- Indique si les fichiers source générés doivent être conservés.
- -p <nom_package>
- Indique un package cible à l'aide de cette option de ligne de commande et remplace toute personnalisation de liaison de schéma et de fichier WSDL pour le nom de package et l'algorithme de nom de package par défaut défini dans la spécification JAX-WS.
- -quiet
- Indique de supprimer la sortie wsimport.
- -s <répertoire>
- Indique le répertoire dans lequel placer les fichiers source générés.
- -target <version>
- Indique de générer un code compatible avec un niveau de spécification JAX-WS particulier. Spécifiez la version 2.0 ou 2.1 pour générer du code compatible avec la spécification JAX-WS 2.0 ou JAX-WS 2.1 respectivement. La spécification de la version 2.1 indique que le code à générer doit être compatible avec la spécification JAX-WS 2.1. La valeur par défaut est la version 2.2 et génère un code compatible pour la spécification JAXB 2.2.
- L'option target est requise pour le profil Liberty.
- -verbose
- Indique les messages de sortie identifiant l'opération en cours du compilateur.
- -version
- Imprime les informations de version. Si vous spécifiez cette option, seules les informations de version sont générées et le traitement de commande normal n'a pas lieu.
- -wsdlLocation
- Indique la valeur @WebServiceClient.wsdlLocation.
Configurations prises en charge: L'outil wsimport ne définit pas la valeur @WebService.wsdlLocation par défaut ou lorsque l'attribut -wsdlLocation est indiqué. L'outil de ligne de commande wsimport met uniquement à jour l'annotation @WebServiceClient.wsdlLocation. Vous pouvez mettre manuellement à jour l'annotation @WebService.wsdlLocation avec une URL relative indiquant l'emplacement du fichier WSDL (Web Services Description Language). Si l'annotation @WebService.wsdlLocation se trouve dans une classe d'implémentation de noeud final, la valeur doit être une URL relative et le document WSDL référencé doit être inclus dans l'application.sptcfg
Eviter les incidents: Si vous spécifiez une URL HTTPS pour le paramètre -wsdlLocation, l'outil wsimport génère une classe de service avec un constructeur sans argument qui n'est pas valide. Evitez d'instancier votre service à l'aide du constructeur de service sans argument. Transmettez plutôt l'URL HTTPS à l'un des constructeurs de classe de service qui utilise une URL WSDL comme argument, par exemple :
gotchaMyService("https://example.ibm.com/My?wsdl");
- -clientJar
- wsimport on service WSDL generates the necessary classes that are needed for web service invocation. But not all the information that is required by the JAX-WS runtime is captured in the SEI or the WebServiceClient through standard web service annotations. The generated class has the location of the WSDL, so that it can retrieve the additional metadata of the service at runtime. However, an extra connection is required just to access the metadata each time a service instance is created, which increases the network usage. By using the -clientJar option for wsimport, the WSDL and schema are automatically downloaded and all the generated client-side artifacts are packaged into a JAR file. Therefore, you can include the generated JAR file by using this new option in the class path and do not need to fetch the WSDLs from the end point each time a service instance is created, thus saving on network usage.