WSDL

Web Services Description Language (WSDL) es un lenguaje descriptivo basado en XML (Extensible Markup Language). Este lenguaje se remitió a W3C (World Wide Web Consortium) como el estándar del sector para describir servicios web. La potencia de WSDL se deriva de dos principios básicos de arquitectura: la posibilidad de describir un conjunto de operaciones empresariales y la posibilidad de separar la descripción en dos unidades básicas. Estas unidades son una descripción de las operaciones y los detalles de cómo se empaquetan la operación y la información asociada.

Un documento WSDL define los servicios como colecciones de puntos finales de red o puertos. En WSDL, las definiciones abstractas de los puntos finales y los mensajes están separadas de los enlaces de formato de datos o el despliegue de red concreto. Esta separación permite reutilizar las definiciones abstractas: los mensajes, que son descripciones abstractas de los datos intercambiados, y los tipos de puerto, que son las colecciones abstractas de las operaciones. El protocolo específico y las especificaciones de formato de datos de un tipo de puerto en concreto constituyen un enlace reutilizable. El puerto se define asociando una dirección de red con un enlace reutilizable, y una colección de puertos define un servicio. Por lo tanto, un documento WSDL está formado por varios elementos.

A continuación se muestra la estructura de la información de un archivo WSDL:Anatomía de archivo WSDL

Un archivo WSDL contiene las partes siguientes:
  • Definición de interfaz de servicio Web

    Esta parte contiene los elementos y los espacios de nombres.

  • Implementación de servicio Web

    Esta parte contiene la definición del servicio y los puertos.

Los archivos WSDL describen servicios web con los elementos siguientes:

portType

La descripción de las operaciones y los mensajes asociados. El elemento portType define operaciones abstractas.

<portType name="EightBall">
  <operation name="getAnswer">
    <input message="ebs:IngetAnswerRequest"/>
    <output message="ebs:OutgetAnswerResponse"/>
  </operation>
</portType>

message

La descripción de parámetros de entrada y salida y valores de retorno.

<message name="IngetAnswerRequest">
  <part name="meth1_inType" type="ebs:questionType"/>
</message>
<message name="OutgetAnswerResponse">
  <part name="meth1_outType" type="ebs:answerType"/>
</message>

types

El esquema para describir los tipos XML utilizados en los mensajes.

<types>
  <xsd:schema targetNamespace="...">
    <xsd:complexType name="questionType">
      <xsd:element name="question" type="string"/>
    </xsd:complexType>
    <xsd:complexType name="answerType">
    ...
</types>

enlace

Los enlaces describen el protocolo que se utiliza para acceder a portType, así como los formatos de datos para los mensajes definidos por un portType particular.

<binding name="EightBallBinding" type="ebs:EightBall">
  <soap:binding style="rpc" transport="schemas.xmlsoap.org/soap/http">
  <operation name="ebs:getAnswer">
  <soap:operation soapAction="urn:EightBall"/>
    <input>
      <soap:body namespace="urn:EightBall" ... />
      ...

Servicio

Los servicios y los puertos definen la ubicación del servicio web.

El servicio contiene el nombre del servicio web y una lista de puertos.

Puertos

Los puertos contienen la ubicación del servicio web y el enlace utilizado para acceder al servicio.
<service name="EightBall">
  <port binding="ebs:EightBallBinding" name="EightBallPort">
    <soap:address location="localhost:8080/axis/EightBall"/>
  </port>
</service>

Al crear servicios web JAX-WS (Java™ API for XML Web Services) o JAX-RPC (Java API for XML-based RPC), puede utilizar un enfoque de desarrollo ascendente, cuando empiece desde JavaBeans o un enterprise bean, o bien puede utilizar un enfoque de desarrollo ascendente, cuando empiece con un archivo WSDL (Web Services Description Language) existente.

Cuando se crean servicios web JAX-WS para este producto, puede empezar con un WSDL o una clase de bean de implementación. Si empieza con una clase de bean de implementación, utilice la herramienta de línea de mandatos wsgen para generar todos los artefactos de servidor de servicios web, incluido un WSDL si es necesario. Si empieza con un WSDL, utilice la herramienta de línea de mandatos wsimport para generar todos los artefactos de servicios web para el servidor o el cliente.

Cuando se crean servicios web JAX-RPC para este producto, primero debe tener un bean de implementación que incluya una interfaz de punto final de servicio. A continuación, se utiliza la herramienta de línea de mandatos Java2WSDL para crear un archivo WSDL que defina los servicios web. Si empieza con el WSDL para generar la clase de bean de implementación, ejecute la herramienta de línea de mandatos WSDL2Java en el archivo WSDL para crear API Java y plantillas de descriptores de despliegue.

WSDL multiparte y publicación WSDL

El producto da soporte al despliegue de servicios web utilizando un archivo WSDL (Web Services Description Language) multiparte. En archivos WSDL multiparte, un archivo WSDL de implementación contiene wsdl:service. Este archivo WSDL de implementación importa un archivo WSDL de interfaz, que contiene los otros constructores WSDL. Esto da soporte a varios servicios web utilizando la misma definición de interfaz WSDL.

El elemento <wsdl:import> indica una referencia a otro archivo WSDL. Si el atributo de ubicación del elemento <wsdl:import> no contiene un URL, es decir, sólo contiene un nombre de archivo, y no empieza con http://, https:// o file://, el archivo importado deberá ubicarse en el mismo directorio y no deberá contener un componente de vía de acceso relativa. Por ejemplo, si META-INF/wsdl/A_Impl.wsdl es el módulo y contiene la sentencia de importación <wsdl:import="A.wsdl" namespace="..."/> el archivo A.wsdl también debe ubicarse en el directorio del módulo META-INF/wsdl.

Se recomienda colocar todos los archivos WSDL en el directorio META-INF/wsdl, si utiliza EJB (Enterprise JavaBeans) o el directorio WEB-INF/wsdl, si utiliza componentes JavaBeans, aunque existan importaciones relativas dentro de los archivos WSDL. Si no es así, hay implicaciones con la publicación de WSDL cuando utiliza una vía de acceso similar a la siguiente <location="../interfaces/A_Interface.wsdl"namespace="..."/>. Si se utiliza una vía de acceso como la que se muestra este ejemplo se producirá un error debido a la presencia de la vía de acceso relativa, independientemente de que el archivo esté ubicado o no en la vía de acceso. Si la ubicación es una dirección web, debe ser legible en el despliegue y el arranque del servidor.

Puede publicar los archivos que se encuentran en el directorio META-INF/wsdl o en el directorio WEB-INF/wsdl a través de una dirección de URL o archivo, incluidos los archivos WSDL o XSD (XML Schema Definition). Por ejemplo, si el archivo al que se hace referencia en el elemento <wsdl-file> del descriptor de despliegue webservices.xml se encuentra en los directorios META-INF/wsdl o WEB-INF/wsdl, se puede publicar. Si los archivos importados por <wsdl-file> se encuentran en el directorio wsdl/ o su subdirectorio, se pueden publicar.

Si el archivo WSDL al que hace referencia el elemento <wsdl-file> se encuentra en un directorio distinto a wsdl o en un subdirectorio de éste, el archivo y los archivos importados, ya sean archivos WSDL o XSD, que están en el mismo directorio, se copian en el directorio wsdl sin modificar, cuando se instala la aplicación. Estos tipos de archivos también se pueden publicar.

Si <wsdl-file> importa un archivo situado en un directorio distinto (un directorio que no sea -INF/wsdl o un subdirectorio), el archivo no se copia en el directorio wsdl y no está disponible para su publicación.

Para los servicios web JAX-WS, puede utilizar una anotación para especificar la ubicación del WSDL. Utilice la anotación @WebService con el atributo WSDLLocation. El atributo WSDLLocation es opcional. Si no se especifica este atributo, el WSDL se genera y se publica a partir de la información que se encuentra en las clases de servicio web. Opcionalmente, puede especificar la ubicación del archivo WSDL en el descriptor de despliegue webservices.xml. No obstante, cualquier información que defina en el descriptor de despliegue webservices.xml altera temporalmente la información correspondiente especificada por las anotaciones.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_wsdl
File name: cwbs_wsdl.html