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 :

Problème avec Sérialisation des tableaux de Axis 1.4


Sujet :

Services Web Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 29
    Points : 39
    Points
    39
    Par défaut Problème avec Sérialisation des tableaux de Axis 1.4
    Bonjour à tous,

    J’essaie de communiquer un client WS fait sur la base de classes générées avec Webshpere (classes avec des annotations XmlType) avec un serveur codé sur la base d’un Axis 1.4.
    Mon problème réside dans la sérialisation des listes. Axis 1.4 sérialise ces listes dans des balises « item » ce qui ne permet pas au client de les désérialiser.

    J’ai regardé sur le code de Axis 1.4 et c’est bien la méthode serialize de VectorSerializer qui pour chaque item crée une balise item et non une balise qui a le nom du type qu’elle sérialise.
    Si j’arrive à changer ce comportement, j’arriverai à faire communiquer les deux.
    Avez-vous des idées ?
    Merci d’avance pour votre aide.
    Khoufouq


    Extrait de la classe VectorSerializer:

    public void serialize(QName name, Attributes attributes,
    Object value, SerializationContext context)
    throws IOException
    {
    if (!(value instanceof Vector))
    throw new IOException(
    Messages.getMessage("noVector00", "VectorSerializer",
    value.getClass().getName()));

    Vector vector = (Vector)value;

    // Check for circular references.
    if(isRecursive(new IdentityHashMap(), vector)){
    throw new IOException(Messages.getMessage("badVector00"));
    }

    context.startElement(name, attributes);
    for (Iterator i = vector.iterator(); i.hasNext(); )
    {
    Object item = i.next();
    context.serialize(Constants.QNAME_LITERAL_ITEM, null, item);
    }
    context.endElement();
    }



    Extrait de la classe Constants :

    public static final QName QNAME_LITERAL_ITEM = new QName(URI_LITERAL_ENC, "item");

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 29
    Points : 39
    Points
    39
    Par défaut
    La seule solution que j'ai trouvée est de changer le mapping des classes clientes pour ajouter une nouvelle liste avec le nom item comme ci-dessous :

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "xxx", namespace = "http://xxx/", propOrder = { "retourAttendu", "items" })
    public class XxxxResponse {

    @XmlElement(required = true)
    protected List<RetourAttenduType> listeRetoursAttendus;

    @XmlElement(required = true, name = "item")
    protected List<RetourAttenduType> listeItems;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec chargement des animations
    Par PomDesign dans le forum Flash
    Réponses: 2
    Dernier message: 02/04/2007, 16h52
  2. Réponses: 1
    Dernier message: 14/02/2007, 08h14
  3. [MySQL] Problème avec affichage des données d'une base MySQL
    Par leclone dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/12/2006, 12h40
  4. Problème avec imbrication de tableaux
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/07/2006, 21h59
  5. Réponses: 3
    Dernier message: 07/04/2006, 16h06

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