Validation XML côté serveur avec Webservice CXF
Je suis en train de travailler sur un Apache CXF webservice (à l'aide de JAX-WS, plus de SAVON). Le service lui-même est assez simple: recevoir une demande, insérez la requête dans une base de données, et le retour de savoir si l'insertion a été couronnée de succès. Je voudrais compter sur la validation XML pour faire respecter un certain nombre de contraintes sur la demande.
Donc, ma question. Comment puis-je retourner détaillé des erreurs de validation à un client de mon service? J'ai activé la validation côté serveur, par la configuration de mon point de terminaison.
<jaxws:endpoint id="someEndpoint" implementor="#someImpl" address="/impl">
<jaxws:properties>
<!-- This entry should- ideally- enable JAXB validation
on the server-side of our web service. -->
<entry key="schema-validation-enabled" value="true" />
</jaxws:properties>
</jaxws:endpoint>
J'ai exploré à l'aide de séparateurs (par exemple BareInInterceptor) sur le serveur, et en quelque sorte attraper SAXParseExceptions de les emballer et de les envoyer au client. Cette approche semble un peu compliqué, mais j'ai besoin de pouvoir donner aux clients un numéro de ligne si leur XML n'est pas valide. Dois-je aller avec des intercepteurs pour exposer les exceptions?
Je ne suis pas très expérimenté avec cette technologie de la pile, et juste arriver à des services web - les pointeurs les gars, vous pouvez me donner serait vraiment apprécié.
source d'informationauteur Matt Luongo
Vous devez vous connecter pour publier un commentaire.
Vous pouvez remplacer les messages d'erreur de validation, l'insertion d'un numéro de la ligne, à l'aide d'un custom ValidationEventHandler:
Si vous configurez votre point de terminaison d'utiliser ce gestionnaire:
Ensuite, vous recevrez des erreurs SOAP qui ressemblent à ceci:
La jaxb-validation-event-handler, propriété n'a été ajouté à CXF assez récemment, donc vous devez vous assurer que vous utilisez bien la dernière version que j'ai testé cela avec 2.2.5.