IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

[WSDL2Java] Bug dans la génération des classes métiers


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Par défaut [WSDL2Java] Bug dans la génération des classes métiers
    Bonjour,

    Je travaille actuellement sur un Web Service pour lequel j'ai commencé par écrire le WSDL et je suis maintenant dans la phase de développement du code Java. J'ai pour cela utilisé WSDL2Java pour faire la génération du squelette côté serveur, mais je constate une erreur dans les classe métiers générées (à partir des types complexes définis dans mon WSDL). je précise qu'après avoir testé la génération côté client j'aboutis à la même erreur sur les classes métiers. Je retrouve aussi cette erreur à partir d'un autre WSDL (qui n'est pas de moi) en génération côté client. Mon WSDL est (je ne mets que la partie pertinente, c'est-à-dire la définition des types complexes qui m'intéressent)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsd:complexType name="UserDataContainer">
    	<xsd:sequence>
    		<xsd:element name="field" type="tns2:DataField"  maxOccurs="unbounded" minOccurs="0" />
    	</xsd:sequence>
    	<xsd:attribute name="iDType" type="xsd:string" use="required" />
    	<xsd:attribute name="iDValue" type="xsd:string" use="required" />
    </xsd:complexType>
     
    <xsd:complexType name="DataField">
    	<xsd:attribute name="fieldName" type="xsd:string" use="required" />
    	<xsd:attribute name="fieldValue" type="xsd:string" use="required" />
    </xsd:complexType>
    Je m'attends donc à ce que deux classes soient générées, UserDataContainer et DataField, seulement il n'en est rien, seule DataField est générée. Et là où je m'attends à voir dans le code le nom de classe UserDataContainer, je trouve à la place DataField[].

    Après avoir regardé plus en détail, il semblerait que WSDL2Java n'aime pas cumuler les <sequence>...</sequence> et les <attribute .../> dans un même type complexe, sauf quand il y a plusieurs <element .../> entre les balises <sequence> et </sequence>, puisqu'avec le type complexe MessagePattern, défini dans le même WSDL par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsd:complexType name="MessagePattern">
    	<xsd:sequence>
    		<xsd:element name="messageFields" type="tns2:DataField"  maxOccurs="unbounded" minOccurs="1" />
    		<xsd:element name="attachedFiles" type="tns2:DataField"  maxOccurs="unbounded" minOccurs="0" />
    	</xsd:sequence>
    	<xsd:attribute name="iD" type="xsd:string" use="required" />
    	<xsd:attribute name="languageCode" type="xsd:string" use="required" />
    	<xsd:attribute name="mediaCode" type="xsd:string" use="required" />
    </xsd:complexType>
    je récupère bien une classe qui compte aussi bien mes listes de types DataField[] que mes attributs...

    Si quelqu'un connaît le problème, je serais intéressé de connaître la raison (s'il y en a une) et la façon de le résoudre (au pire ça se fera à la main dans le code Java).

    Merci.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Par défaut
    Je poste pour dire que je n'ai toujours pas compris l'origine du problème, et je ne sais pas comment le résoudre proprement. J'ai renoncé aussi à changer le code Java, et j'ai donc opté pour une solution facile à mettre en œuvre. Comme je disais précédemment,

    Citation Envoyé par adionne Voir le message
    Après avoir regardé plus en détail, il semblerait que WSDL2Java n'aime pas cumuler les <sequence>...</sequence> et les <attribute .../> dans un même type complexe, sauf quand il y a plusieurs <element .../> entre les balises <sequence> et </sequence>, puisqu'avec le type complexe MessagePattern, défini dans le même WSDL par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsd:complexType name="MessagePattern">
    	<xsd:sequence>
    		<xsd:element name="messageFields" type="tns2:DataField"  maxOccurs="unbounded" minOccurs="1" />
    		<xsd:element name="attachedFiles" type="tns2:DataField"  maxOccurs="unbounded" minOccurs="0" />
    	</xsd:sequence>
    	<xsd:attribute name="iD" type="xsd:string" use="required" />
    	<xsd:attribute name="languageCode" type="xsd:string" use="required" />
    	<xsd:attribute name="mediaCode" type="xsd:string" use="required" />
    </xsd:complexType>
    je récupère bien une classe qui compte aussi bien mes listes de types DataField[] que mes attributs...
    j'ai décidé d'ajouter un <element... /> dans mes sequence qui n'en comptaient qu'un, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="dummy" type="xsd:string" maxOccurs="unbounded" minOccurs="0" />
    Ca marche, cette fois WSDL2Java génère bien les beans (avec du coup le tableau String[] dummy, naturellement, dont je ne me sers pas).

    Mais bien évidemment, ce n'est pas une solution pleinement satisfaisante puisqu'elle ajoute quelque chose d'inutile, donc je ne mets pas ce sujet en [Résolu] puisque je pense intéressant si quelqu'un a une meilleure solution.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/12/2011, 14h14
  2. Génération de $ dans le nom des .class générées
    Par mrfirefunk dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 05/12/2007, 16h44
  3. Réponses: 7
    Dernier message: 24/08/2007, 10h57
  4. [VB6][Excel] bug dans la duplication des zones nommees
    Par hirochirak dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/05/2006, 13h37
  5. [JAXB][XSD] Problème lors de la génération des classes
    Par charlot44 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 22/06/2005, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo