11
votes

Valider les demandes de savon contre le schéma dans une première approche du code JAX-WS

J'ai créé un service Web Jax-WS, en utilisant Jaxb Annotations sur certains champs de demande pour les rendre obligatoires.

<xs:element name="number" type="xs:string"/>


1 commentaires

Je viens d'ajouter l'annotation @schemavalidation sur mon WS et il a commencé à travailler: CVC-Complex-Type.2.4.a: Le contenu non valide a été trouvé à partir de l'élément "Email". Un de '{pwd}' est attendu


3 Réponses :


2
votes

Je propose deux solutions de contournement à votre problème, si vous ne pouvez pas le résoudre:

  1. Validez votre haricot après Jaxb Mibarshaling Li>
  2. Utilisez la fonctionnalité de validation CXF LI> OL>

    Validation après JAXB UNMARSALLING H2>

    Je pense que vous pouvez ajouter un rappel JAXB Afterunmarshal () dans votre haricot de demande Java ( Comme décrit ici ) et effectuez toute la validation que vous souhaitez. Validation, ou autres). P>

    Par exemple: P>

    @XmlRootElement
    public class YourRequest {
    
        @XmlElement(required = true)
        protected String number;
    
        // some code here
    
        public void afterUnmarshal(Unmarshaller unmarshaller, Object parent) {
           if(number == null) {
               // Throw validation exception
           }
        }
    
    }
    


0 commentaires

4
votes

La valeur par défaut pour minocurs est 1. Ainsi, votre valeur doit exister.
La valeur par défaut pour Nillable est fausse. Donc, votre valeur ne peut pas être vide.
Et vous avez activé la validation du schéma dans votre service Web:
xxx

et, enfin, vous avez un schéma résultant.

mais , la mise en œuvre de référence JAXB ne vaut aucune validation pour vous.

Vous devez le faire par vous-même, en utilisant le API de validation Java XML

Voici un exemple simple de validation de schéma xxx


0 commentaires

1
votes

Utilisez un outil tel que Jaxb2-Maven-Plugin pour générer la classe JAXB. et validez avant d'envoyer la charge utile sur Webservice ou avant d'accepter la charge utile dans votre système à l'aide de la spécification JSR 303. Cliquez ici pour voir le validateur JSR 303.

Cela rendra votre système robuste.


0 commentaires