axis2“意外的子元素值”

时间:2010-09-01 15:24:31

标签: java axis2 axiom

我正在尝试使用Axis2连接到SOAP Web服务。这是以前在Axis 1中工作的,但是2导致了问题。我使用wsdl2java重新生成了Java代码,它为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试过这个 - 似乎都遇到了同样的问题。这是一个已知的错误,还是任何人都可以了解可能发生的事情?

1 个答案:

答案 0 :(得分:0)

似乎这是SAX绑定生成器的问题。切换JAXB绑定已解决了这个问题。