5

我在为有多个模式的 WSDL 使用自定义 javaTypes 时遇到问题。绑定适用于具有给定命名空间的模式,但编译对于没有命名空间的模式会失败。

这是 bindings.xml 文件:

<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:common="urn:my:ns">
<jaxb:globalBindings generateElementProperty="false">
    <jaxb:serializable uid="1"/>
    <jaxb:javaType name="java.util.Date" xmlType="xs:date"
                   parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDate"
                   printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDate"/>
    <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
                   parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
                   printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>
    <jaxb:javaType name="java.util.UUID" xmlType="common:uuid"
                   parseMethod="my.package.UuidConverter.parse"
                   printMethod="my.package.UuidConverter.print"/>
</jaxb:globalBindings>
</jaxb:bindings>

我正在使用 cxf-codegen-plugin

错误信息是:未定义的简单类型

当 urn:my:ns 在其中一种模式中不存在时,是否可以忽略 UUID 绑定?或者是否可以使用其他方法存档此绑定?

4

1 回答 1

1

我认为不可能有条件地忽略UUID您所描述的绑定;而且我不确定我是否遵循您的意思,询问是否“可以存档此绑定”,但我觉得不是。

UUID通常转换xs:stringJava 论坛中讨论的JAX-B 文档也证实了这种映射。(只需在链接的文档页面中搜索UUID 。)

考虑这样的事情:

<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jaxb:globalBindings generateElementProperty="false">
    <jaxb:serializable uid="1"/>
    <jaxb:javaType name="java.util.Date" xmlType="xs:date"
                   parseMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.parseDate"
                   printMethod="org.apache.cxf.xjc.runtime.DataTypeAdapter.printDate"/>
    <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
                   parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
                   printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>
    <jaxb:javaType name="java.util.UUID" xmlType="xs:string"
                   parseMethod="my.package.UuidConverter.parse"
                   printMethod="my.package.UuidConverter.print"/>
</jaxb:globalBindings>
</jaxb:bindings>

如果您仍然有问题,请考虑这个相关的 SO answer

于 2013-11-04T17:38:52.427 回答