2015-12-14 69 views
0

我有以下項目結構之間的模糊:刪除hyperjaxb生成的類和Apache CXF產生clases

服務父

| __service-模式

| __service數據庫

| __service -contract

| __service-implementation

我正在使用hyperjaxb3,因爲我最終需要通過Web服務傳遞的對象是最終將存儲在數據庫中的對象(不需要轉換)。

在模塊服務架構我已經定義了我將在我的web服務中使用的XSD架構。 服務數據庫將通過hyperjaxb3使用生成JPA-JAXB對象。 服務合同將通過使用cxf-codegen-plugin maven插件生成java服務接口。 服務實現將是最終的Web服務實現。我認爲這個想法是可以的。然而,當我使用hyperjaxb3和cxf-codegen-plugin時,問題會增加,因爲我需要JPA類(我使用hyperjaxb3生成的類)來擴展BaseCustomClass。問題是,當我創建我的測試,比如web服務方法persitCustom(CustomType),XML被反序列化爲CustomType由cxf-codegen-plugin生成(這是我用來生成的工具服務接口)。現在,這個類並不完全是由hyperjaxb3生成的(儘管它在編譯時不是問題,因爲兩個類「幾乎」相同,屬性相同,包相同等等)生成的CustomType問題是我如何強制我的服務實現使用hyperjaxb3生成的類而不是cxf-codegen-plugin生成的類。

這些都是我使用

<plugin> 
     <groupId>org.jvnet.hyperjaxb3</groupId> 
     <artifactId>maven-hyperjaxb3-plugin</artifactId> 
     <version>0.6.0</version> 
     <executions> 
      <execution> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <extension>true</extension> 
      <args> 
       <arg>-Xinheritance</arg> 
      </args> 
     </configuration> 
    </plugin> 

這個版本是CXF-CODEGEN-插件

<plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>2.7.9</version> 
      <executions> 
       <execution> 
        <id>process-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl> 
            ${project.build.directory}/src/main/resources/SharedModel/sampleWeb/service.wsdl 
           </wsdl> 
           <wsdlLocation>classpath*:sampleWeb/service.wsdl</wsdlLocation> 
           <bindingFiles/> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
+0

什麼行家hyperjaxb3的版本,CXF-CODEGEN-插件,您使用在哪裏,請加入這些詳細 – Ashoka

+0

我加入了版本 –

+0

簡短的回答:使用HJ3生成JAR作爲插曲。我稍後會發布完整答案。 – lexicore

回答

0

好吧,我告訴CXF-CODEGEN,插件排除類想出一個辦法在包含衝突類型的名稱空間中。我將這些行添加到插件的配置部分。他們下http://conflicting/types/namespace/命名空間

<extraargs> 
    <extraarg>-nexclude</extraarg> 
    <extraarg>http://conflicting/types/namespace/</extraarg> 
</extraargs>