Valider les requêtes soap schéma dans un JAX-WS code-première approche
J'ai créé un JAX-WS webservice, en utilisant les annotations JAXB sur demande de certains champs de la rendre obligatoire.
@XmlElement(required = true)
protected String number;
Le WSDL généré par cxf-java2ws-plugin est correct, il n'y a pas de minOccurs="0"
sur les champs :
<xs:element name="number" type="xs:string"/>
Mais lorsque le service reçoit une demande qui ne respecte pas ces contraintes (manque des champs), aucun type soapfault ou une exception est levée.
J'ai aussi essayé d'ajouter @SchemaValidation
à mon WS classe, avec aucun effet.
Comment la demande de validation contre schmema (ou plutôt une validation par rapport à l'annotation à base de contraintes) peuvent être automatisées?
Je viens d'ajouter l'annotation @SchemaValidation sur ma WS et il a commencé à travailler:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'email'. One of '{pwd}' is expected
OriginalL'auteur kgautron | 2014-12-10
Vous devez vous connecter pour publier un commentaire.
Je propose deux solutions à votre problème, si vous ne pouvez pas le résoudre :
De Validation après JAXB désordonnancement
Je pense que vous pouvez ajouter un JAXB rappel afterUnmarshal() en Java demande de haricot (comme décrit ici), et d'effectuer toutes de validation que vous voulez dedans (format de validation, ou autres).
Par exemple :
CXF fonctionnalité de Validation de
Une autre possibilité est d'utiliser Bean Validation avec CXF (comme indiqué ici). Habituellement, il n'est pas nécessaire pour un schéma à base de validation, mais si vous avez besoin d'avoir une validation plus complexe qu'un schéma de base, je pense que ça peut être une solution à votre problème après tout.
J'espère que cela peut vous aider en attendant une meilleure solution.
OriginalL'auteur KevinHol
La valeur par défaut pour minOccurs est 1. Donc, votre valeur doit exister.
La valeur par défaut pour nillable est faux. Donc, votre valeur ne peut pas être vide.
Et vous avez activé la validation de schéma dans votre web service:
Et, le dernier mais non le moindre, vous avez un schéma résultant.
Mais, le JAXB de référence de mise en œuvre n'a pas de validation pour vous.
Vous devez le faire par vous-même, à l'aide de la Java Xml API de Validation
Ici un exemple simple de la validation du schéma
OriginalL'auteur Joachim
Utiliser un outil comme jaxb2-maven-plugin pour générer le JAXB Classe. et avant de Valider l'envoi de la charge utile pour le WebService ou avant d'accepter la charge utile dans votre système à l'aide de la JSR 303 Spécification.
Cliquez Ici pour voir la JSR 303 Validateur.
Cela permettra de rendre votre système Robuste.
OriginalL'auteur sitakant