ADBException: sous-élément Inattendu

J'ai créé un service web à l'aide de:

  • Apache Axis 2 CodeGen Assistant v. 1.6.2 (Reliure: ADB)
  • Eclipse Juno
  • Tomcat 7
  • Java 6

Le Service retourne une Coutume Objet Java (DataBean) pour le client, mais je suis tombé sur une exception dans le code de client:

org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement {schemaTargetNs}message

De ce que j'ai fait des recherches, sur n une fois de plus ... je pense que c'est un problème très commun, mais n'ont pas encore obtenu une réponse définitive quant à ce qui devrait être fait pour y remédier.

Quelques posts sur ce sujet et sur d'autres forums de l'état que le WSDL doit être modifié (nom de l'espace), ou le stub client a besoin d'être modifié. Certains ont même état qu'il y a un bug au sein de la BAD. C'était sûrement un bug dans les versions antérieures de l'Axe, mais il y a un grand nombre de postes dans le courrier-archives indiquant que le bug a été corrigé. Ceux de diffusion des archives ont été liés à des versions antérieures de Axis2.

Maintenant mes questions sont:

  1. Est-il encore un bug ?
  2. Exactement ce qui doit être changé dans le fichier WSDL ou le stub Client ?

Ce qui est intéressant de mentionner est que j'ai créé un semblable service web qui renvoie à une "Chaîne" de retour vers le client. Il fonctionne très bien ! Donc, il échoue lorsqu'un type de données complexe est impliqué.

Il y avait quelques informations sur Le site web de Apache, sous la rubrique "Limitations Connues"...

Il lit: "BAD est destiné à être un "Simple" cadre de la liaison de données et ne visait pas à compiler tous les types de schémas. Les limitations suivantes sont les plus mis en évidence.

  1. De Type complexe Extensions et Restrictions."

Est le problème ?

Ce qui suit est l'extrait de code à partir du fichier WSDL qui pourrait être de quelque intérêt pour vous...

<wsdl:types>
        <xs:schema xmlns:ax26="http://mywebservice/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="schemaTargetNs">
            <xs:import namespace="http://mywebservice/xsd"/>
            <xs:element name="getMsg">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="reqData" nillable="true" type="ax25:DataBean"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="getMsgResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="return" nillable="true" type="ax25:DataBean"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:schema>
        <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://mywebservice/xsd">
            <xs:complexType name="DataBean">
                <xs:sequence>
                    <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
                    <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </wsdl:types>

Maintenant, comment puis-je résoudre le problème ? Dois-je inclure quelques autres fragments de code ici?

OriginalL'auteur Mandeep Singh | 2013-05-15