online obtener generar from for examples entre diferencia archivos apartir abrir wsdl xsd

obtener - xml from wsdl



Generando un WSDL desde un archivo XSD (6)

Necesito generar un archivo WSDL dado un archivo XSD. ¿Cómo hago esto? ¿Puedo hacer esto en VS2005? ¿Cuál es la forma más simple de hacer esto?


Esta herramienta xsd2wsdl forma parte del proyecto Apache CXF que generará un WSDL minimalista.


Me gustaría diferir con marc_s en esto, que escribió:

un XSD describe los aspectos de DATOS, por ejemplo, de un servicio web: el WSDL describe las FUNCIONES de los servicios web (llamadas a métodos). Por lo general, no puede descubrir las llamadas a los métodos solo a partir de sus datos.

WSDL no describe funciones. WSDL define una interfaz de red, que a su vez está compuesta por puntos finales que reciben mensajes y luego responden con mensajes. WSDL describe los puntos finales y los mensajes de solicitud y respuesta. Está muy orientado a los mensajes.

A menudo pensamos en WSDL como un conjunto de funciones, pero esto se debe a que las herramientas de servicios web generalmente generan proxies del lado del cliente que exponen las operaciones WSDL como métodos o llamadas a funciones. Pero el WSDL no requiere esto. Este es un efecto secundario de las herramientas.

EDITAR : Además, en el caso general, XSD no define los aspectos de datos de un servicio web. XSD define los elementos que pueden estar presentes en un documento XML compatible. Tal documento se puede intercambiar como un mensaje sobre un punto final del servicio web, pero no es necesario.

Volviendo a la pregunta, respondería la pregunta original de manera un poco diferente. Diría que SÍ, es posible generar un archivo WSDL dado un archivo xsd, de la misma manera que es posible generar una tortilla usando huevos.

EDITAR : Mi respuesta original no ha sido clara. Déjame intentar de nuevo. No sugiero que XSD sea equivalente a WSDL, ni que un XSD sea suficiente para producir un WSDL. Yo digo que es posible generar un WSDL, dado un archivo XSD , si con esa frase quiere decir "generar un WSDL usando un archivo XSD". Al hacerlo, aumentará la información en el archivo XSD para generar el WSDL. Tendrá que definir cosas adicionales, partes de mensajes, operaciones, tipos de puertos, ninguno de estos está presente en el XSD. Pero es posible "generar un WSDL, dado un XSD", con un poco de esfuerzo creativo.

Si la frase "generar un WSDL dado un XSD" se interpreta como "transformar mecánicamente un XSD en un WSDL", entonces la respuesta es NO, no se puede hacer eso. Esto debería ser claro dada mi descripción del WSDL anterior.

Al generar un WSDL usando un archivo XSD, normalmente hará algo como esto (observe los pasos creativos en este procedimiento):

  1. importar el esquema XML al WSDL (elemento wsdl: types)
  2. agregue al conjunto de tipos o elementos con elementos adicionales o envoltorios (digamos matrices o estructuras que contengan los tipos básicos) según lo desee. El resultado de # 1 y # 2 comprende todos los tipos que usará WSDL.
  3. definir un conjunto de mensajes de entrada y salida (y tal vez fallas) en términos de los tipos previamente definidos.
  4. Defina un tipo de puerto, que es la colección de emparejamientos de mensajes in.out. Puede pensar en el tipo de puerto como un WSDL analógico para una interfaz Java.
  5. Especifique un enlace, que implementa el tipo de puerto y define cómo se serializarán los mensajes.
  6. Especifique un servicio que implemente el enlace.

La mayor parte del WSDL es más o menos repetitivo. Puede parecer desalentador, pero eso es principalmente debido a esos paréntesis angulares que dan miedo y abundantes, he encontrado.

Algunos han sugerido que este es un proceso manual prolijo. Tal vez. Pero así es como puedes construir servicios interoperables. También puede usar herramientas para definir WSDL. La generación dinámica de WSDL a partir del código dará lugar a riesgos interoperativos.


No puede - un XSD describe los aspectos de DATOS, por ejemplo, de un servicio web - el WSDL describe las FUNCIONES de los servicios web (llamadas a métodos). Por lo general, no puede descubrir las llamadas a los métodos solo a partir de sus datos.

Estas son realmente dos partes separadas y distintivas de la ecuación. Por simplicidad, a menudo importaría sus definiciones de XSD en el WSDL en la etiqueta <wsdl:types> .

(gracias a Cheeso por señalar mi uso inexacto de los términos)


Personalmente (y dado lo que sé, es decir, Java y eje), generaría un modelo de datos Java a partir de los archivos .xsd (Axis 2 puede hacerlo), y luego agregaría una interfaz para describir mi servicio web que usa ese modelo , y luego generar un WSDL desde esa interfaz.

Debido a que .NET también tiene todas estas características, también debe ser posible hacer todo esto en ese ecosistema.


Sé que esta pregunta es antigua, pero merece una respuesta. Personalmente prefiero crear un WSDL a mano y probar el cumplimiento con SoapUI. Pero a veces (especialmente para WSDL complejos), tiene tres formas de generar uno a partir de un XSD:

  1. Generar un WSDL a partir de un esquema utilizando Eclipse (probablemente el más fácil de usar)
  2. Generando un WSDL a través de CXF (mi favorito)
  3. Generando un WSDL a través de convenciones usando Spring WS (mi menos favorito)

Prefiero el enfoque CXF ya que soy un tipo de CLI. Si tiene una CLI, puede automatizar (ese es mi lema). Y me gusta menos el enfoque de Spring WS porque usa muchas convenciones específicas de framework.

Hay más personas que conocen CXF (creo) que Spring WS. Entonces, cualquier cosa que pueda arrojar una curva de aprendizaje para un nuevo ingeniero (sin ninguna ventaja clara o ROI) es algo que desaprovecho.

También debería decirse que cualquier WSDL generado debe probarse para verificar su validez y cumplimiento (y ajustarlo hasta que cumpla), y que su aplicación publique un wsdl estático (en lugar de devolver uno autogenerado).

Según mi experiencia, comienzas con un wsdl compatible con WS-I y luego tu aplicación genera automáticamente (y vuelve a los consumidores) una no conforme.

En otras palabras, ten cuidado con la magia automática.


podemos generar un archivo wsdl desde xsd, pero debe usar el paquete de eclipse Oracle enterprise (OEPE). simplemente cree xsd y luego haga clic derecho-> nuevo-> wsdl ...