我正在尝试让 CXF (2.7.7) 使用 JiBX (1.2.5) 进行数据绑定。文档有点粗略,但有报道称它成功了。一个问题是 CXF 不会将配置传递给 JiBX 代码生成器,因此如果您需要做一些需要自定义的事情,例如将 Joda DateTime 映射到 XML Schema 日期,您需要能够告诉 CXF 忽略特定的命名空间,然后通过单独调用 JiBX 来处理这些问题。
我看到的示例为此使用了 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 标志起作用吗?