2013-10-15 49 views
0

我試圖讓CXF(2.7.7)使用JiBX(1.2.5)進行數據綁定。這份文件有點粗略,但有報道稱它取得了成功。一個問題是,CXF不會將配置傳遞給JiBX代碼生成器,因此如果您需要執行需要自定義的操作(例如將Joda DateTime映射到XML Schema日期),則需要能夠告訴CXF忽略特定的命名空間,然後通過單獨致電JiBX處理這些人。當使用JiBX作爲CXF數據庫時,是否包含工作?

我已經看到了使用CXF -nexclude標誌用於此目的的例子,如

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <version>${cxf.version}</version> 
    <executions> 
     <execution> 
      <id>generateSources</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>wsdl2java</goal> 
      </goals> 
      <configuration> 
       <sourceRoot>${generated-sources.dir}/cxf</sourceRoot> 
       <wsdlRoot>${wsdl.dir}</wsdlRoot> 
       <wsdlOptions> 
        <wsdlOption> 
         <wsdl>${wsdl.dir}/GetCounters.wsdl</wsdl> 
         <dataBinding>jibx</dataBinding> 
         <extraargs> 
          <extraarg>-nexclude</extraarg> 
          <extraarg>http://www.example.com/counters/</extraarg> 
         </extraargs> 
        </wsdlOption> 
       </wsdlOptions> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

我試圖內嵌和命名空間的進口版本,但-nexclude標誌沒有出現一起工作JiBX的。一種選擇可能是讓JiBX在不調用CXF插件的情況下完成整個WSDL,但顯然這會在生成的服務代碼中產生問題。一個醜陋的解決方法可能是讓JiBX重新生成該命名空間中的類的代碼,覆蓋由CXF創建的代碼。

-nexclude標誌可以工作嗎?

回答

0

我在使用jaxb時遇到了類似的問題。這工作對我來說:

將extraargs移出wsdlOption部分並進入defaultOptions部分。

<plugin> 
<groupId>org.apache.cxf</groupId> 
<artifactId>cxf-codegen-plugin</artifactId> 
<version>${cfx.codegen.version}</version> 
<executions> 
    <execution> 
     <id>generate-sources</id> 
     <phase>generate-sources</phase> 
     <configuration> 
      <defaultOptions> 
       <extraargs> 
        <extraarg>-nexclude</extraarg> 
        <extraarg>http://domain.company.org/v1/schema1</extraarg> 
        <extraarg>-nexclude</extraarg> 
        <extraarg>http://domain.company.org/v1/schema2</extraarg> 
       </extraargs> 
      </defaultOptions> 
      <wsdlOptions> 
       <wsdlOption> 
        <wsdlArtifact> 
         <groupId>org.company</groupId> 
         <artifactId>application-contract</artifactId> 
         <version>${contract.version}</version> 
         <type>wsdl</type> 
        </wsdlArtifact> 
       </wsdlOption> 
      </wsdlOptions> 
      <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot> 
     </configuration> 
     <goals> 
      <goal>wsdl2java</goal> 
     </goals> 
    </execution> 
</executions> 

相關問題