Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services....

37
Web Services

Transcript of Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services....

Page 1: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Web Services

Page 2: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Objetivos

• Introducción a conceptos técnicos relacionados con web services.

• Presentación de un ejemplo sobre cómo publicar y consumir un web service.

Page 3: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Contenidos

• SOAP.• WSDL.• JAX-WS.• Ejemplo.

Page 4: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

SOAP

Page 5: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

SOAP

• Simple Object Access Protocol• Es una especificación, no un

producto.• Utiliza XML para describir un

mensaje.• Permite que esta descripción sea

interpretada por distintas plataformas.

Page 6: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Mensajes SOAP

Page 7: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Estructura de un mensaje SOAP

Page 8: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Header

• Es opcional.• Permite incluir información para el

procesamiento del mensaje.• Es un punto de extensibilidad del

modelo.• Los intermediarios pueden

modificarlo.

Page 9: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Body

• Es una estructura XML arbitraria.• Su semántica es relevante al

emisor y al receptor del mensaje.• Deben ponerse de acuerdo en

dicha semántica.• Los intermediarios no deben

modificarlo.

Page 10: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Ejemplo de un mensaje SOAP

<?xml version="1.0"?><soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Bodyxmlns:m="http://www.stock.org/stock">

<m:GetStockPrice><m:StockName>IBM</m:StockName>

</m:GetStockPrice></soap:Body>

</soap:Envelope>

Page 11: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

WSDL

Page 12: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

WSDL

• Web Services Description Language.

• Es un lenguaje implementado con XML.

• Independiente de plataformas y lenguajes.

• Dos tipos de descripciones:– Abstractas: tipos de datos, mensajes,

operaciones.– Concretas: bindings y servicios.

Page 13: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Estructura de un documento WSDL

Page 14: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

types

• Definen tipos de datos utilizados en los mensajes.

• La definición es independiente de plataformas y lenguajes.

• Cada plataforma/lenguaje tiene formas de “mapear” estas definiciones en estructuras propias.

Page 15: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

message

• Define un mensaje de entrada o salida involucrado en una operación.

• Utiliza tipos estándar o definidos con type.

• Puede ser utilizado en más de una operación.

Page 16: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

portType

• Define una agrupación de operaciones.

• El equivalente en Java sería una interfaz.

• Son utilizados para después definir servicios.

Page 17: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

operation

• Describe una operación determinada.

• Indica los mensajes de entrada y/o salida que la componen.

• Se agrupan en tipos de puertos.• El equivalente en Java sería un

método de una interfaz.

Page 18: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

binding

• Especifica una implementación de una operación.

• Indica el estilo (document/rpc) de una operación y el transporte (HTTP/SMTP) utilizado.

Page 19: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

service

• Define un servicio a través de:– Indicar qué operaciones soporta,

relacionándolo con un portType.– Especificar cómo está implementado,

relacionándolo con un binding.– Indicar dónde está publicado,

relacionándolo con una URL.

Page 20: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

JAX-WS

Page 21: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

JAX-WS

• Java API for XML Web Services• Especificación de JEE 5• Ofrece anotaciones y herramientas

para generar Web Services a partir de clases Java

• Soporte para client side y server side

Page 22: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Ventajas

• Implementado dentro de la especificación y el servidor de aplicaciones

• Abstrae la complejidad del manejo de XML mediante anotaciones en código Java

• Asegura la interoperabilidad entre clientes y servicios implementados en otras tecnologías

Page 23: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Desventajas

• Se puede perder control de la infraestructura generada para implementar el servicio:– Documentos WSDL– Bindings– Mapeos XML

Page 24: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Cómo usarlo

• Top-Down– Desarrollar el contrato primero (WSDL) y

partir de éste la implementación

– Mayor control del mensaje de intercambio y de la implementación generada

– Permite asegurar una correcta interoperabilidad con otras implementaciones

– Se recomienda para proyectos grandes y con mucha interoperabilidad

Page 25: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Cómo usarlo

• Bottom-Up– Desarrollar el contrato (WSDL) a partir

de la implementación

– Menor control del mensaje de intercambio y del contrato generado

– La interoperabilidad sólo se asegura con implementaciones similares

– Se recomienda para proyectos departamentales

Page 26: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Cómo funciona

• Web Service Endpoint– Clase o interface anotada con

@WebService– Declara los métodos que un cliente

puede invocar en el servicio mediante llamadas SOAP

– Los métodos publicados del servicio deben estar anotados con @WebMethod (no todos los métodos necesitan ser publicados)

Page 27: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Cómo funciona

• Deployment– El deployment es como cualquier

clase o componente JEE:• El contenedor procesa las anotaciones y

genera los artefactos necesarios

– Se pueden revisar los Web Services publicados en el contenedor:• http://localhost:8080/jbossws/services• Y acceder a cada WSDL en particular

Page 28: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Arquitectura

Page 29: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Herramientas

• wsconsume <WSDL URL>– Genera clases de cliente para invocar

un servicio a partir de un documento WSDL

• Este código se puede ejecutar desde clases de integración entre componentes

Page 30: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Pasos para la creación de Web Services con JAX-WS y JBoss

Page 31: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Ejemplo construcción WS

• Ejemplo a desarrollar: una guía telefónica con los siguientes servicios:

• getNombreGuia(Integer telefono);• setDatos(Integer telefono, Persona

persona);• cambiarTelefono(Integer telefono, Integer

nuevoTelefono);

Page 32: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Ejemplo construcción WS

• Configurar el Jboss (Instalación JAX-WS)– Copiar jars de carpeta endorsed a

JBOSS_HOME/lib/endorsed– Copiar carpeta http-invoker.sar a

JBOSS_HOME/server/default/deploy– Copiar carpeta jboss-bean.deployer a

JBOSS_HOME/server/default/deploy

Page 33: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Pasos construcción WS

Crear un proyecto EjemploWS-Servidor

Construir una interface Java con los servicios a proveer

• Interface GuiaTelefonica.java• Class Persona.java

Construir la implementación• En el ejemplo es un Stateless Session

Bean

Page 34: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Pasos construcción WS

Anotar la implementación para que publique un Web Service Endpoint

• Clase con @WebService– Representa el servicio a publicar

• Métodos con @WebMethod– Representa el/los métodos a proveer

• Desplegar el componente• El contenedor genera todos los artefactos:

– http://127.0.0.1:8080/GuiaTelefonica/GuiaTelefonicaServer?wsdl

Page 35: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Pasos construcción WS

Generar clases cliente con wsconsume

• En el directorio donde se encuentra el codigo cliente

• %jboss%/bin/wsconsume -k http://127.0.0.1:8080/GuiaTelefonica/GuiaTelefonicaServer?wsdl

• Genera varios archivos que se pueden utilizar para hacer una llamada al servicio desde Java

Page 36: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Pasos construcción WS

Llamar al servicio• Utilizando las clases proxy generadas:

– GuiaTelefonicaServerService– GuiaTelefonicaServer

Page 37: Web Services. Objetivos Introducción a conceptos técnicos relacionados con web services. Presentación de un ejemplo sobre cómo publicar y consumir un.

Bibliografía

• SOAP:– http://msdn.microsoft.com/library/default.asp?url=/

library/en-us/dnsoap/html/understandsoap.asp– http://www.w3schools.com/soap/default.asp

• WSDL:– http://www.w3schools.com/wsdl/default.asp– http://msdn.microsoft.com/archive/default.asp?url=/

archive/en-us/dnarxml/html/wsdlexplained.asp• JAX-WS:

– http://java.sun.com/javaee/5/docs/tutorial/doc/bnayl.html• JBoss Web Services:

– http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/4.3.0.cp06/html/Server_Configuration_Guide/Server_Configuration_Guide-Web_Services-Web_Service_Endpoints_.html