2017-06-27 5 views
0

Ich habe ein Problem beim Erzeugen von Equals und Hashcode-Methoden für meine importierten xsd-Dateien, die an einen anderen Speicherort als meine WSDL-Dateien ausgegeben werden. Ich habe derzeit eine .wsdl und .xsd Datei im selben Ordner. Die .wsdl-Datei importiert diese Xsd-Dateien, die einen anderen Namespace als die Wsdl-Datei haben. Wenn diese xsd-Dateien erzeugt werden, enthalten sie keine equals- oder hashcode-Methoden. Unten ist ein Beispiel meiner pom/xml config und Dateien:CXF JAXB-Grundlagen 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> 

Probe Wsdl (importierte Rule.xsd nicht Methoden erzeugt):

<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> 

Ich nehme an, dies ist ein Problem, mit dem Standort das generierte xsd, da ich es zum Laufen bringen kann, indem ich es in den gleichen übergeordneten Ordner wie den wsdl-Namespace verschiebe. Ich möchte dies zum Funktionieren bringen, ohne diese Dateispeicherorte zu verschieben, da ich eine große Codebasis habe, die einen großen Refactor erfordern würde, wenn ich dies tue.

Alle Vorschläge wären willkommen.

Antwort

0

ich, indem folgende in die pom.xml Konfiguration eine Lösung für dieses Problem gefunden:

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

Auch wenn dies nicht den Namespace/Paket Lage ändert es scheint jetzt die importierten Dateien zu erzeugen entspricht und Hashcode-Methoden.