1

我使用 apache cxf 生成了一些基于 WSDL 的模型类。然后我添加了一个 jaxb 绑定文件来将所有 xs:dateTime 和 xs:date 元素转换为 java.util.date(而不是默认的 XMLGregorianCalendar):

<jxb:javaType name="java.util.Date" xmlType="xs:date"
                      parseMethod="org.apache.cxf.tools.common.DataTypeAdapter.parseDate"
                      printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDate"/>
       <jxb:javaType name="java.util.Date" xmlType="xs:dateTime"
                      parseMethod="org.apache.cxf.tools.common.DataTypeAdapter.parseDateTime"
                      printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDateTime"/>

这一切都很好,completype 元素的所有 xs:date 和 xs:dateTime 属性都生成为 java.util.Date。

当我尝试基于这些模型对象创建 Metro JAX-WS 服务时,就会出现问题。在我的情况下,所有 java.util.Date 字段都呈现为服务的 .xsd 文件中的 dataType xs:string

我不知道为什么会发生这种情况,除了相关的模型属性,在 cxf 生成之后,用以下注释:

 @XmlElement(required = true, type = String.class)
    @XmlJavaTypeAdapter(Adapter1 .class)
    protected Date datumTijdBedrijfsdocument;

我可以想象 type="String.class" 可能是所有属性都生成为 xs:string 字段的原因。

当然,我可以手动编辑所有对象,但我真的在 Metro 的 apache CFX 中寻找解决方案,以声明方式防止此问题。

我希望你们能帮助我,因为这个问题让我陷入了僵局

谢谢!

4

0 回答 0