2010-10-11 8 views
0

Je migre un service Web SOAP vers JDK1.5. J'ai profité des énumérations java natives dans le nouveau code. Pour certaines raisons, je suis coincé avec Axis 1.2 et il ne supporte pas nativement JDK5 "enums".Sérialisation personnalisée de JDK5 Enum dans l'axe 1.2 côté client

J'ai trouvé un tutoriel sur la façon de mettre en œuvre une sérialisation/désérialisation personnalisée pour les enums java: http://www.developpez.net/forums/d236564/java/developpement-web-java/web-services/utiliser-type-enum-jdk5-axis/ (en français).

J'ai réussi à enregistrer ces gestionnaires de sérialisation personnalisés côté serveur en utilisant des éléments "typeMapping" dans le fichier ".wsdd".

Cependant, je n'arrive pas à comprendre comment enregistrer les mêmes classes côté client, car je n'ai pas de fichier ".wssd" ici.

Toute aide serait appréciée.

Merci, Raphael

Répondre

2

j'ai enfin trouvé comment enregistrer manuellement un mappage de type personnalisé. je le fais lors de la création d'une instance d'un service :

service = new Service(); 

// Get default type mapping 
TypeMapping tmap = DefaultTypeMappingImpl.getSingletonDelegate(); 

// Register our custom serializer/deserializer 
tmap.register(
     MyCustomClass.class, 
     MyCustomClassQName, 
     new MyCustomSerizalizerFactory(), 
     new MyCustomDeserizalizerFactory()); 

// Add it back to the service 
service.getTypeMappingRegistry().register(
     "http://schemas.xmlsoap.org/soap/encoding/", // Default encoding 
     tmap); 

Je ne sais pas si elle est la bonne façon de le faire, mais ça marche!

Questions connexes