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`).