Question

Je vous envoie une demande de webservice et reçois des réponse correcte du service Web au format XML avec la valeur correcte peuplée du tage élément de réponse. Maintenant, j'essayé de unmarshal mais l'objet de réponse est d'être peuplée avec nulle au lieu de la valeur que je vois en réponse XML.

Toute chose évidente pour vérifier? Ceci est mon code:

InputSource outputSource = getWebServiceHelper().send(source,messageIdentifier);

JAXBElement<Envelope> responseEnv = (JAXBElement<Envelope>) getWebServiceHelper().unmarshal(new SAXSource(outputSource));
JAXBElement<ResponseObjectType> result = (JAXBElement<ResponseObjectType>)responseEnv.getValue().getBody().getAny().get(0); 

Le moment où la deuxième exécute de ligne, l'attribut de réponse devient nulle. En dépit d'être correct entre les balises xml!

Merci une tonne. Chaitanya

Était-ce utile?

La solution

je me suis trouvé la solution par essai intense et erreur. Voici comment je me suis fait.

xjc Exécution crée 4 classes à savoir ObjectFactory.java, package-info.java, classe qui représente la demande de webservice et la classe qui représente une réponse webservice.

J'ai négligé d'inclure package-info.java alongwith 3 autres classes. Ceci est la raison JAXB est incapable de désorganiser le repsone.

Si je ne ObjectFactory.java inclus, je reçois exception au démarrage du serveur lancée par haricot org.springframework.oxm.jaxb.Jaxb2Marshaller défini dans le fichier contexte du printemps, donc je sais que je dois l'inclure. Mais non compris package-info.java tombe en panne causant silencieusement la frustration!

Je l'ai lu dans Stackoverflow et ailleurs que pour la méthode unmarshal () pour accepter seulement un javax.xml.transform.Source argument- et unmarshal je besoin d'annotation de l'utilisation @XmlRootElement mais cela ne semble pas être applicable à mon cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top