You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cxf-codegen-plugin 4.0.0忽略bindingFile配置问题求助

问题解决:CXF 4.0.0升级后绑定配置失效的修复

问题背景

使用cxf-codegen-plugin从WSDL生成代码时,原本在3.5.5版本正常的两项配置——自定义生成代码的包路径、用java.util.Date替换XmlGregorianCalendar——在升级到4.0.0版本后完全失效,生成代码仍使用默认包路径和原日期类型。

核心原因

CXF 4.x版本全面迁移到Jakarta EE规范,替换了原有的Java EE API,导致旧绑定配置中的JAXB命名空间、适配器类路径均不再兼容。

修复步骤

1. 更新绑定文件(bindings.xml)的JAXB命名空间与适配器类

将原绑定文件中的JAXB命名空间替换为Jakarta版本,并更新日期类型适配的工具类:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb"
               xmlns:jaxws="http://cxf.apache.org/jaxws"
               version="3.0">

    <jaxb:bindings schemaLocation="https://url.file.xsd"
                   node="/xsd:schema">
        <jaxb:schemaBindings>
            <jaxb:package name="com.some.package.dto" />
        </jaxb:schemaBindings>
        <jaxb:globalBindings>
            <jaxb:javaType name="java.util.Date"
                           xmlType="xsd:dateTime"
                           parseMethod="org.apache.cxf.xjc.runtime.JakartaDataTypeAdapter.parseDateTime"
                           printMethod="org.apache.cxf.xjc.runtime.JakartaDataTypeAdapter.printDateTime" />
            <jaxb:javaType name="java.util.Date"
                           xmlType="xsd:date"
                           parseMethod="org.apache.cxf.xjc.runtime.JakartaDataTypeAdapter.parseDate"
                           printMethod="org.apache.cxf.xjc.runtime.JakartaDataTypeAdapter.printDate"/>
            <jaxb:javaType name="java.util.Date"
                           xmlType="xsd:time"
                           parseMethod="org.apache.cxf.xjc.runtime.JakartaDataTypeAdapter.parseTime"
                           printMethod="org.apache.cxf.xjc.runtime.JakartaDataTypeAdapter.printTime"/>
        </jaxb:globalBindings>
    </jaxb:bindings>

</jaxb:bindings>

关键修改点:

  • JAXB命名空间从http://java.sun.com/xml/ns/jaxb改为https://jakarta.ee/xml/ns/jaxb
  • JAXB版本从2.1升级为3.0(适配Jakarta EE 9+)
  • 日期适配器类从org.apache.cxf.xjc.runtime.DataTypeAdapter改为org.apache.cxf.xjc.runtime.JakartaDataTypeAdapter

2. 验证POM配置的一致性

确保cxf-codegen-plugin和依赖的cxf-xjc-ts版本均为4.0.0(你的现有配置已符合此要求),无需额外修改。

3. 清理并重新生成代码

执行Maven命令清理旧生成文件并重新生成:

mvn clean generate-sources

验证结果

重新生成后,代码将正确使用自定义包路径com.some.package和com.some.package.dto,且所有xsd:dateTime/xsd:date/xsd:time类型均会映射为java.util.Date。

内容的提问来源于stack exchange,提问作者Marius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:21:49