自定义解析&具有多个模式的WSDL的打印方法

时间:2013-10-24 06:56:26

标签: java xml jaxb wsdl schema

我在为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绑定?或者是否可以使用不同的方法归档此绑定?

1 个答案:

答案 0 :(得分:1)

我不相信有条件地忽略你所描述的UUID绑定;而且我不确定我是否通过询问是否“可以存档此绑定”来理解你的意思,但我感觉它不是。

UUID通常会将xs:string转换为discussed in the Java forumsJAX-B documentation也证实了这种映射。 (只需在链接的文档页面中搜索 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>

如果您仍有问题,请考虑related SO answer