2010-04-27 4 views
4

J'ai un service Web JAXB qui ne s'attend pas à ce que l'élément Id soit transmis, et un client qui passe cet élément de toute façon.JAXB Unxpected Element

La version du service Web actuellement en production ignore silencieusement cet élément inattendu, mais la version dans QA se plaint. En traçant le XML des requêtes entrantes, j'ai confirmé que l'élément Id est envoyé à la fois aux versions production et QA du service.

Le message d'erreur QA est:

org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element (uri:" http://mydomain.com/transaction ", local:"Id"). Expected elements are...

Le message est assez clair, mais la solution est que le client est largement déployée. Dans un premier temps, je voudrais essayer de comprendre pourquoi la version de production accepte cet élément supplémentaire alors que la version QA ne l'accepte pas. Il n'y a pas beaucoup de différences entre les deux versions.

Suggestions où chercher?

+0

Injectez-vous un 'schéma 'dans l'une ou l'autre version, pour validation? – skaffman

+0

@skaffman: Non, il n'y a pas de schéma. –

Répondre

0

Je ne sais pas si je vous ai eu une question correcte, mais ce que je comprends que vous créez xml en utilisant jaxb Marshaller et l'envoyer au service. Dans votre service, votre service accepte les éléments que vous passez .. Je suppose que vous avez un service web qui reste unmarshalls le xml et la validation par le code. Je suggère au lieu d'inspecter la requête xml entrante vérifier le code déployé dans QA et PROD .. puisque l'exception sera levée lors de la validation qui se produit après unmarshalling de xml .. espérons que cela aide :).