SlideShare una empresa de Scribd logo
Simple Object Access Protocol


      » SOAP
.
• Í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.
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.
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)
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.
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
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
Estructura de mensaje SOAP
Estructura de mensaje
• SOAP: Estructura de mensaje
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.
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
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
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)
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
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
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>
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>
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.
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> .
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>
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 + "!";
       }
   }
Rápida introducción a los namespaces
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.
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>
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.
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
Terminología utilizada en SOA
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
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.
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)
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
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)
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.
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.
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.
Anexo
FINAL

Más contenido relacionado

PDF
8/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
PDF
5/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
PPTX
Soap eduardo cano
Alfredo Torres Torregloza
 
PDF
1/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
PPT
SOAP y Web Services
edmodi
 
PDF
Tutorial - REST con java (JAX-RS 2.0)
Abimael Desales López
 
PDF
Servicios web java php-perl-google
Josue Hernandez
 
8/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
5/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
Soap eduardo cano
Alfredo Torres Torregloza
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
SOAP y Web Services
edmodi
 
Tutorial - REST con java (JAX-RS 2.0)
Abimael Desales López
 
Servicios web java php-perl-google
Josue Hernandez
 

La actualidad más candente (20)

PPT
Curso TIC de PHP y MSQL
Wilian
 
PPT
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
juliocasal
 
PDF
Servicios Rest con Jersey
Vortexbird
 
PDF
Web services restful con JAX-RS
Vortexbird
 
PPTX
REST, JERSEY & SOAP
ea2014G3
 
DOCX
Arquitectura Rest
Israel Rey
 
PDF
Servicios web Extendido_error perl
Octavio Izucar Martinez
 
PPTX
Servicios web xml
Ingeniería Nica
 
DOC
Web service
aktivfinger
 
PDF
Integración de aplicaciones Java
Iker Canarias
 
PDF
Tema 3 0
avalver2
 
PDF
Servicios Web Rest con Spring MVC
Vortexbird
 
DOCX
Html,php
softyed
 
PPTX
Arquitectura REST
Héctor Fuente Pérez
 
PDF
Servicios web
Daniel Salgado
 
ODT
Web Services JAX-RS RESTful y SOAP
ismaelmartincolmenarejo
 
DOCX
Servidor web
Andres Luzon
 
PPT
Curso Java Avanzado 2 Servlets
Emilio Aviles Avila
 
PPTX
Introduccion A Php
uts
 
Curso TIC de PHP y MSQL
Wilian
 
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
juliocasal
 
Servicios Rest con Jersey
Vortexbird
 
Web services restful con JAX-RS
Vortexbird
 
REST, JERSEY & SOAP
ea2014G3
 
Arquitectura Rest
Israel Rey
 
Servicios web Extendido_error perl
Octavio Izucar Martinez
 
Servicios web xml
Ingeniería Nica
 
Web service
aktivfinger
 
Integración de aplicaciones Java
Iker Canarias
 
Tema 3 0
avalver2
 
Servicios Web Rest con Spring MVC
Vortexbird
 
Html,php
softyed
 
Arquitectura REST
Héctor Fuente Pérez
 
Servicios web
Daniel Salgado
 
Web Services JAX-RS RESTful y SOAP
ismaelmartincolmenarejo
 
Servidor web
Andres Luzon
 
Curso Java Avanzado 2 Servlets
Emilio Aviles Avila
 
Introduccion A Php
uts
 
Publicidad

Destacado (20)

PDF
Ebe2013: productividad conherramientas en la nube
Juan Carlos Rubio Pineda
 
PPTX
Introduccion Servicios Web
Ricardo Alonso Hurtado Mosquera
 
PDF
4/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
PPTX
SOA y Web Services
Jose Gutierrez
 
PDF
El Proyecto Polymer
Javier Vélez Reyes
 
PPTX
SOAP 5: Cuantificacion de Glicemia
Shawn Tapia
 
PDF
3/9 soa y web services
Juan Carlos Rubio Pineda
 
PDF
Componentes Web y El Framework Polymer
Javier Vélez Reyes
 
PPT
144 Rest Web Services
GeneXus
 
PPTX
Web services
Yesith Valencia
 
PDF
Curso node.js
Redradix
 
PPTX
Curso de javascript y node avanzado
brainybogota
 
PDF
Servidor API REST con Node.js
Adolfo Sanz De Diego
 
PPTX
Introducción a Xamarin
Javier Suárez Ruiz
 
PDF
Taller de Programación Funcional en JavaScript
Javier Vélez Reyes
 
PDF
Principios de Diseño de Componentes Web
Javier Vélez Reyes
 
PDF
Arquitecturas Reactivas de Streams
Javier Vélez Reyes
 
PDF
Programación Asíncrona en Node JS
Javier Vélez Reyes
 
Ebe2013: productividad conherramientas en la nube
Juan Carlos Rubio Pineda
 
Introduccion Servicios Web
Ricardo Alonso Hurtado Mosquera
 
4/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
SOA y Web Services
Jose Gutierrez
 
El Proyecto Polymer
Javier Vélez Reyes
 
SOAP 5: Cuantificacion de Glicemia
Shawn Tapia
 
3/9 soa y web services
Juan Carlos Rubio Pineda
 
Componentes Web y El Framework Polymer
Javier Vélez Reyes
 
144 Rest Web Services
GeneXus
 
Web services
Yesith Valencia
 
Curso node.js
Redradix
 
Curso de javascript y node avanzado
brainybogota
 
Servidor API REST con Node.js
Adolfo Sanz De Diego
 
Introducción a Xamarin
Javier Suárez Ruiz
 
Taller de Programación Funcional en JavaScript
Javier Vélez Reyes
 
Principios de Diseño de Componentes Web
Javier Vélez Reyes
 
Arquitecturas Reactivas de Streams
Javier Vélez Reyes
 
Programación Asíncrona en Node JS
Javier Vélez Reyes
 
Publicidad

Similar a 7/9 Curso JEE5, Soa, Web Services, ESB y XML (20)

PDF
Tema 3 0
avalver2
 
PPTX
SOAP
Yesith Valencia
 
PDF
7 soap y wsdl
brccq
 
PDF
Web services-con-php
Linkser SA.
 
PPT
Ruby y las arquitecturas orientadas a servicios
Joaquín Salvachúa
 
PPTX
02 - Servicios SOAP.pptx
JorgeVargas846804
 
PPTX
Servicios web
Victor Mijangos
 
PPS
Web Services
Henry Astudillo Ramirez
 
PPS
Web Services
Henry Astudillo Ramirez
 
PPT
Servicios web
fermt18
 
PPTX
SEVILLA Meetups29112022_sh.pptx
Francisco Javier Toscano Lopez
 
PPT
Charla Web Services
Jose Selman
 
PPSX
Presentacion ws
Rodrigo Mendez
 
PPT
Servicios Web II.ppt
DiegoRomn20
 
PPTX
S3-PD2-2.1. SOAP
Luis Fernando Aguas Bucheli
 
PDF
Servicios web
Alberto Molina Coballes
 
PPT
Servicios web service api rest en netbeans
vcuscoistt
 
Tema 3 0
avalver2
 
7 soap y wsdl
brccq
 
Web services-con-php
Linkser SA.
 
Ruby y las arquitecturas orientadas a servicios
Joaquín Salvachúa
 
02 - Servicios SOAP.pptx
JorgeVargas846804
 
Servicios web
Victor Mijangos
 
Servicios web
fermt18
 
SEVILLA Meetups29112022_sh.pptx
Francisco Javier Toscano Lopez
 
Charla Web Services
Jose Selman
 
Presentacion ws
Rodrigo Mendez
 
Servicios Web II.ppt
DiegoRomn20
 
S3-PD2-2.1. SOAP
Luis Fernando Aguas Bucheli
 
Servicios web service api rest en netbeans
vcuscoistt
 

Más de Juan Carlos Rubio Pineda (17)

PDF
Anexo seguridad tic-centrorespaldo
Juan Carlos Rubio Pineda
 
PDF
Continuidad de sistemas
Juan Carlos Rubio Pineda
 
PDF
Redes lan2 : instrucción 1/2006 de la Junta de Andalucía
Juan Carlos Rubio Pineda
 
PDF
Redes lan1: cableado (orden 25/9/2007)
Juan Carlos Rubio Pineda
 
PDF
Zentyal curso-ja
Juan Carlos Rubio Pineda
 
PDF
Supercomputación y Cloud computing en CICA. Jornadas Universidad de Huelva
Juan Carlos Rubio Pineda
 
PDF
Seminario metodologías agiles bloque II
Juan Carlos Rubio Pineda
 
PDF
Seminario de metodologías ágiles, bloque I
Juan Carlos Rubio Pineda
 
PDF
6/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
PDF
2/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
PDF
9/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
PDF
Virtualizacion
Juan Carlos Rubio Pineda
 
PDF
Guadalinex con colinux y Tecnología Nomachine NX
Juan Carlos Rubio Pineda
 
PDF
Exportador S I C A C V N 1
Juan Carlos Rubio Pineda
 
PDF
Sistema de colas Condor en CICA
Juan Carlos Rubio Pineda
 
Anexo seguridad tic-centrorespaldo
Juan Carlos Rubio Pineda
 
Continuidad de sistemas
Juan Carlos Rubio Pineda
 
Redes lan2 : instrucción 1/2006 de la Junta de Andalucía
Juan Carlos Rubio Pineda
 
Redes lan1: cableado (orden 25/9/2007)
Juan Carlos Rubio Pineda
 
Zentyal curso-ja
Juan Carlos Rubio Pineda
 
Supercomputación y Cloud computing en CICA. Jornadas Universidad de Huelva
Juan Carlos Rubio Pineda
 
Seminario metodologías agiles bloque II
Juan Carlos Rubio Pineda
 
Seminario de metodologías ágiles, bloque I
Juan Carlos Rubio Pineda
 
6/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
2/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
9/9 Curso JEE5, Soa, Web Services, ESB y XML
Juan Carlos Rubio Pineda
 
Virtualizacion
Juan Carlos Rubio Pineda
 
Guadalinex con colinux y Tecnología Nomachine NX
Juan Carlos Rubio Pineda
 
Exportador S I C A C V N 1
Juan Carlos Rubio Pineda
 
Sistema de colas Condor en CICA
Juan Carlos Rubio Pineda
 

Último (20)

PDF
Conceptos Básicos de programación- Paula Obando
edeppaulaobando
 
PDF
Trabajo Tecnología Diagrama De Pareto.pdf
srsantiagof09
 
PDF
Documentos Básicos De Programación.pdf.
kathedelgadoarredond
 
PPTX
JuarezGonzalez_Maria_M1S3AI6.docs https://docs.google.com/presentation/d/1-
susana0271
 
PDF
Trabajo Tecnología #2 Periodo (2).pdfjdjfjf
ssuser57b6e41
 
PPTX
Actividad integradora 6 Crear un archivo multimedia
susana0271
 
PDF
Conceptos básicos de programación trabajo grupal
darcyrobayo2007
 
PDF
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
PDF
VelezOrtiz_Yadira_M1S3AI6 Presentación digital
Yadira Elizabeth Vélez Ortiz
 
DOCX
Informe de Tecnologia Diagrama de Pareto Juan Martinez, Alexandra Delgado, L...
edepisabellanaranjo
 
PDF
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
PDF
Webinar - Migrating to Ballerina from MuleSoft and Tibco.pdf
Profesia Srl, Lynx Group
 
PDF
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
PDF
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
PDF
0621 LOS MATERIALES Y SUS USOS .2º CICLO_compressed.pdf
AndreaAlegre18
 
PPTX
Telecomunicaciones proyeccion de ventas 2025.pptx
miguelolivarren2
 
PDF
Trabajo grupal segundo periodo Tecnología .pdf
edepemanuelflechas
 
PDF
Trabajo de tecnologia en equipo (1).pdf
jjfch3110
 
PDF
Excel Avanzado ..........................
Alejo857214
 
PDF
Tecnología 2.0 (1).pdf, diagrama de pareto
paulavallejo21
 
Conceptos Básicos de programación- Paula Obando
edeppaulaobando
 
Trabajo Tecnología Diagrama De Pareto.pdf
srsantiagof09
 
Documentos Básicos De Programación.pdf.
kathedelgadoarredond
 
JuarezGonzalez_Maria_M1S3AI6.docs https://docs.google.com/presentation/d/1-
susana0271
 
Trabajo Tecnología #2 Periodo (2).pdfjdjfjf
ssuser57b6e41
 
Actividad integradora 6 Crear un archivo multimedia
susana0271
 
Conceptos básicos de programación trabajo grupal
darcyrobayo2007
 
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
VelezOrtiz_Yadira_M1S3AI6 Presentación digital
Yadira Elizabeth Vélez Ortiz
 
Informe de Tecnologia Diagrama de Pareto Juan Martinez, Alexandra Delgado, L...
edepisabellanaranjo
 
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
Webinar - Migrating to Ballerina from MuleSoft and Tibco.pdf
Profesia Srl, Lynx Group
 
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
0621 LOS MATERIALES Y SUS USOS .2º CICLO_compressed.pdf
AndreaAlegre18
 
Telecomunicaciones proyeccion de ventas 2025.pptx
miguelolivarren2
 
Trabajo grupal segundo periodo Tecnología .pdf
edepemanuelflechas
 
Trabajo de tecnologia en equipo (1).pdf
jjfch3110
 
Excel Avanzado ..........................
Alejo857214
 
Tecnología 2.0 (1).pdf, diagrama de pareto
paulavallejo21
 

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

  • 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
  • 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
  • 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