[英]Property is already defined error in wsdl2java
我正在尝试使用cxf从wsdl2java生成代理类,但是每当尝试尝试时,我都会不断遇到以下错误:
WSDLToJava错误: http: //webservices.sabre.com/wsdl/sabreXML1.0.00/shopping/Grou pedItineraryResponse_v1-0-2.xsd [0,0]:属性“ ValidatingCarrier”已经定义。 使用<jaxb:property>解决此冲突。 http://webservices.sabre.com/wsdl/sabreXML1.0.00/shopping/GroupedItineraryRespon se_v1-0-2.xsd [0,0]:以下位置与上述错误有关
当我从如下网址之一获取信息时,我尝试将绑定文件添加到wsdl2java.bat:
<jaxws:bindings wsdlLocation="http://webservices.sabre.com/wsdl/sabreXML1.0.00/shopping/BargainFinderMaxRQ_v1-8-2.wsdl"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:extensionBindingPrefixes="xjc"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema">
<jaxb:globalBindings
jaxb:version="2.0">
<xjc:simple />
</jaxb:globalBindings>
</jaxws:bindings>
我使用的是第三方wsdl url,因此我无法在服务器端进行任何更改,我只需要在命令上进行更改即可成功生成代理类。 有人可以帮我解决这个问题吗?
问题在于, FareType
具有名为ValidatingCarrier
子元素和具有相同名称的属性。
要变通解决此问题,您应该按照错误消息的建议添加字段绑定。 绑定示例:
<jaxb:bindings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
jaxb:version="2.1"
schemaLocation="http://webservices.sabre.com/wsdl/sabreXML1.0.00/shopping/GroupedItineraryResponse_v1-0-2.xsd">
<jaxb:bindings node="//xs:complexType[@name='FareType']/xs:sequence/xs:element[@name='ValidatingCarrier']">
<jaxb:property name="validatingCarrierInfo"></jaxb:property>
</jaxb:bindings>
</jaxb:bindings>
通过此绑定,我将ValidatingCarrier
重命名为ValidatingCarrierInfo
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.