2010-09-01 55 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

相关问题