2017-06-27 32 views
0

我有一個問題,爲導入的xsd文件生成equals和hashcode方法,這些方法會輸出到我的wsdl文件的單獨位置。我目前在同一個文件夾中有一個.wsdl和.xsd文件。 .wsdl文件將具有不同命名空間的這些xsd文件導入wsdl文件。當生成這些xsd文件時,它們不包含equals或hashcode方法。下面是我的POM/xml配置文件和一個樣本:CXF JAXB基礎知識等於/哈希代碼

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

示例WSDL(進口Rule.xsd不生成方法):

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

我認爲這是位置問題生成的xsd,因爲我可以通過將它移動到與wsdl命名空間相同的父文件夾來實現它。我想讓這個工作無需移動這些文件位置,因爲我有一個大的代碼庫,如果我這樣做需要大量的重構。

任何建議將受到歡迎。

回答

0

我發現了一個解決這個問題,通過添加以下到pom.xml的配置:

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

儘管這不會改變它似乎現在生成導入文件的命名空間/包的位置等於和哈希碼方法。