среда, 27 июня 2012 г.

Apache CXF. Ошибка Property is already defined. Use to resolve this conflict.

При попытке сгенерировать java клиента с помошью WSDL2JAVA Apache CXF выдал ошибку  Property  is already defined. Use <jaxb:property> to resolve this conflict.

Проблема оказалась в том, что атрибут и элемент имеют одинаковые имена. Вот такой бред выдаёт JAXB. Что с этим делать? Нужно создать файлик xml, в котором необходимо определить, что дубликат имени будет отображаться на другое имя. Например, так:

<jxb:bindings version="2.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<jxb:bindings schemaLocation="Dummy.xml" node="/xsd:schema">
<jxb:bindings node="//xsd:complexType[@name='complexTypeOne']">
<jxb:bindings node=".//xsd:attribute[@name='value']">
<jxb:property name="ValueToFixError1"/>
</jxb:bindings>
</jxb:bindings>

</jxb:bindings>
</jxb:bindings> 

После этого необходимо WSDL2JAVA с помощью ключа -b указать созданный файлик.

Комментариев нет:

Отправить комментарий