Conceptos Fundamentales de Servicios Web: WSDL, Recursos y Métodos HTTP

Clasificado en Informática

Escrito el en español con un tamaño de 3,64 KB

Estructura de un Documento WSDL 2.0

Hay un elemento **descripción** como raíz que define el nombre del servicio, declara los **espacios de nombres** y contiene el resto de elementos. Un documento WSDL está compuesto por **cuatro elementos principales**:

Tipos

Define los **tipos de datos** que forman los mensajes que se intercambian clientes y servidores.

Interface

Define las **operaciones** del servicio. Por cada operación se definen los mensajes de **entrada/salida (in/out)**. Tipos de operaciones según los parámetros:

One-way

El cliente envía **entrada** (input) al servidor.

Request-response

El cliente envía **entrada** (input) y el servidor envía **salida** (output).

Solicit-response

El servidor envía **salida** (output) y el cliente envía **entrada** (input).

Notification

El servidor envía **salida** (output).

Binding

Especifica los **protocolos de acceso** al servicio y describe cómo se implementa el servicio.

Servicio

Define la **dirección** donde se invoca el servicio (**endpoint**). Cada **endpoint** hace referencia a un **binding**.

Recursos: Collection vs. Composite

Las **colecciones** agrupan recursos similares basándose en cualquier criterio específico de la aplicación. (Ejemplo: colección de libros en un servicio de reserva de una biblioteca). Una colección no implica **jerarquía**. Un recurso puede ser parte de más de una colección. Permite referirse a grupos de recursos como a un único recurso para realizar **consultas** u **operaciones** sobre varios recursos al mismo tiempo. Permite utilizar la colección como una **fábrica** para crear nuevos recursos.

Los **composites** permiten combinar o agregar múltiples recursos cuyo estado se compone de los estados de dos o más recursos. (Ejemplo: recurso que represente todas las cuentas corrientes, fondos de inversión contratados por un cliente de banca). Reducen la **visibilidad intrínseca** al HTTP que afectará al uso de **proxies caché**.

Métodos HTTP: PUT vs. POST

El método más apropiado para la **creación de recursos** es el **POST**, ya que evita que se construya la **URI** del recurso en el cliente. Los clientes no tienen por qué conocer cómo fabricar URIs; tan solo deben entender el significado de los valores de atributos '**rel**' o de campos de cabecera como '**Location**'. Un **PUT** destinado a la creación de un recurso ha de invocarse en la **URI** del recurso a crear, mientras que el **POST** se invoca sobre un recurso **colección** denominado **fábrica**, sin necesidad de determinar la URI del nuevo recurso. La **URI** asignada al nuevo recurso se conoce a través del contenido de la cabecera '**Location**' en la respuesta.

Gestión del Estado en Servicios Web Axis

Existen **cuatro formas** que corresponden al atributo `scope` del fichero `services.xml`. Este atributo sirve para indicar el número de instancias de la clase **skeleton**.

Aplicación

Una única instancia atiende todas las peticiones.

Petición

Se crea un objeto servidor por cada petición recibida.

Sesión de Transporte

Una instancia atiende los mensajes que pertenecen a la misma sesión según el transporte.

Sesión SOAP

Una instancia atiende los mensajes de una misma sesión SOAP.

Generación de WSDL con Axis2

La herramienta es `java2wsdl.sh`. Los parámetros incluyen la **clase Java** a partir de la cual se generará el fichero WSDL (`-cn`), la **versión de WSDL** (`-wv 1.1/2.0`) que se quiere generar y el **nombre del fichero WSDL** (`-of`).

Entradas relacionadas: