Неожиданное значение подэлемента оси2

Я пытаюсь использовать Axis2 для подключения к веб-службе SOAP. Раньше это работало на оси 1, но на оси 2 возникают проблемы. Я восстановил код Java, используя wsdl2java, который сгенерировал заглушки для Axis2, но он падает при обработке элемента ответа сервера с «неожиданным значением подэлемента».

Фрагмент рассматриваемого документа wsdl:

<complexType name="A">
<sequence>
<element name="a" type="xsd:base64Binary" minOccurs="1" maxOccurs="1" nillable="false" />
<element name="b" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="c" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="d" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="e" type="xsd:string" minOccurs="1" maxOccurs="1" />
<element name="f" type="xsd:string" minOccurs="1" maxOccurs="1" />
</sequence>
</complexType>

Возвращаемый ответ выглядит так:

<stuff>
<a>dsfusdbifsdisuibvuidnfuisndfvl\sbvuidn</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>dsfusdbifsdisdfsfsdfsdfuibvuidnfuisndfvl\dfgd</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>dsfusdbifsdisuibvuidnfuisndfvl\sdfsdfvv</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>
<stuff>
<a>wwasdfgfbdfb\sbv==uidn</a>
<b>string</b>
<c>string</c>
<d>string</d>
<e>string</e>
<f>string</f>
</stuff>

Такие вещи. Большинство из этих блоков <stuff> обрабатываются нормально, но последний блок <b> завершается с ошибкой, указанной выше. При отладке кода происходит сбой, потому что reader.isStartElement() возвращает false, а new javax.xml.namespace.QName("","b").equals(reader.getName()) - false, а reader.getName() возвращает "a". При дальнейшей отладке reader.currentElement сообщает "string" вместо типа обернутого объекта, который он обычно возвращает. Я пробовал это с Axiom 1.2.7 и 1.2.8 - обе страдают от одной и той же проблемы. Это известная ошибка, или кто-нибудь может пролить свет на то, что может происходить?


person Submonoid    schedule 01.09.2010    source источник


Ответы (1)


Похоже, это была проблема с генератором привязки SAX. Переключение в привязках JAXB устранило проблему.

person Submonoid    schedule 06.09.2010
comment
Я понимаю, что это старый вопрос... но как переключать привязки? - person Kit Menke; 25.06.2012