2017-06-27 3 views
0

J'ai un problème lors de la génération de méthodes égales et de méthodes de hachage pour mes fichiers xsd importés qui sont exportés dans un emplacement distinct de mes fichiers wsdl. J'ai actuellement un fichier .wsdl et .xsd dans le même dossier. Le fichier .wsdl importe ces fichiers xsd qui ont un espace de noms différent du fichier wsdl. Lorsque ces fichiers xsd sont générés, ils ne contiennent pas de méthodes égales ou hashcode. Voici un exemple de mes pom/config xml et fichiers:Notions de base de CXF JAXB Equals/Hashcode

<wsdlOption> 
    <wsdl> 
     src/main/xml/wsdl/Rule.wsdl 
    </wsdl> 
    <wsdlLocation>classpath:wsdl/Rule.wsdl</wsdlLocation> 
    <bindingFiles> 
     <bindingFile>src/main/xml/wsdl/bindings.xjb</bindingFile> 
    </bindingFiles> 
    <extraargs> 
     <extraarg>-impl</extraarg> 
     <extraarg>-verbose</extraarg> 
     <extraarg>-xjc-XsimpleEquals</extraarg> 
     <extraarg>-xjc-XsimpleHashCode</extraarg> 
    </extraargs> 
</wsdlOption> 

échantillon wsdl (importé Rule.xsd ne génère pas des méthodes):

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:tns="http://www.ws.com/Rule/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Rule" 
targetNamespace="http://www.ws.com/Rule/"> 
<wsdl:types> 
    <xsd:schema targetNamespace="http://http://www.ws.com/Rule/"> 
    </xsd:schema> 
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="http://www.ws.com/Rule/" 
     xmlns:pref="http://www.xsd.com/Rule" xmlns:pref1="http://www.xsd.com/Common"> 
     <xsd:import schemaLocation="Rule.xsd" 
      namespace="http://www.xsd.com/Rule"> 
     </xsd:import> 
     <xsd:import schemaLocation="Common.xsd" namespace="http://www.xsd.com/Common"></xsd:import> 
     <xsd:element name="ListGrid"> 
      <xsd:complexType> 
       <xsd:sequence> 
        <xsd:element name="request" 
         type="pref:test" maxOccurs="1" minOccurs="1"> 
        </xsd:element> 
       </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element> 

Je suppose que cela est un problème avec l'emplacement le xsd généré comme je peux l'obtenir pour travailler en déplaçant cela dans le même dossier parent que l'espace de noms wsdl. Je voudrais que cela fonctionne sans déplacer ces emplacements de dossiers car j'ai une grande base de code qui exigerait un grand refactor si je fais ceci.

Toutes les suggestions seraient les bienvenues.

Répondre

0

J'ai trouvé une solution à ce problème en ajoutant ce qui suit à la configuration pom.xml:

<extraarg>-p</extraarg> 
<extraarg>http://www.xsd.com/Rule=com.xsd.rule</extraarg> 

Même si cela ne change pas l'emplacement espace de nom/package, il semble générer maintenant les fichiers importés égaux et méthodes de hashcode.