37
Simple Object Access Protocol » SOAP

7/9 Curso JEE5, Soa, Web Services, ESB y XML

Embed Size (px)

DESCRIPTION

Curso JEE5, Soa, Web Services, ESB y XML

Citation preview

Page 1: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Simple Object Access Protocol

»SOAP

Page 2: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

.

• Índice− Introducción

− Estructura de mensaje SOAP

− Terminología SOAP

− Intercambio de mensajes SOAP

− Modelo de procesamiento SOAP

− Visión inicial de la API Java para SOAP.

Page 3: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

SOAP: Introducción

¿Qué es SOAP? Definición de la W3C− SOAP es un protocolo ligero diseñado para intercambiar

información estructurada en un entorno descentralizado y distribuido.

− SOAP usa tecnología XML para definir un framework de mensajería extensible proporcionando una estructura de mensaje que puede ser intercambiado sobre una variedad de protocolos subyacentes

− El framework ha sio diseñado para ser independiente de cualquier modelo particular de programación y de implementaciones de semánticas específicas.

Page 4: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

SOAP:Introducción

• ¿Qué es SOAP?− Simple Object Access Protocol (Protocolo simple de acceso a

objetos)

− Procotolo similar a• IIOP para CORBA

• JRMP para RMI

− Se usa XML para codificar datos• Protocolos basados en "texto" versus protocolos basados en datos

"binarios"

− Soporta RPC sobre XML (Remote Procedure Call)

Page 5: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

SOAP:Introducción

• ¿Qué es SOAP− Sin estado

− Paradigma de intercambio de mensajes en un sólo sentido

− Las aplicaciones pueden crear patrones de interacción más complejos (solicitud/respuesta,solicitud/múltiples_respuestas, etc) combinando los intercambios de un sólo sentido con características proporcionadas po protocolos subyacentes y/o información específica de la aplicación.

− Se enfoca en el transporte, no en la semántica de los datos transportados.

Page 6: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

SOAP:Introducción

• ¿Qué no es SOAP?− No es un modelo de componentes

• Por ello, no reemplaza ni a objetos ni a componentes (PEj. EJB, JavaBeans, etc)

− No es un lenguaje de programación• Por ello, no reemplazará a Java

− No es una solución para todo• Por ello, no reemplazará a otras tecnologías de computación distribuida

como RMI

Page 7: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

SOAP:Introducción

• Objetivos de diseño de SOAP− Simplicidad

− Extensibilidad• Los nuevos estándares, definen nuevas semánticas

− Características no soportadas (por definición)• Recolección de basura distribuida

• Objetos por referencia

• Activación

• Procesamiento en lote de mensajes

Page 8: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje SOAP

Page 9: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje

• SOAP: Estructura de mensaje

Page 10: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje

• Sobre de mensaje SOAP ( SOAP Message Envelope)− Información incluída

• Namespaces

• Información de codificado ( Encoding)

− Cabecera ( HEADER)• Opcional

• Puede ser manipulada por intermediarios

− Cuerpo ( body)• Obligatoria

• Manipulado sólo por el receptor final.

Page 11: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje

• SOAP Header (<env:Header>)− Usado como mecanismo de extensión

• Context (contexto)

• Authentication (autenticación)

• Transaction (transacción)

• Management (gestión)

• Muchas otras de alto nivel.

− Hecho de Bloques de cabecera Header blocks (Headerentities o entidades de cabecera)

− La mayoría de las actividades estándar de los web servicesson básicamente definir entradas de cabecera estándar para un dominio particular

Page 12: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje

• Bloques (entradas) de cabecera SOAP− Elementos hijos de una cabecera SOAP

− Diseñados PARA SOAP como anticipación a usos futuros POR intermediarios SOAP.

• Pueden ser dirigidos individualmente a nodos SOAP

• Permiten a los intermediarios SOAP proporcionar servicios de valor añadido.

− Pueden ser inspeccionados, insertados, borrados o reenviados por nodos SOAP encontrados en el camino de un mensaje SOAP

Page 13: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje

• Cuerpo SOAP/SOAP Body(<env:Body>)−Hechos por bloques de cuerpo o body blocks (body

entries)

−Consumidos por receptores SOAP finales

−Transportan la información extremo a extremo, que puede ser:

• Datos de aplicación (documento XML)

• Métodos RPC y parámetros

• Errores SOAP (SOAP Fault)

Page 14: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje FAULT

• Fallo SOAP o SOAP Fault (<env:Fault>)−Usado para transportar información de error o

estado−Tiene los siguientes subelementos:

• faultcode

• faultstring

• faultactor

• detail

Page 15: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje FAULT

• Códigos de fallo de SOAP predefinidos− VersionMismatch

• Namespace inválido en el sobre SOAP

− MustUnderstand• El receptor no puede tratar el bloque de cabecera SOAP

mustUnderstand SOAP.

− Client• Indica error en el lado del cliente

− Server• Indica error en el lado servidor

Page 16: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje FAULT• Ejemplo de fallo SOAP : mustUnderstand no puede tratarse

<env:Envelope xmlns:env='http://www.w3.org/2001/06/s oap-envelope'>

<env:Header>

<abc:Extension1 xmlns:abc='http://example.org/2001/0 6/ext‘ env:mustUnderstand='1' />

<def:Extension2 xmlns:def='http://example.com/stuff‘ env:mustUnderstand='1' />

</env:Header>

<env:Body>

. . .

</env:Body>

</env:Envelope>

Page 17: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje FAULT• Ejemplo de fallo SOAP: respuesta al fallo

mustUnderstand<env:Envelope xmlns:env='http://www.w3.org/2001/06/soap-envelope'

xmlns:f='http://www.w3.org/2001/06/soap-faults' ><env:Header>

<f:Misunderstood qname='abc:Extension1‘ xmlns:abc='http://example.org/2001/06/ext'/><f:Misunderstood qname='def:Extension2‘ xmlns:def='http://example.com/stuff'/>

</env:Header>

<env:Body><env:Fault>

<faultcode>MustUnderstand</faultcode>

<faultstring> One or more mandatory headers not understood</faultstring>

</env:Fault></env:Body>

</env:Envelope>

Page 18: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Estructura de mensaje

• ¿Dónde poner los datos, en el bloque Header o en el bloque body? − Decisión a tomar durante el desarrollo de la aplicación

− Los bloques Header pueden ser dirigidos a varios nodos que podrían encontrarse en el camino desde el remitente hacia el destinatario final.

− Los nodos SOAP intermedios pueden proporcionar servicios de valor añadido basados en los datos de las cabeceras.

Page 19: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Ejemplos

• Ejemplo de mensaje de solicitud (request) de un webservice simple con un método decirHola que responde un “hola”

• SOAP Request<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://hola/">

<soapenv:Body> <ns1:decirHola>

<arg0>le envío hola</arg0> </ns1:decirHola>

</soapenv:Body>

</soapenv:Envelope> .

Page 20: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Ejemplos

• Ejemplo de mensaje de solicitud (request) de un webservice simple con un método decirHola que responde un “hola”

<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://hola/">

<soapenv:Body> <ns1:decirHolaResponse>

<return>Hola hola hola holaaaaaaa hola!</return></ns1:decirHolaResponse>

</soapenv:Body>

</soapenv:Envelope>

Page 21: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Ejemplos• Código fuente del Web Service

@WebService()

public class HolaWS {

@WebMethod

public String decirHola(String s) throws java.rmi.RemoteException {

return "Hola hola hola holaaaaaaa " + s + "!";

}

}

Page 22: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Rápida introducción a los namespaces

Page 23: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Namespaces

• Namespaces XML− Se usan para evitar la colisión de nombres

− Facilitan el agrupado de elementos.• Por ejemplo: las aplicaciones SOAP saben qué elementos pertenecen

a un determinado namespace

− Pueden usarse como esquema de control de versiones

− Sintaxis• Declaración de Namespace

• Elementos y atributos.

Page 24: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Namespaces

• Declaración de namespaces XML− Un prefijo se asocia con una URI

− La asociación se defina como un atributo dentro de un elemento:

xmlns:prefix

− xmlns es la palabra reservada de Namespaces; el prefijo lo define el usuario.

<classes xmlns:XMLclass=“ http://www.brandeis.edu/rseg-0151-g”><XMLclass:syllabus>...</XMLclass:syllabus></ classes>

Page 25: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Namespaces

• Ejemplo de Namespaces SOAP<env:Envelope xmlns :env="http://www.w3.org/2001/06/soap-envelope" >

<env:Body>

<m:GetLastTradePrice env:encodingStyle="http://www.w3.org/2001/06/soap-enco ding"

xmlns :m="http://example.org/2001/06/quotes">

<symbol>DIS</symbol>

</m:GetLastTradePrice>

</env:Body>

</env:Envelope >

• El namespace env (envelope) está definido en SOAP

• El namespace m es un namespace creado por nosotros.

Page 26: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Namespaces

• URI’s de Namespaces SOAP 1.1− Envelope

• http://www.w3.org/2001/06/soap-envelope

• Used for "version mismatch" check

− Serialization• http://www.w3.org/2001/06/soap-encoding

− mustUnderstand fault• http://www.w3.org/2001/06/soap-faults

− Upgrade• http://www.w3.org/2001/06/soap-upgrade

Page 27: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Terminología utilizada en SOA

Page 28: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Terminología• Conceptos del protocolo

− Nodo SOAP− Rol (role) SOAP− Enlazado (binding) SOAP− Característica (feature) SOAP

• Es una extensión del framework de mensajería SOAP:− Confiabilidad− Seguridad− Correlación

− Módulo SOAP• Realización de las características (features) SOAP

− Patrón de intercambio de mensajes SOAP− Aplicación SOAP

Page 29: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Terminología• Nodo SOAP : Es el elemento que procesa la lógica necesaria para transmitir, recibir, procesar y/o

reenviar un mensaje SOAP, cumpliendo el conjunto de convenciones definidas por la recomendación SOAP

• Rol SOAP : Es la función esperada por un receptor SOAP en un mensaje SOAP.

• Binding SOAP : El conjunto formal de reglas para transportar un mensaje SOAP dentro o encima de otro protocolo. Ejemplo de binding SOAP puede incluir transportar un mensaje SOAP dentro de HTTP.

• Característica SOAP (SOAP feature): Es una extensión del framework de mensajería SOAP. Ejemplos de features pueden ser: "reliability" (confiabilidad), "security" (seguridad), "correlation" (correlación), "routing" (enrutado), y "Message Exchange Patterns" -patrones de intercambio de mensajes- (MEPs).

• Módulo SOAP : Un módulo SOAP es una especificación que contiene la sintaxis y semántica combinada de los bloques de cabecera SOAP especificadas cumpliendo las reglas SOAP Module 3.3

• Patrón de intercambio de mensajes SOAP (MEP): Una plantilla para el intercambio de mensajes entre nodos SOAP habilitados mediante uno o más SOAP bindings.

• Aplicación SOAP : Una entidad software que produce, consume o actúa de cualquier modo sobre mensajes SOAP conforme al modelo de proceso SOAP.

Page 30: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Terminología

• Conceptos de encapsulación de datos− Mensaje SOAP (SOAP message)

− Sobre SOAP (SOAP Envelope)

− Cabecera SOAP (SOAP Header)

− Bloque de cabecera SOAP (SOAP Header block)

− Cuerpo SOAP (SOAP Body)

− Fallo SOAP (SOAP Fault)

Page 31: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Terminología• Mensaje SOAP : Es la unidad básica de comunicación entre nodos SOAP

• Sobre SOAP : Es elemento de información más alto de un mensaje SOAP.

• Cabecera SOAP : Un conjunto de cero o más bloques de cabecera SOAP, cada uno de los cuales puede ser dirigido a cualquier destinatario SOAP dentro del camino SOAP.

• Bloque de cabecera SOAP : Un elemento de información que se usa para delimitar datos que constituyen una única unidad computacional lógica dentro de la cabecera SOAP. − El tipo de bloque de cabecera SOAP se identifica por el nombre XML expandido del

elemento de información de bloque de cabecera.

• Cuerpo SOAP : Un conjunto de cero o más elementos de información dirigidos a un destinatario SOAP final en el camino del mensaje SOAP

• Fallo SOAP (SOAP Fault): Un elemento de información SOAP que contiene información de fallo generado por un nodo SOAP

Page 32: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Terminología

• Remitentes y destinatarios de mensajes. Conceptos− SOAP sender (remitente)

− SOAP receiver (destinatario)

− SOAP message path (camino o trayectoria del mensaje)

− initial SOAP sender (remitente SOAP inicial)

− SOAP intermediary

− ultimate SOAP receiver (destinatario final)

Page 33: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Terminología• SOAP sender: Un nodo SOAP que transmite un mensaje SOAP

• SOAP receiver: uno nodo SOAP que acepta un mensaje

• SOAP message path: un conjunto de nodos SOAP a través de los cuales pasa un mensaje SOAP. Incluye el initial SOAP sender, cero o más intermediarios SOAP y el ultimate SOAP receiver.

• Initial SOAP sender: el remitente SOAP que origina el mensaje SOAP en el punto inicial de un SOAP message path.

• SOAP intermediary: Funciona tanto como remitente SOAP y como destinatario SOAP. Procesa los bloques de cabecera SOAP que van dirigidos a él y los reenvía en la dirección del destinatario SOAP final.

• Ultimate SOAP receiver: El SOAP receiver que es el destino final del mensaje SOAP. Es responsable de procesar los contenidos del cuerpo SOAP y cualesquiera de los bloques de cabecera SOAP que ha recibido dirigidos a él.

Page 34: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica

• Ejercicio:− Crear un web service llamado HolaWS, con un método

“decirHola” que devuelva “Hola desde el curso SOA”.

− Hacer un test web service para comprobar el intercambio de mensajes SOAP entre el proveedor del servicio y el consumidor.

Page 35: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Anexo

• Axis incluye un monitor SOAP:− Para ejecutarlo, basta hacer lo siguiente

• Setenv

• java org.apache.axis.utils.tcpmon 9090 localhost 8080

• Esto arrancará una aplicación Java que permanecerás escuchando en el puerto 9090, y que reenviará todas las peticiones al puerto 8080

• Para probar esta aplicación, es necesario que las aplicaciones que sean clientes de nuestros web services, a la hora de ser depuradas u observadas con esta herramienta, deben atacar al servidor al puerto 9090.

Page 36: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

Anexo

Page 37: 7/9 Curso JEE5, Soa, Web Services, ESB y XML

FINAL