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

2,374 views

Published on

Curso JEE5, Soa, Web Services, ESB y XML

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,374
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
144
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Simple Object Access Protocol » SOAP
  2. 2. .• Í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.
  3. 3. 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.
  4. 4. 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)
  5. 5. 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.
  6. 6. 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
  7. 7. 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
  8. 8. Estructura de mensaje SOAP
  9. 9. Estructura de mensaje• SOAP: Estructura de mensaje
  10. 10. 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.
  11. 11. 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 (Header entities o entidades de cabecera) − La mayoría de las actividades estándar de los web services son básicamente definir entradas de cabecera estándar para un dominio particular
  12. 12. 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
  13. 13. 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)
  14. 14. 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
  15. 15. 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
  16. 16. Estructura de mensaje FAULT• Ejemplo de fallo SOAP : mustUnderstand no puede tratarse<env:Envelope xmlns:env=http://www.w3.org/2001/06/soap-envelope> <env:Header> <abc:Extension1 xmlns:abc=http://example.org/2001/06/ext‘ env:mustUnderstand=1 /> <def:Extension2 xmlns:def=http://example.com/stuff‘ env:mustUnderstand=1 /> </env:Header> <env:Body> ... </env:Body></env:Envelope>
  17. 17. 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>
  18. 18. 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.
  19. 19. Ejemplos• Ejemplo de mensaje de solicitud (request) de un web service 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> .
  20. 20. Ejemplos• Ejemplo de mensaje de solicitud (request) de un web service 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>
  21. 21. 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 + "!"; } }
  22. 22. Rápida introducción a los namespaces
  23. 23. 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.
  24. 24. 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>
  25. 25. 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-encoding" 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.
  26. 26. 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
  27. 27. Terminología utilizada en SOA
  28. 28. 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
  29. 29. 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.
  30. 30. 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)
  31. 31. 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
  32. 32. 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)
  33. 33. 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.
  34. 34. 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.
  35. 35. 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.
  36. 36. Anexo
  37. 37. FINAL

×