使用scd自定义绑定时,无法识别非Sun jaxb插件
例如,这不起作用:
<jaxb:bindings
scd="/~fpml:TradeHeader">
<ext:interfaces>
example.TradeHeaderDelegateInterface
</ext:interfaces>
</jaxb:bindings>
然而,这有效:
<jaxb:bindings
schemaLocation="../schemas/fpml-5-1/fpml-doc-5-1.xsd"
node="/xsd:schema//xsd:complexType[@name='TradeHeader']">
<ext:interfaces>
example.TradeHeaderDelegateInterface
</ext:interfaces>
</jaxb:bindings>
并且,这有效:
<jaxb:bindings
scd="/~fpml:CommodityMarketDisruption//fpml:marketDisruptionEvent">
<jaxb:property name="marketDisruptionEvent"/>
</jaxb:bindings>
这让我觉得scd和第三方插件不相处:
我得到的错误是:
[ERROR] Error while parsing schema(s).Location [ file:/C:/projects/domain-fpml-5-1/src/main/resources/xjb/fpml-5-1.xjb{40,19}].
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ext:interfaces'.
我的.xjb文件确实声明了“ext”前缀的命名空间,所以这不是问题。
有没有人使用过xjc插件(例如像copyable等那样的jaxb commons)并使用它来处理基于scd的自定义?
我的xjc版本是:2.2.2,我正在使用maven-jaxb2-plugin(版本0.8.0)插件来生成绑定。
感谢您的帮助,
阿拉汶
答案 0 :(得分:1)
maven-jaxb22-plugin:jar:0.8.1:runtime,com.sun.xml.bind:jaxb-impl:jar:2.2.5-b10:runtime,com.sun.xml.bind:jaxb-xjc :jar:2.2.5-b10:runtime]仍然存在这个问题。
从查看xjc源代码(前一段时间),这不是一个简单的修复,因为自定义不会“导入”到目标xsd中,并且处理发生在匹配组件的上下文中。
Schema解析器就是这种情况,其中模式被“导入”到绑定上下文中,因此所有命名空间都是有效的。
我已将所有自定义还原为架构样式。我记得当尝试在同一个绑定文件中同时执行wsdl和xsd时,这会带来痛苦的影响。