Bonjour,
J'ai un paramètre de ma méthode web-service de type complexe (exemple objet Homme(nom, prenom, age) ), et je veux dans le soap message j'aurai ces attribues et non pas <homme/>.
est ce possible
Merci
Version imprimable
Bonjour,
J'ai un paramètre de ma méthode web-service de type complexe (exemple objet Homme(nom, prenom, age) ), et je veux dans le soap message j'aurai ces attribues et non pas <homme/>.
est ce possible
Merci
plus d'explication:
soit la méthode du web service
dans la requête soap j'obtient:Code:
1
2
3 @WebMethod public void printResult(@WebParam(name = "person") Person person)
alors que moi je veux:Code:
1
2
3
4 <log:printResult> <!--Optional:--> <person/> </log:printResult>
supposant que :Code:
1
2
3
4
5
6
7 <log:printResult> <!--Optional:--> <person> <name></name> <age></age> </person> </log:printResult>
:)Code:
1
2
3
4
5
6 public class Person{ private String name; private int age; ... }
JAX-WS utilise JAXB pour "sérialiser" les objets Java. Il faut donc soit configurer JAX-WS pour qu'il utilise un binding de ton choix, soit annoter ta classe.
Je te laisses consulter la documentation JAX-WS concernant l'utilisation de JAXB et celle de JAXB concernant la "sérialization" (marshalling).
merci Nemek,
comment puis-je annoter ma classe?
Utilises le package javax.xml.bind.annotation.
Tu ne devrais pas rencontrer trop de problèmes en ne faisant qu'annoter la classe Personne avec XmlRootElement.
Il faut juste que tu es des getter/setter sur les méthodes que tu veux sérialiser.
Si tu as un WSDL avec un schéma il faudra spécifier les noms et namespace des éléments dans tes annotations JAXB.
merci nemek,
c'est très bien avec XmlRootElement, tout est bon.
Qu'est ce que tu veux dire par :
Oui il y a un WSDL dans le projet dans le quel je travailles, mais sans modifier ce wsdl et avec mon classe annoté @webservice et mon bean annoté par @XmlRootElement j'ai pu avoir le soap.Citation:
Si tu as un WSDL avec un schéma il faudra spécifier les noms et namespace des éléments dans tes annotations JAXB.
sachant que j'ai dans le fichier sun-jaxws.xml ceci :
est ce que je dois changer le wsdl comme tu as dis?Code:
1
2
3
4 <endpoint name="monservice" implementation="com.work.Monservice" url-pattern="/services/soap/monservice"> </endpoint>
Merci
Dans le WSDL tu peux spécifier un schéma pour le corps du message.
Dans ce cas il faut que le schéma corresponde à ton binding JAXB.
Mais si ça marche c'est bon comme ça :)
oui ça marche mais juste je voulais savoir l'utiliter du fichier wsdl existant dans le projet,
certaint endpoint ont un attribut :
et d’après mes connaissance une fois que tu as creéer le webservice tu peux se supprimer cet attribut du endpoint,Code:wsdl="WEB-INF/wsdl/MesService.wsdl"
alors pourquoi ces références au fichier wsdl, et l'existence du fichier wsdl sert a quoi dans le projet, sachant que ce fichier est générer automatiquement par le framework, non?