Quelle est la différence entre les deux?wsdl et?paramètres singleWsdl
Mon fournisseur de messagerie me donne deux types différents de WSDLs à 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 des paquets WSDL2java
et
impossible d'utiliser JAX-WS pour créer une connexion.
Le second est un célibataire WSDL. Il peut générer des packages Java avec WSDL2JAVA de CXF 3.0 et peut utiliser JAX-WS pour créer une connexion. Il fonctionne très bien.
Faites-moi savoir quelle est la différence entre ces deux types de WSDLs.
1 réponses
Sans savoir ce que ces liens renvoient, nous ne pouvons que deviner, mais voici quelques détails qui pourraient vous aider....
En suffixant le point de terminaison du service web avec ?wsdl
Vous obtenez un fichier WSDL. Le WSDL peut être généré par le framework à 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é soit dans le WSDL lui-même, soit comme séparer les fichiers 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 rendait les services web difficiles à consommer car les clients avaient des problèmes pour créer des stubs pour interagir avec le service web. À tel point que les fournisseurs de services ont utilisé un WSDL réel pour répondre à la requête ?wsdl
ou ont commencé à écrire toutes sortes de hacks et des plugins pour que le service web génère le WSDL complet.
Mais certains fournisseurs n'ont même pas pris la peine, les clients ont 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 l'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 des importations. Mais cela a généré un autre problème. Changer ce que l'URL ?wsdl
retourné pourrait casser tous ces hacks créés autour de lui pour résoudre le problème d'importation. Pour cette raison, une autre convention a été choisie pour renvoyer le WSDL complet: ?singleWsdl
.
Il y a donc des frameworks qui génèrent un WSDL complet, certains qui le génèrent avec des importations, d'autres vous permettent de spécifier un fichier physique réel, d'autres qui supportent la convention ?singleWsdl
, d'autres non. pas pertinent pour cette question, mais juste pour l'achèvement, il y a aussi une convention ?wsdl2
qui vous donne une définition WSDL 2.0 (?wsdl
Vous obtenez un WSDL 1.1). Certains cadres soutiennent ?wsdl2
, certains ne le font pas.
Je suppose que les problèmes que vous avez sont causés par les importations de schémas, mais sans les WSDLs eux-mêmes, Je ne peux pas le dire. Espérons au moins que ces détails vous aident à mieux identifier le problème.