L'application externe JAXB de liaison de fichiers à des éléments du schéma importé à partir de WSDL
L'expression XPath dans mon externe de liaison des fichiers ne peuvent pas cibler les éléments dans mes schémas XML qui sont importés dans mon WSDL.
Tout fonctionne si je ne inline liaison de personnalisation, mais je voulais vraiment avoir externes de liaison des fichiers de cette façon, je n'ai jamais écraser accidentellement(actualiser) les fichiers contenant mes personnalisations.
Le début de ma liaison de fichier:
<jaxb:bindings
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
version="2.1">
<jaxb:bindings schemaLocation="../wsdl/localhost_7001/ExampleSessionBean/ExampleSessionBeanService.wsdl#types?schema1">
<jaxb:bindings node="//xs:schema[@targetNamespace='urn:myExample']">
Mon WSDL contient:
<types>
<xsd:schema>
<xsd:import namespace="urn:myExample" schemaLocation="http://localhost:7001/ExampleSessionBean/ExampleSessionBeanService?xsd=1"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://ejbs/" schemaLocation="http://localhost:7001/ExampleSessionBean/ExampleSessionBeanService?xsd=2"/>
</xsd:schema>
</types>
Peu importe ce que je fais XPath peut pas trouver quoi que ce soit dans le xsd:import ed schémas. L'erreur que j'obtiens est:
[ERROR] XPath evaluation of "//xs:schema[@targetNamespace='urn:myExample']" results in empty target node
J'ai essayé d'accéder au xs:schema par numéro d'index à la place de l'espace de noms et que cela ne fonctionne pas. Il semble que ma expressions XPath ne pouvez pas joindre des éléments de schémas importés...est-il de toute façon de résoudre ce problème?
C'est une Java SE 7 projet en cours d'élaboration sous NetBean 7.2. Je suis à l'aide de NetBeans pour faire tous mes wsimport genre de choses si qui importe, mais la sortie de la commande semble assez standard pour les RI/Métro.
EDIT:
J'ai compris que je peux obtenir une externe de liaison de fichiers à des travaux si j'utilise de l'IFL. Cette XPath exemple, ne fonctionne pas:
<bindings node="//xsd:schema[@targetNamespace='urn:myExample']">
<bindings node="//xs:complexType[@name='myType']">
<class name="MyClass"/>
</bindings>
</bindings>
Mais cette DCG exemple.
<bindings scd="x-schema::tns" xmlns:tns="urn:myExample">
<bindings scd="~tns:myType">
<class name="MyClass"/>
</bindings>
</bindings>
Est-ce une chose connue où XPath ne fonctionne pas dans xjb fichiers lors de l'utilisation de wsimport mais DCG?
SCD "~tns:myelement" didnt match any schema component
OriginalL'auteur Chase | 2013-02-26
Vous devez vous connecter pour publier un commentaire.
vous devriez l'utiliser comme:
Être prudent avec les espaces de noms
Tout est expliqué ici:
https://jax-ws.java.net/nonav/2.1.2/docs/customizations.html
Cela semblait bon début, mais pour quelque raison, le XPath ne pas sélectionner tous les nœuds. Comment déboguer le résultat XPath (à l'intérieur) cet outil? Comment dois-je le dire "imprimer tout ce que vous voyez"? Mise: j'ai trouvé une erreur dans mon contraignant, j'ai été en utilisant
jaxb:bindings
au lieu dejaxb:schemaBindings
. Le XPath compile maintenant.Que java.net-URL ne fonctionne pas, as-tu veux dire javaee.github.io/métro-jax-ws/doc/guide utilisateur/... ?
OriginalL'auteur elro
Vous pouvez compiler chacun des schémas XML pour Java classes individuellement. Ensuite, vous pouvez tirer parti de l'épisode de fichiers, de sorte que les classes générées peuvent être utilisées lors de la compilation des schémas d'importation XML schéma.
Ci-dessous est un exemple de la façon dont vous produisez un épisode de fichier.
Et ci-dessous est un exemple de la façon dont vous consommez et l'épisode de fichier. L'épisode fichier est juste un JAXB externe fichier de liaisons et donc est spécifié à l'aide de la
-b
drapeau.Pour Plus D'Informations
Je ne dis pas que vous ne devriez pas le prix de la générosité; c'est votre générosité. Mais ce n'est pas vraiment une réponse à la question.
OriginalL'auteur Blaise Doughan
Pour de nouvelles personnes, vous pouvez simplement utiliser deux de liaison de fichiers, celui appliqué aux wsdl et l'autre pour le schéma à l'aide de l'option-b de wsdl2java cxf de génération de code de la classe accepte liaison multiple des fichiers:
Contenu du fichier "jaxws-bindings.xml':
Contenu de 'jaxb-bindings.xml':
OriginalL'auteur najib.bey
L'ajout de cette section de mon JAXB configuration contribué à faire disparaître une erreur similaire:
Configuration complète:
Crédits:
OriginalL'auteur xilef