Estoy trabajando en un servicio web Apache CXF (usando JAX-WS, sobre SOAP). El servicio en sí es bastante simple: recibir una solicitud, insertar la solicitud en una base de datos y devolver si la inserción fue exitosa. Me gustaría basarme en la validación XML para aplicar una serie de limitaciones a la solicitud.Validación XML del lado del servidor con el servicio web CXF
Entonces, mi pregunta. ¿Cómo devuelvo los errores de validación detallados a un cliente de mi servicio? He convertido la validación en el servidor configurando mi punto final.
<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>
He explorado el uso de interceptores (por ejemplo BareInInterceptor) en el servidor, y de alguna manera la captura SAXParseExceptions para envolverlos y enviarlos junto con el cliente. Este enfoque parece un poco complicado, pero de alguna manera tengo que darles a los clientes un número de línea si su XML no es válido. ¿Debo ir con los interceptores para exponer las excepciones?
No tengo mucha experiencia con esta pila de tecnología, y solo estoy ingresando a los servicios web, cualquier sugerencia que ustedes me puedan dar sería muy apreciada.
Tenga en cuenta que si el XML de su solicitud está siendo generado por una aplicación cliente SOAP (como la que obtendría de la generación de stubs de su propio servicio), es probable que su número de línea sea 1 con frecuencia (ya que muchos los clientes simplemente generarán un documento XML de 1 línea muy larga). –
@Ian McLaird: estos son comentarios válidos, por otro lado, cuando los probadores prueban la aplicación, usan un mejor formato y esto les ayudará a – Betlista