2010-09-01 31 views
0

我正在嘗試使用Axis2連接到SOAP Web服務。這在以前在Axis 1工作,但2導致問題。我使用wsdl2java重新生成了Java代碼,該代碼爲Axis2生成了存根,但是在處理服務器響應的元素時出現「意外的子元素值」時,該代碼已經崩潰了。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報告「字符串」,而不是通常返回的包裝對象類型。我已經用Axiom 1.2.7和1.2.8試了這個 - 兩者似乎都遭受同樣的問題。這是一個已知的錯誤,還是任何人都可以揭示可能發生的事情?

回答

0

看起來像這是SAX綁定生成器的問題。切換JAXB綁定已解決了問題。

+0

我意識到這是一個古老的問題..但你如何切換綁定? – 2012-06-24 22:33:59

相關問題