Mon fournisseur de messagerie me donne deux types différents de WSDL à utiliser.
http://my.amazonaws.com:8000/webservice/?wsdl
http://my.amazonaws.com:8000/webservice/?singleWsdl
Le premier est un intégré WSDL. Impossible de l'utiliser pour générer WSDL2Java
packages et ne peut PAS utiliser JAX-WS pour créer une connexion.
Le second est un single WSDL. Il peut générer Java packages avec WSDL2Java de CXF 3.0 et peut utiliser JAX-WS pour créer une connexion. Il fonctionne très bien.
Veuillez me faire savoir quelle est la différence entre ces deux types de WSDL.
Sans savoir ce que ces liens renvoient, nous ne pouvons que le deviner, mais voici quelques détails qui pourraient vous aider ....
Suffixe du point de terminaison du service Web avec ?wsdl
vous obtenez un fichier WSDL. Le WSDL peut être généré par la structure au moment de l'exécution en fonction du code squelette du service Web ou peut être un fichier physique réel que le serveur renvoie simplement lorsque le paramètre URL est spécifié.
Le WSDL contient un schéma XML qui peut être spécifié à l'intérieur du WSDL lui-même ou en tant que fichiers distincts qui sont importés par le WSDL. Et maintenant, un problème se produit ...
Certains générateurs de stub de service Web ne peuvent gérer qu'un WSDL complet, avec le schéma à l'intérieur. Si le WSDL importe d'autres fichiers, les outils ne peuvent pas résoudre les importations et échouent. Cela a rendu les services Web difficiles à consommer, car les clients avaient des problèmes pour créer des talons pour interagir avec le service Web. À tel point que les fournisseurs de services ont utilisé un WSDL réel pour répondre à la ?wsdl
demande ou a commencé à écrire toutes sortes de hacks et de plugins pour que le service Web génère le WSDL complet.
Mais certains fournisseurs n'ont même pas dérangé, les clients ont donc dû écrire les hacks pour analyser le WSDL ou ils ont dû télécharger tous les fichiers, les assembler manuellement dans un seul fichier et les utiliser à la place.
Avec le temps, les gens ont reconnu cela comme un problème et des cadres adaptés pour fournir le WSDL complet, pas un avec les importations. Mais cela a généré un autre problème. Changer ce que le ?wsdl
L'URL renvoyée pourrait briser tous les hacks créés autour d'elle pour résoudre le problème d'importation. Pour cette raison, une autre convention a été choisie pour renvoyer le WSDL complet: ?singleWsdl
.
Il existe donc des cadres qui génèrent un WSDL complet, certains qui le génèrent avec des importations, certains vous permettent de spécifier un fichier physique réel, certains qui prennent en charge le ?singleWsdl
convention, d'autres non. Pas pertinent pour cette question, mais juste pour l'achèvement, il y a aussi un ?wsdl2
convention qui vous donne une définition WSDL 2.0 (?wsdl
vous obtenez un WSDL 1.1). Certains frameworks prennent en charge ?wsdl2
, certains non.
Je suppose que les problèmes que vous rencontrez sont causés par les importations de schéma, mais sans les WSDL eux-mêmes, je ne peux pas le dire. J'espère au moins que ces détails vous aideront à mieux identifier le problème.