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 :

Cast en org.apache.axis.encoding.ser.ArrayDeserializer$ArrayListExtension


Sujet :

Services Web Java

  1. #1
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut Cast en org.apache.axis.encoding.ser.ArrayDeserializer$ArrayListExtension
    Bonjour,

    J'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
        //if (ret instanceof ArrayListExtension) {
        errors = new MarkerError[((ArrayListExtension) ret).size()];
        for (int i = 0; i < ((ArrayListExtension) ret).size(); i++) {
            errors[i] = new MarkerError(((ArrayListExtension) ret.get(i), document);
        }
        //}
    } catch (Exception e) {
        System.err.println(e.getMessage());
    }
    J'ai volontairement commenter mon if pour voir l'erreur que je reçois. C'est justement l'erreur que je ne comprend pas La voici :

    org.apache.axis.encoding.ser.ArrayDeserializer$ArrayListExtension cannot be cast to org.apache.axis.encoding.ser.ArrayDeserializer$ArrayListExtension
    Sympa comme message non ? Un type ne peut pas être casté dans son type ! Je ne vois vraiment pas le problème. Et si je décommente mon if il ne rentre pas dans la boucle...

    Une idée ?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  2. #2
    Membre confirmé Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Par défaut
    Bonjour,

    Si je comprends bien ton problème, tu appelles un WebService Axis pour lesquels tu récupères une liste d'erreurs. Cette liste est de type ArrayListExtension et est ensuite transformée en tableau de MarkerError. L'erreur indique qu'Axis n'arrive pas à sérialiser / désérialiser le type ArrayListExtension auquel cas tu dois l'enregistrer avec des instructions du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ArrayListExtensionXmlType = new QName("http://xml.apache.org/xml-soap", "ArrayListExtension");
    mapping.register(ArrayListExtension.class,
    	ArrayListExtensionXmlType,
    	new ArraySerializerFactory(ArrayListExtension.class, ArrayListExtensionXmlType),
    	new ArrayDeserializerFactory(ArrayListExtensionXmlType));
    Je ne suis pas sûr à 100% de ma réponse mais c'est en tous cas comme ça que j'ai procédé pour résoudre un problème similaire de mon côté.

    Bonne chance.
    Ainsi, Axis sera capable de désérialiser l

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en général, quand tu termine avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x.y.Z cannot be cast to x.y.Z
    C'est qu'il y a une merdouillage classloader et, l'instance concrète que tu as a été chargée par un classloader A alors que ton code, lui, voir la classe x.y.Z chargée par le classloader B.

    Autrement dit, tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    instance.getClass().getName().equals(x.y.Z.class.getName()); // true
    //mais
    instance.getClass().equals(x.y.Z.class); // false
    // parce que
    instance.getClass().getClassloader() != x.y.Z.class.getClassloader();
    Le mieux est d'afficher le classloader associé à l'instance dont tu dispose pour avoir une idée d'ou le merdouillage a eu lieu

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/01/2010, 01h58
  2. comment exploiter org.apache.axis.client.AdminClient
    Par bjosue dans le forum Services Web
    Réponses: 6
    Dernier message: 04/05/2009, 21h45
  3. Réponses: 2
    Dernier message: 25/08/2008, 09h30
  4. Probléme avec org.apache.axis.utils.JavaUtils.convert
    Par adil_aeh dans le forum Services Web
    Réponses: 1
    Dernier message: 22/06/2007, 15h57
  5. org.apache.axis.client.invoke() en exception
    Par ep31 dans le forum Services Web
    Réponses: 2
    Dernier message: 27/01/2006, 15h26

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