WSDL
WSDL
(Web Service Defini/on Language)
Autodescripción del Servicio Web
Servicios Web y Arquitecturas REST Autodescripción del Servicio Web
máster online en
Autodescripción del Servicio Web
• http://www.w3.org/TR/wsdl
online en Dirección e Ingeniería
• Lenguaje para la descripción estándar de un Servicio Web.
de Sitios
• Tecnología XML que estandariza la Web
representación de los parámetros de entrada representación de los parámetros de entrada y de salida que provienen de una invocación externa y permite a los diferentes clientes
externa y permite a los diferentes clientes
entender automáticamente cómo interactuar con el Servicio Web
con el Servicio Web.
• Independencia de Lenguaje y Plataforma.
Coordinador: Dr. Javier Parra Fuente
• h"p://www.w3.org/TR/wsdl
• Lenguaje para la descripción
– estándar de un Servicio Web.
• Tecnología XML que estandariza la
representación de los parámetros de entrada y de salida que provienen de una invocación
externa y permite a los diferentes clientes
entender automá/camente cómo interactuar con el Servicio Web.
• Independencia de Lenguaje y Plataforma.
Estructura de un Documento WSDL (I)
• 8 Elementos:
– <defini/ons>
– <types>
– <message>
– <portType>
– <opera/on>
– <binding>
– <service>
– <port>
Servicios Web y Arquitecturas REST Estructura de un Documento WSDL (I)
máster online en
• 8 Elementos:
Estructura de un Documento WSDL (I)
online en Dirección e Ingeniería – <definitions>
– <types>
de Sitios Web
– <message>
– <portType>
– <operation>
– <binding>
– <service>
– <port>
Coordinador: Dr. Javier Parra Fuente
Estructura de un Documento WSDL (II)
• Los documentos WSDL constan de dos partes:
– Definición de la Interfaz del Servicio:
• Tipos (Types):
Esquemas XML que describen los /pos de datos u/lizados.
• Mensaje (Message):
Descripción del mensaje.
• Tipo del Puerto (portType):
Especificación del conjunto de operaciones
soportadas por un punto final de un Servicio Web.
Estructura de un Documento WSDL (III)
• Definición de la Implementación del Servicio:
– Enlaces (Binding): Especifica como se enlaza una operación con un protocolo (hQp, smtp,...) y un modo de comunicación (transferencia de
documento, RPC,...).
– Servicio (Service): Representa a la localización exacta de un Servicio Web para poder ser
accedido.
Documento WSDL -‐ Servicio Web
Servicios Web y Arquitecturas REST Documento WSDL - Servicio Web
máster online en
public class HolaPersona
{ bli St i h l (P )
HolaPersona.java
Documento WSDL Servicio Web
online en Dirección e Ingeniería
public String hola(Persona p)
{ return "Hola "+p.getNombre()+" "+p.getApellidos()+
" empleado de "+p.getEmpresa()+", Bienvenido a Axis!!!";
} de Sitios
Web
} }
public class Persona Persona.java
public class Persona
{ private String nombre;
private String apellidos;
private String empresa;
p g p ;
public String getNombre() { return nombre; } public void setNombre(String n) { nombre=n; } public String getApellidos() { return apellidos; } public void setApellidos(String a) { apellidos=a; } public String getEmpresa() { return empresa; } public void setEmpresa(String e) { empresa=e; } }
Coordinador: Dr. Javier Parra Fuente
}
Documento WSDL -‐ <defini/ons>
• Contenedor de la descripción del servicio.
• Contendrá las declaraciones globales de espacios de nombres empleados en el documento.
Servicios Web y Arquitecturas REST Documento WSDL - <definitions>
máster online en
• Contenedor de la descripción del servicio.
C t d á l d l i l b l d
Documento WSDL definitions
online en Dirección e Ingeniería
• Contendrá las declaraciones globales de espacios de nombres empleados en el
documento de Sitios
<definitions> Web
documento.
<!– Declaración types-->
<!– Declaración message-->
<!– Declaración portType-->
<!– Declaración binding-->
! D l ió i
<!– Declaración service-->
</definitions>
Coordinador: Dr. Javier Parra Fuente
7
Documento WSDL -‐ <types>
• Contendrá las declaraciones globales de espacios de nombres empleados en el documento.
Servicios Web y Arquitecturas REST Documento WSDL - <types>
máster online en
Documento WSDL types
• Contiene la declaración de los tipos de datos
tili á l l t online en
Dirección e Ingeniería
<t >
que se utilizarán en los elementos <message>.
de Sitios Web
<types>
<complexType name="Persona">
<sequence>
<element name="nombre“ type=“string" />
<element name nombre type string />
<element name="apellidos“ type=“string" />
<element name="empresa“ type=“string" />
</sequence>
</complexType>
</schema>
</types>
Coordinador: Dr. Javier Parra Fuente
Documento WSDL -‐ <message>
• Modela los datos que se intercambiarán en las pe/ciones y respuestas de los Servicios Web.
• Con/ene uno o más subelementos de /po
<part> que iden/fican a los datos individuales y sus /pos, que forman parte del mensaje de datos.
Servicios Web y Arquitecturas REST Documento WSDL - <message>
máster online en
Documento WSDL message
• Modela los datos que se intercambiarán en las
ti i t d l S i i W b online en
Dirección e Ingeniería
peticiones y respuestas de los Servicios Web.
• Contiene uno o más subelementos de tipo
de Sitios
<part> que identifican a los datos individuales y Web
sus tipos, que forman parte del mensaje de
"h l R "
<message name="holaRequest">
datos.
g q
<part name="p" type=“Persona" />
</message>
<message name="holaResponse"> g p
<part name="holaReturn" type=“string" />
</message>
Coordinador: Dr. Javier Parra Fuente
Documento WSDL -‐ <portType>
• Especifica un conjunto de operaciones
soportadas por un punto final de un Servicio Web.
• Con/ene sub-‐elementos de /po <opera/on> que representa a las operaciones (como la
declaración de métodos en una clase).
• Dentro de la operación se definen parámetros de entrada <input> o salida <output>, que son
mensajes previamente definidos con la e/queta
<message>.
Servicios Web y Arquitecturas REST Documento WSDL - <portType>
máster online en
Documento WSDL portType
• Especifica un conjunto de operaciones soportadas
por un punto final de un Servicio Web. online en
Dirección e Ingeniería
por un punto final de un Servicio Web.
• Contiene subelementos de tipo <operation> que representa a las operaciones (como la declaración
d ét d l ) de Sitios
Web
de métodos en una clase).
• Dentro de la operación se definen parámetros de entrada <input> o salida <output> que son
entrada <input> o salida <output>, que son
mensajes previamente definidos con la etiqueta
<message>.
<portType name="HolaPersona">
<operation name="hola" parameterOrder="p">
<input message=“holaRequest" name="holaRequest" />
<input message= holaRequest name= holaRequest />
<output message=“holaResponse" name="holaResponse" />
</operation>
/ tT
Coordinador: Dr. Javier Parra Fuente
</portType>
Documento WSDL -‐ <portType>
Servicios Web y Arquitecturas REST Documento WSDL - <portType>
máster online en
Cliente SOAP Servidor SOAP
Documento WSDL portType
online en Dirección e Ingeniería
• Mensajes en un sentido Mensaje SOAP
de Sitios
• Petición/Respuesta Mensaje Respuesta SOAP Web
Mensaje Petición SOAP
• Petición/N*Respuesta Mensaje Petición SOAP Mensaje Respuesta SOAP...
Mensaje Respuesta SOAP
• Notificación Mensaje SOAP
• Solicitud respuesta Mensaje Respuesta SOAP Mensaje SOAP
Coordinador: Dr. Javier Parra Fuente
• Mensajes en un sen/do
• Pe/ción/Respuesta
• Pe/ción/N*Respuesta
• No/ficación
• Solicitud respuesta
Documento WSDL -‐ <binding>
• El elemento <binding> especifica un protocolo (HTTP, SOAP, MIME o uno nuevo) y un
formato de datos concreto para un elemento
<portType>.
• Cada elemento <binding> /ene subelementos de /po <opera/on> que indica si los mensajes van en la cabecera, en el cuerpo, como dato adjunto, ..., que están codificados, etc.
Documento WSDL -‐ <binding>
Servicios Web y Arquitecturas REST Documento WSDL - <binding>
máster online en
Documento WSDL binding
<binding name="HolaPersonaSoapBinding" type=“HolaPersona">
<binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> online en Dirección e Ingeniería
binding style rpc transport http://schemas.xmlsoap.org/soap/http /
<operation name="hola">
<operation soapAction="" />
<input name="holaRequest">
de Sitios Web
p q
<body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/” />
</input>
<output name="holaResponse"> p p
<body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
</binding>
Coordinador: Dr. Javier Parra Fuente
Documento WSDL -‐ <service>
• Iden/fica a un Servicio Web concreto.
• Con/ene uno o más subelementos <port> que representan a un punto final.
Servicios Web y Arquitecturas REST Documento WSDL - <service>
máster online en
Documento WSDL service
• Identifica a un Servicio Web concreto.
online en Dirección e Ingeniería
• Contiene uno o más subelementos <port> que representan a un punto final.
de Sitios
<service name="HolaPersonaService"> Web
<port binding=“HolaPersonaSoapBinding" name="HolaPersona">
<address location="http://127.0.0.1:8080/services/HolaPersona"/>
</port>
</port>
</service>
Coordinador: Dr. Javier Parra Fuente
Prac/ca 2
1. Ponga en funcionamiento la prác/ca que se presenta a con/nuación.
2. Posteriormente, cree su propio servicio web y genere automá/camente su documento wsdl.
3. Localice un servicio web de xmethods.org y cree un cliente a par/r de su documento wsdl y
ejecútelo.
4. Por úl/mo, haga un manual de los pasos que ha ido realizando y resultados en los apartados 2 y 3 (incluya pantallazo de cada paso). Deberá
enviar este manual.
Prác/ca 2 – Netbeans
• Herramienta:
– Netbeans:
– h"p://www.netbeans.org/
Prác/ca 2 – Pasos
1. Generar WSDL de un Servicio Web
2. Consulta de Servicios Web en Internet 3. Crear un cliente a par/r del WSDL
Prác/ca 2.1 -‐ Generar WSDL
• U/lizar el proyecto creado en la prác/ca1 (ver prác/ca 1.1 y 1.2)
Servicios Web y Arquitecturas REST Práctica 2.1 - Generar WSDL
máster online en
• Utilizar el proyecto creado en la práctica 1 (ver á ti 1 1 1 2)
Práctica 2.1 Generar WSDL
online en Dirección e Ingeniería
práctica 1.1 y 1.2)
de Sitios Web
1
2
Coordinador: Dr. Javier Parra Fuente
Servicios Web y Arquitecturas REST Práctica 2.1 - Generar WSDL
máster online en
• Utilizar el proyecto creado en la práctica 1 (ver á ti 1 1 1 2)
Práctica 2.1 Generar WSDL
online en Dirección e Ingeniería
práctica 1.1 y 1.2)
de Sitios Web
1
2
Coordinador: Dr. Javier Parra Fuente
<?xml version="1.0" encoding="UTF-‐8" standalone="yes"?>
<!-‐-‐ Generated by JAX-‐WS RI at hQp://jax-‐ws.dev.java.net. RI's version is Metro/2.2.0-‐1 (tags/
2.2.0u1-‐7139; 2012-‐06-‐02T10:55:19+0000) JAXWS-‐RI/2.2.6-‐2 JAXWS/2.2 svn-‐revision#unknown. -‐-‐>
<defini/ons targetNamespace="hQp://serviciosWeb/" name="HolaWS" xmlns="hQp://
schemas.xmlsoap.org/wsdl/" xmlns:wsp="hQp://www.w3.org/ns/ws-‐policy" xmlns:tns="hQp://
serviciosWeb/" xmlns:xsd="hQp://www.w3.org/2001/XMLSchema" xmlns:wsp1_2="hQp://
schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="hQp://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsam="hQp://www.w3.org/2007/05/addressing/metadata" xmlns:wsu="hQp://docs.oasis-‐
open.org/wss/2004/01/oasis-‐200401-‐wss-‐wssecurity-‐u/lity-‐1.0.xsd">
<types>
<xsd:schema>
<xsd:import namespace="hQp://serviciosWeb/" schemaLoca/on="HolaWS_schema1.xsd"/>
</xsd:schema>
</types>
<message name="hello">
<part name="parameters" element="tns:hello"/>
</message>
<message name="helloResponse">
<part name="parameters" element="tns:helloResponse"/>
</message>
<message name="hola">
<part name="parameters" element="tns:hola"/>
</message>
<message name="holaResponse">
<part name="parameters" element="tns:holaResponse"/>
</message>
<portType name="HolaWS">
<opera/on name="hello">
<input wsam:Ac/on="hQp://serviciosWeb/HolaWS/helloRequest" message="tns:hello"/>
<output wsam:Ac/on="hQp://serviciosWeb/HolaWS/helloResponse" message="tns:helloResponse"/>
</opera/on>
<opera/on name="hola">
<input wsam:Ac/on="hQp://serviciosWeb/HolaWS/holaRequest" message="tns:hola"/>
<output wsam:Ac/on="hQp://serviciosWeb/HolaWS/holaResponse" message="tns:holaResponse"/>
</opera/on>
</portType>
<binding name="HolaWSPortBinding" type="tns:HolaWS">
<soap:binding transport="hQp://schemas.xmlsoap.org/soap/hQp" style="document"/>
<opera/on name="hello">
<soap:opera/on soapAc/on=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</opera/on>
<opera/on name="hola">
<soap:opera/on soapAc/on=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</opera/on>
</binding>
<service name="HolaWS">
<port name="HolaWSPort" binding="tns:HolaWSPortBinding">
<soap:address loca/on="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</defini/ons>
Prác/ca 2.2 – Consultar Servicios Web en Internet (I)
hQp://www.webservicex.net/ws/default.aspx
Prác/ca 2.2 – Consultar Servicios Web
en Internet (I)
Prác/ca 2.2 – Consultar Servicios Web
en Internet (I)
Prác/ca 2.2 – Consultar Servicios Web
en Internet (I)
Prác/ca 2.2 – Consultar Servicios Web en Internet (I)
hQp://www.soapclient.com/soaptest.html
Prác/ca 2.2 – Consultar Servicios Web
en Internet (I)
Prác/ca 2.2 – Consultar Servicios Web
en Internet (I)
Prác/ca 2.2 – Consultar Servicios Web en Internet (II)
Servicios Web y Arquitecturas REST
Práctica 2.2 – Consultar Servicios Web en Internet
máster online en
Práctica 2.2 Consultar Servicios Web en Internet
http://www.xmethods.org
online en Dirección e Ingeniería de Sitios Web
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.2 – Consultar Servicios Web en Internet (II)
Servicios Web y Arquitecturas REST
Práctica 2.2 – Consultar Servicios Web en Internet
máster online en
Práctica 2.2 Consultar Servicios Web en Internet
http://www.soapclient.com/soaptest.html
online en Dirección e Ingeniería de Sitios Web
url del wsdl: http://footballpool.dataaccess.eu/data/info.wso?WSDL
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.2 – Consultar Servicios Web en Internet (II)
Servicios Web y Arquitecturas REST
Práctica 2.2 – Consultar Servicios Web en Internet
máster online en
Práctica 2.2 Consultar Servicios Web en Internet
online en Dirección e Ingeniería de Sitios Web
Spain
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.2 – Consultar Servicios Web en Internet (III)
hQp://www.service-‐repository.com/
Prác/ca 2.2 – Consultar Servicios Web en Internet (III)
hQp://www.service-‐repository.com/service/overview/1678738392
Prác/ca 2.2 – Consultar Servicios Web en Internet (III)
hQp://peopleask.ooz.ie/soap.wsdl
Prác/ca 2.2 – Consultar Servicios Web
en Internet (III)
Prác/ca 2.2 – Consultar Servicios Web
en Internet (III)
Prác/ca 2.3 – Crear Cliente a par/r del WSDL
• Previo: crear un proyecto web (verprác/ca1.1)
• Crear un cliente del servicio web
Servicios Web y Arquitecturas REST
Práctica 2.3 – Crear Cliente a partir del WSDL
máster online en
Práctica 2.3 Crear Cliente a partir del WSDL
• Previo: crear un proyecto web (ver práctica 1.1)
online en Dirección e Ingeniería
• Crear un cliente del servicio web
de Sitios Web
l d l dl htt //f tb ll l d t /d t /i f ?WSDL url del wsdl: http://footballpool.dataaccess.eu/data/info.wso?WSDL
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.3 – Crear Cliente a par/r del WSDL
• Generación automá/ca de las clases necesarias para llamar al servicio web
Prác/ca 2.3 – Crear Cliente a par/r del WSDL
Servicios Web y Arquitecturas REST
Práctica 2.3 – Crear Cliente a partir del WSDL
máster online en
Práctica 2.3 Crear Cliente a partir del WSDL
• Crear el cliente en el código fuente
online en Dirección e Ingeniería de Sitios
1 Web3
1
4
2
Coordinador: Dr. Javier Parra Fuente
Servicios Web y Arquitecturas REST
Práctica 2.3 – Crear Cliente a partir del WSDL
máster online en
Práctica 2.3 Crear Cliente a partir del WSDL
• Crear el cliente en el código fuente
online en Dirección e Ingeniería de Sitios Web
1 3
1
4
2
Coordinador: Dr. Javier Parra Fuente
Servicios Web y Arquitecturas REST
Práctica 2.3 – Crear Cliente a partir del WSDL
máster online en
Práctica 2.3 Crear Cliente a partir del WSDL
• Crear el cliente en el código fuente
online en Dirección e Ingeniería de Sitios Web
1 3
1
4
2
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.3 – Crear Cliente a par/r del WSDL
<%@page contentType="text/html" pageEncoding="UTF-‐8"%>
<!DOCTYPE html>
<html>
<head>
<meta hQp-‐equiv="Content-‐Type" content="text/html; charset=UTF-‐8">
</tle>JSP Page<//tle>
</head>
<body>
<h1>Información de la URL</h1>
<%-‐-‐ start web service invoca/on -‐-‐%><hr/>
<%
try {
net.webservicex.Whois service = new net.webservicex.Whois();
net.webservicex.WhoisSoap port = service.getWhoisSoap();
// TODO ini/alize WS opera/on arguments here java.lang.String hostName = "udistrital.edu.co";
// TODO process result here
java.lang.String result = port.getWhoIS(hostName);
out.println("Result = "+result);
} catch (Excep/on ex) {
// TODO handle custom excep/ons here }
%>
<%-‐-‐ end web service invoca/on -‐-‐%><hr/>
</body>
</html>
Prác/ca 2.3 – Crear Cliente a par/r del WSDL
• Ejecución del proyecto
Prác/ca 2.3 – Crear Cliente a par/r del WSDL
• Ejecución del proyecto
Prác/ca 2.3 – Crear Cliente a par/r del WSDL (II)
Servicios Web y Arquitecturas REST
Práctica 2.3 – Crear Cliente a partir del WSDL
máster online en
Práctica 2.3 Crear Cliente a partir del WSDL
• Previo: crear un proyecto web (ver práctica 1.1)
online en Dirección e Ingeniería
• Crear un cliente del servicio web
de Sitios Web
l d l dl htt //f tb ll l d t /d t /i f ?WSDL url del wsdl: http://footballpool.dataaccess.eu/data/info.wso?WSDL
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.3 – Crear Cliente a par/r del WSDL (II)
Servicios Web y Arquitecturas REST
Práctica 2.3 – Crear Cliente a partir del WSDL
máster online en
Práctica 2.3 Crear Cliente a partir del WSDL
• Generación automática de las clases necesarias
ll l i i b online en
Dirección e Ingeniería
para llamar al servicio web
de Sitios Web
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.3 – Crear Cliente a par/r del WSDL (II)
Servicios Web y Arquitecturas REST
Práctica 2.3 – Crear Cliente a partir del WSDL
máster online en
Práctica 2.3 Crear Cliente a partir del WSDL
• Crear el cliente en el código fuente
online en Dirección e Ingeniería de Sitios
1 Web3
1
4
2
Coordinador: Dr. Javier Parra Fuente
Prác/ca 2.3 – Crear Cliente a par/r del WSDL (II)
Añade el Código Automá/camente
<%
try {
eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();
eu.dataaccess.footballpool.InfoSoapType port = service.getInfoSoap();
// TODO ini/alize WS opera/on arguments here java.lang.String sCountryName = "";
// TODO process result here
eu.dataaccess.footballpool.ArrayOfString result = port.allDefenders(sCountryName);
out.println("Result = "+result);
} catch (Excep/on ex) {
// TODO handle custom excep/ons here }
%>
Prác/ca 2.3 – Crear Cliente a par/r del WSDL (II)
Modificar el Código Generado
<%@page import="java.u/l.List"%>
<%
try {
eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();
eu.dataaccess.footballpool.InfoSoapType port = service.getInfoSoap();
// TODO ini/alize WS opera/on arguments here java.lang.String sCountryName = "Spain";
// TODO process result here
eu.dataaccess.footballpool.ArrayOfString result = port.allDefenders(sCountryName);
List <String> lista = result.getString();
for (String jugador : lista) {
out.println("Nombre: " + jugador + "<br>");
}
} catch (Excep/on ex) {
// TODO handle custom excep/ons here }
%>
Prác/ca 2.3 – Crear Cliente a par/r del WSDL (II)