我有以下項目結構之間的模糊:刪除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>
什麼行家hyperjaxb3的版本,CXF-CODEGEN-插件,您使用在哪裏,請加入這些詳細 – Ashoka
我加入了版本 –
簡短的回答:使用HJ3生成JAR作爲插曲。我稍後會發布完整答案。 – lexicore