7
votes

Personnalisations JAXB - Plusieurs schémas à l'intérieur de la WSDL et Schemalocation

J'ai un WSDL qui contient 3 schémas à l'intérieur de son élément "Types". Les schémas ne sont pas définis dans des xsds externes mais à l'intérieur de l'élément Types.

Je veux personnaliser un élément à l'intérieur du schéma numéro 2 et modifier son nom pour éviter un conflit.

donc dans la schémax faire ça? Malgré la question, j'ai la voie à suivre: xxx

mais je ne suis pas celui qui l'a trouvé mais une collègue de mes miens qui ne travaille plus avec moi. Y a-t-il une ressource où je peux trouver l'explication même si je le comprends? Un lien ou un livre? Quelque part où je peux trouver aussi d'autres exemples.

Mon problème est la valeur Schemalocation (../ WSDL-Files / MYWSDL.WSDL # Types? Schema2) Pas la XPath. Je veux connaître toutes les possibilités de faire référence à un schéma à l'intérieur d'une WSDL. J'ai besoin d'une documentation pour cela ou quelque chose.

Merci beaucoup


4 commentaires

Mon problème est la valeur Schemalalocation (../ WSDL-Files / MyWSDL.WSDL # Types? Schema2) Ce n'est pas le XPath, etc. Je veux connaître toutes les possibilités de référencer un schéma à l'intérieur d'une WSDL, etc. J'ai besoin d'une documentation pour cela ou quelque chose. Merci encore


Quel outil utilisez-vous pour lier le WSDL?


Vous devez modifier votre question et mettre le contenu de votre commentaire en tant que section "mise à jour:". Puis supprimez le commentaire.


La syntaxe que vous avez donnée pour spécifier un schéma à l'intérieur d'un fichier WSDL est horrible - mais cela fonctionne! Dans CXF, j'ai pu faire un accès de nœud basé sur XPath à l'aide d'un suffixe de # Type6 , où le schéma en question était le 6ème du fichier. SCD suggéré par Skaffman fonctionne effectivement beaucoup mieux, mais vous m'avez aidé à résoudre ce problème particulier, tellement merci!


3 Réponses :


3
votes

Le JAXB RI V2.1 Ajout de la prise en charge de [Componateurs de schéma] [1], qui vous permet de référencer des composants de schéma symboliquement, plutôt que par leur emplacement de fichier et son emplacement XPath. En principe, cela est beaucoup plus agréable à utiliser, mais je ne l'ai jamais utilisé moi-même.

Je ne suis pas sûr à quel point cela est largement soutenu. Il y en a très peu de mention de celui-ci ailleurs autre que cette entrée de blog. Il convient de mentionner qu'il faisait partie de la spécification proposée pour JAXB 2.1, de sorte que si cela a été passé, il devrait être mis en œuvre par chaque mise en œuvre JAXB 2.1, y compris Java6. C'est possible, cependant, qu'il n'a jamais été réellement ajouté à la spécification.


3 commentaires

Merci mec! Ça a fière allure. Mais avez-vous quelque chose qui décrit ceux-ci: #Types? Schema2 Merci!


@DAULTMATETROOPER: Le point de SCD est que vous n'avez pas besoin de spécifier l'emplacement de schéma dans la personnalisation de la liaison, vous vous référez aux éléments de schéma par nom.


D'après ce que j'ai trouvé, SCD n'est toujours pas pris en charge officiellement, mais Sun's XJC l'utilisera s'il est donné l'option -extension et des outils dépendants tels que CXF Travailler avec elle aussi. La syntaxe est encore plus difficile à grok que XPath, mais elle peut être faite pour fonctionner.



2
votes

avait un problème similaire (cinq schémas de types de noms communs) et d'une manière ou d'une autre n'avoir pas de SCD à fonctionner correctement. Ma solution suivait:

CustomBinding.xml: P>

<target name="xjc_generate">
    <exec executable="xjc" >
      <arg value="-wsdl" />
      <arg value="${wsdl.base}/service/wsdlfile.wsdl" />
      <arg value="-d" />
      <arg value="${dir.src}" />
      <arg value="-b" />
      <arg value="${wsdl.base}/service/custombinding.xjb" />
    </exec>
</target>


0 commentaires

0
votes

Vous devez spécifier l'emplacement du schéma dans le WSDL comme celui-ci - s'il s'agit du 2e schéma.

E.g: myWsdl.wsdl # Types2
Si le 10ème, MyWSDL.WSDL # Types10

espérons que cela aide quelqu'un. xxx


0 commentaires