我在为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绑定?或者是否可以使用不同的方法归档此绑定?
答案 0 :(得分:1)
我不相信有条件地忽略你所描述的UUID
绑定;而且我不确定我是否通过询问是否“可以存档此绑定”来理解你的意思,但我感觉它不是。
UUID
通常会将xs:string
转换为discussed in the Java forums。 JAX-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。