2010-09-01 4 views
0

J'essaie d'utiliser Axis2 pour se connecter à un service web SOAP. Cela fonctionnait précédemment dans l'Axe 1, mais 2 cause des problèmes. J'ai régénéré le code Java en utilisant wsdl2java qui a généré les stubs pour Axis2, mais il est tombé lors du traitement d'un élément de la réponse du serveur avec une "valeur de sous-élément inattendue".axis2 "valeur de sous-élément inattendue"

Le fragment du document en question est 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> 

La réponse ressemble à être retourné:

<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> 

genre de chose. La plupart de ces blocs <stuff> processus bien, mais le dernier échoue <b> avec l'erreur ci-dessus. Débogage du code, il échoue car reader.isStartElement() renvoie false et new javax.xml.namespace.QName("","b").equals(reader.getName()) est false - reader.getName() renvoie "a". Le débogage plus loin, reader.currentElement signale "chaîne" au lieu du type d'objet enveloppé qu'il renvoie généralement. J'ai essayé ceci avec Axiom 1.2.7 et 1.2.8 - les deux semblent souffrir du même problème. Est-ce un bug connu, ou quelqu'un peut-il nous éclairer sur ce qui pourrait se passer?

Répondre

0

On dirait que c'était un problème avec le générateur de liaison SAX. La commutation dans les liaisons JAXB a résolu le problème.

+0

Je réalise que c'est une vieille question .. mais comment changer de liaison? –