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");
Partager