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.

22
demandé sur Bogdan 2014-08-13 07:26:51

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.

29
répondu Bogdan 2014-08-15 13:38:44