Your SlideShare is downloading. ×
7/9 Curso JEE5, Soa, Web Services, ESB y XML
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,884
views

Published on

Curso JEE5, Soa, Web Services, ESB y XML

Curso JEE5, Soa, Web Services, ESB y XML

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,884
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
119
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Simple Object Access Protocol » SOAP
  • 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. 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. 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. 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. 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. 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. Estructura de mensaje SOAP
  • 9. Estructura de mensaje• SOAP: Estructura de mensaje
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Rápida introducción a los namespaces
  • 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. 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. 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. 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. Terminología utilizada en SOA
  • 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. 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. 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. 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. 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. 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. 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. 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. Anexo
  • 37. FINAL

×