Erreur JAX-WS sur le fichier WSDL: "Error resolving component 's: schema'"

L'Erreur

j'utilise wsimport dans un projet Java pour générer des sources pour trois services web SOAP. Les deux premiers fonctionnent bien: j'utilise le plugin JAX-WS Maven pour saisir le fichier WSDL et générer les fichiers source Java correspondants.

Cela échoue pour un service web; j'obtiens l'erreur suivante:

[jaxws:wsimport]
Processing: /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
jaxws:wsimport args: [-s, /home/me/NetBeansProjects/Admin/AdminWeb/target/generated-sources/jaxws-wsimport, -d, /home/me/NetBeansProjects/Admin/AdminWeb/target/classes, -verbose, -catalog, /home/me/NetBeansProjects/Admin/AdminWeb/src/jax-ws-catalog.xml, -wsdllocation, http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx?WSDL, -target, 2.0, -extension, -Xnocompile, /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl]
parsing WSDL...


src-resolve.4.2: Error resolving component 's:schema'. It was detected that 's:schema' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1'. If this is the incorrect namespace, perhaps the prefix of 's:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1'.
  line 80 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl#types?schema1

undefined element declaration 's:schema'
  line 80 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

undefined element declaration 's:schema'
  line 127 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl

undefined element declaration 's:schema'
  line 142 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl


Le Coupable

la différence entre ce fichier WSDL et ceux qui fonctionnent est ce qu'il y a au lignes notées dans le message d'erreur, lignes 80, 127 et 142:

<s:element ref="s:schema" />

Note: l'élément racine du fichier wsdl définit ainsi l'espace de noms" s":

xmlns:s="http://www.w3.org/2001/XMLSchema" 


Ce que j'ai Essayé

j'ai fait mes recherches. Il semble que d'autres personnes ont eu des problèmes similaires, avec des solutions de "just don't use <s:element ref="s:schema" />", à "utiliser une étiquette d'importation", à une solution inconnue qui était apparemment sur l'ancienne java.net forum (avant qu'il ne soit pris en bas, un incendie criminel de la Bibliothèque d'Alexandrie de Java).

  • j'ai essayé de mettre l'instruction importer juste à l'intérieur de l'élément qui contient le problème des balises: <s:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="http://www.w3.org/2001/XMLSchema.xsd" />. wsimport me donne une nouvelle erreur:

    [jaxws:wsimport]
    Processing: /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    jaxws:wsimport args: [-s, /home/me/NetBeansProjects/Admin/AdminWeb/target/generated-sources/jaxws-wsimport, -d, /home/me/NetBeansProjects/Admin/AdminWeb/target/classes, -verbose, -catalog, /home/me/NetBeansProjects/Admin/AdminWeb/src/jax-ws-catalog.xml, -wsdllocation, http://erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx?WSDL, -target, 2.0, -extension, -Xnocompile, /home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl]
    parsing WSDL...
    
    
    Element "{http://www.w3.org/2001/XMLSchema}annotation" shows up in more than one properties.
      line 248 of http://www.w3.org/2001/XMLSchema.xsd
    
    The following location is relevant to the above error
      line 242 of http://www.w3.org/2001/XMLSchema.xsd
    
    Property "Any" is already defined. Use &lt;jaxb:property> to resolve this conflict.
      line 108 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    
    The following location is relevant to the above error
      line 109 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    
    Property "Any" is already defined. Use &lt;jaxb:property> to resolve this conflict.
      line 184 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    
    The following location is relevant to the above error
      line 185 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    
    Property "Any" is already defined. Use &lt;jaxb:property> to resolve this conflict.
      line 199 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    
    The following location is relevant to the above error
      line 200 of file:/home/me/NetBeansProjects/Admin/AdminWeb/src/wsdl/erp-app-devel.srv.mycompany.ca/EgTestReportEngine/Service.asmx.wsdl
    

    les lignes 108 et 109 référencées dans cette erreur sont: (les lignes 184-5, 199-200 sont similaires)

    <s:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax" />
    <s:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax" />
    
  • j'ai essayé de mettre à niveau jaxws-maven-plugin de 1.10 à 2.2. Même problème.

  • Voici une solution possible -- j'essaye de comprendre comment implémenter ceci en utilisant le plugin JAX-WS Maven. Tous les conseils?


Conclusion

des idées? Tout complément d'information dont vous avez besoin? J'ai omis de le pom.xml et Service.asmx.les fichiers wsdl par souci de brièveté, mais pourraient les inclure s'ils contiennent des informations plus importantes.

Merci vous!


Addenda

Voici une autre personne ayant le même problème, si cela est utile à tout répondeur potentiel. Voici encore un autre problème similaire. Je ne comprends pas vraiment cet article, mais cela semble impliquer que je dois analyser le SOAP XML manuellement! Horreur!

22
demandé sur Nick 2012-11-21 22:35:50

5 réponses

j'ai résolu cela en adaptant la méthode de Vivek Pandey pour Maven, tandis que la mise à jour de la jaxws-maven-plugin 2.2. Je vais réitérer ici pour la postérité:

résumé

ce fichier de personnalisation XJB (voir ci-dessous) dans votre répertoire de liaison par défaut, et définissez wsimport pour le lier et http://www.w3.org/2001/XMLSchema.xsd