web services. objetivos introducción a conceptos técnicos relacionados con web services....
TRANSCRIPT
![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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061215/54a31acda9546755778b45d2/html5/thumbnails/37.jpg)
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