2012-01-24 22 views
5

Estamos desarrollando una plataforma MDA que tiene soporte para servicios web. El usuario puede proporcionar un WSDL en tiempo de ejecución y generamos todos los artefactos (interfaz de servicio e implementación para el servidor y consumidor para el cliente) usando JAX-WS internamente.Validación en tiempo de ejecución WSDL con JAX-WS

Queremos agregar la validación en el documento WSDL proporcionado por el usuario. En este momento el usuario tiene que validar eso con una herramienta externa como Oxygen, XMLSpy o una herramienta web, pero queremos agregar eso como parte de nuestro sistema. Una característica agradable también sería la validación de esquemas, incluidos los esquemas integrados de los WSDL.

En JAX-WS (RI) existe soporte para la validación de esquema en tiempo de ejecución (utilizando la anotación @SchemaValidation) pero no hemos encontrado ningún soporte para la validación de WSDL.

Hemos tratado de integrar Eclipse's WSDL validator pero parece que no funciona para nosotros.

¿Hay alguna forma de hacerlo con JAX-WS? Si no, ¿hay algún otro marco de validación que podamos integrar?

Gracias

Respuesta

2

Hay un poco de confusión en su pregunta que tengo que aclarar en primer lugar.

Parece que desea la capacidad de validar el WSDL (sintaxis + WS-I) y XSD, ya sea incorporado o referenciado externamente por el WSDL. Por otro lado, traes @SchemaValidation, que en realidad se usa para validar documentos de instancia.

En un enfoque de desarrollo tradicional, uno podría decir que quiere al menos la capacidad de validar artefactos en tiempo de diseño (WSDL + XSD).

Para este escenario a continuación, recomiendo lo siguiente:

WSDL: para las pruebas de cumplimiento de WS-I, por favor, eche un vistazo a la test tools section of the WS-I site. No está claro cómo la licencia que tienen con sus herramientas de prueba funcionaría con la suya, pero al menos debería darle una idea de qué buscar si no funciona para usted.

ACTUALIZACIÓN: Recursos adicionales de validación de WSDL: - Eclipse basado, cómo usar fuera de Eclipse.

XSD: si realmente necesita una validación por separado para los archivos XSD, las cosas pueden ser complicadas para un producto de calidad de producción; WSDL4J no es de mucha ayuda aquí, y creo que XSOM es el camino a seguir para este tipo de trabajo. Tienes que extraer contenido de la sección de tipos como uno o más archivos XSD (podría ser más de un archivo XSD, echa un vistazo a algunos ejemplos, los WSDL de SharePoint de Microsoft vienen a mi mente como un buen caso de prueba), asigna una base uri para cada XSD extraído que coincide con la ubicación del WSDL, luego usa XSOM para validarlos.

Dado que está generando el cliente, lo más probable es que no esté interesado en validar, por ejemplo, los encabezados HTTP (SOAP 1.1/HTTP, SOAPAction, si coincide con la definición de la operación WSDL). Si termina desarrollando un interés en eso también, lo que llamo validación en tiempo de ejecución, entonces recomendaría un diseño diferente en su enfoque (es decir, no confiaría en @SchemaValidation sino en un servicio de proxy transparente y genérico).)

+0

Mencioné @SchemaValidation solo para evitar la confusión entre la validación de la instancia y el esquema/wsdl. Preguntaba, como dijiste, sobre la validación de los artefactos en tiempo de diseño. Acerca del sitio WS-I, eché un vistazo a las herramientas y eso podría funcionar, pero no estoy seguro acerca de la licencia. Acerca de los XSD, ya los estamos separando del WSDL y admitimos varios esquemas incrustados. Investigaré cómo validar ésos con XSOM. Y sobre su último punto, también generamos servidores, y validar esos encabezados podría ser interesante. ¡Gracias por su respuesta! – Denian

+1

Por alguna razón, y después de un rápido vistazo al archivo de licencia, me parece que la pila de herramientas WS-I no es amigable con herramientas cerradas o comerciales. Quería señalarlo para asegurarme de que también mires estos aspectos. Para validar los encabezados, he visto casos en los que el cliente envía el cuerpo de jabón correcto sin la SOAPAction correcta. Además, gracias por aclarar, así lo pensé sobre @SchemaValidation. –

+0

Sí, tiene razón: http://netzooid.com/blog/2006/11/26/is-ws-i-open-look-at-their-test-license/ Creo que tendremos que encontrar otra solución o marco. Acerca de validar los XSD, lo he intentado con XSOMParser creando un ErrorHandler y funciona bien. Creo que debería dejar esta pregunta abierta ya que la preocupación principal era la validación WSDL, pero de todos modos muchas gracias por sus respuestas. – Denian

Cuestiones relacionadas