Ich arbeite an einem Apache CXF-Webservice (mit JAX-WS, über SOAP). Der Dienst selbst ist ziemlich einfach: Empfangen Sie eine Anfrage, fügen Sie die Anfrage in eine Datenbank ein und geben Sie zurück, ob die Einfügung erfolgreich war. Ich möchte mich auf die XML-Validierung verlassen, um eine Reihe von Einschränkungen für die Anforderung durchzusetzen.Server-Side XML Validation mit CXF Webservice
Also, meine Frage. Wie gebe ich detaillierte Validierungsfehler an einen Kunden meines Dienstes zurück? Ich habe die Validierung serverseitig durch Konfigurieren meines Endpunkts aktiviert.
<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>
Ich habe erforscht mit Abfangjäger (zB BareInInterceptor) auf dem Server, und irgendwie fangen SAXParseExceptions sie wickeln und sie zusammen an den Client zu senden. Dieser Ansatz scheint ein wenig kompliziert zu sein, aber ich muss Kunden irgendwie eine Zeilennummer geben, wenn ihr XML ungültig ist. Soll ich mit Abfangjägern gehen, um die Ausnahmen aufzudecken?
Ich bin nicht sehr erfahren mit dieser Technologie-Stack, und nur in Web-Services - alle Hinweise, die Sie mir geben können, würde wirklich geschätzt werden.
Bedenken Sie, dass, wenn das XML in Ihrer Anfrage von einer SOAP-Client-Anwendung generiert wird (wie es beim Generieren von Stubs von Ihrem eigenen Service der Fall ist), Ihre Zeilennummer sehr oft 1 ist Clients generieren einfach ein XML-Dokument mit einer sehr langen Zeile. –
@Ian McLaird: das ist gültig Kommentare, auf der anderen Seite, wenn die Anwendung von Testern getestet wird, verwenden sie bessere Formatierung und das wird ihnen helfen – Betlista