CXF JAXB JAXBEncoderDecoder ошибка демаршаллинга: неожиданный элемент при наличии квалифицированных элементов - PullRequest
2 голосов
/ 01 июня 2011

У меня следующая проблема, и я не могу найти решение:
WSDL имеет elementFormDefault="qualified", в ответе, который я получаю в своем клиенте CXF, все элементы имеют префикс пространства имен, но JAXB выдает исключение

org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:"unm:ENTSCWS", local:"searchReturn"). Expected elements are 
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:661)
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:533)
    at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128) ...

Если я изменяю в WSDL elementFormDefault="unqualified", он работает, но мне не разрешено изменять WSDL, в нем должны быть элементы с префиксом пространства имен.

Пакет-info.java содержит аннотацию:

@javax.xml.bind.annotation.XmlSchema(namespace = "unm:ENTSCWS", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package entscws;

Класс ответа содержит аннотацию:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "searchReturn"
})
@XmlRootElement(name = "searchResponse")
public class SearchResponse {

У вас есть идеи, почему я получаю эту ошибку?

1 Ответ

6 голосов
/ 02 июня 2011

Вы работаете в OSGi?Я видел подобные проблемы с неправильной подборкой информации о пакете.

Другой вариант - добавить флаг -xjc-npa в команду wsdl2java, чтобы он невообще используйте информацию о пакете и прикрепите пространства имен во всех других местах.

...