objetivos - quegrande.orgquegrande.org/apuntes/ei/opt/adoo/teoria/11-12/teoria_adoo_2011... · ......

144
ó Diseño e I mplementación con T ecnologías de I ntegración de Aplicaciones Carlos Alberto Pan Bermúdez Carlos Alberto Pan Bermúdez J osé Losada Pérez Objetivos Conocer el problema de la integración de aplicaciones Conocer estándares, tecnologías y técnicas de diseño para la integración de aplicaciones heterogéneas para la integración de aplicaciones heterogéneas Conocer los principios básicos de la integración de Conocer los principios básicos de la integración de datos distribuidos Orientación de la asignatura: práctica Temario Tema 1. I ntroducción a las tecnologías de integración de aplicaciones Tema 2 Int od cción a XML Tema 2. Introducción a XML 2.1 El lenguaje XML 2.2 Parsing de documentos XML Tema 3 I ntegración de aplicaciones heterogéneas con Servicios Tema 3. I ntegración de aplicaciones heterogéneas con Servicios Web 3.1 I ntroducción a los Servicios Web 3 2 Arquitectura REST 3.2 Arquitectura REST 3.3 Caso de estudio: diseño e implementación de un servicio/cliente REST 3.4 J AX-WS 3.5 Caso de estudio: diseño e implementación de un servicio/cliente SOAP con J AX-WS 3.6 Servicios Web RESTful ñ ó Tema 4. Diseño de flujos inter-aplicación 4.1 I ntroducción a los sistemas EAI y ESB 4.2 Orquestación de servicios Web d ó l ó d d d b d Tema 5. I ntroducción a la integración de datos distribuidos Laboratorio Una práctica de integración de servicios Grupos de 2 personas Grupos de 2 personas Desarrollo iterativo Primera iteración Primera iteración I mplementación de la parte inicial Entrega: Mayo Objetivo de la corrección: detectar errores de enfoque y orientar sobre cómo resolverlos Segunda iteración Segunda iteración Corrección de errores e implementación del resto de la funcionalidad Entrega: J unio/J ulio Entrega: J unio/J ulio Objetivo de la corrección: determinar la nota de la práctica Ambas iteraciones son obligatorias

Upload: lamque

Post on 13-May-2018

230 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

óDiseño e Implementación con Tecnologías de Integración de g g

Aplicaciones

Carlos Alberto Pan BermúdezCarlos Alberto Pan BermúdezJ osé Losada Pérez

Objetivos

� Conocer el problema de la integración de aplicaciones

� Conocer estándares, tecnologías y técnicas de diseñopara la integración de aplicaciones heterogéneaspara la integración de aplicaciones heterogéneas

� Conocer los principios básicos de la integración de� Conocer los principios básicos de la integración dedatos distribuidos

� Orientación de la asignatura: práctica

Temario� Tema 1. Introducción a las tecnologías de integración de

aplicacionesTema 2 Int od cción a XML� Tema 2. Introducción a XML� 2.1 El lenguaje XML� 2.2 Parsing de documentos XML

Tema 3 Integración de aplicaciones heterogéneas con Servicios� Tema 3. Integración de aplicaciones heterogéneas con ServiciosWeb� 3.1 Introducción a los Servicios Web� 3 2 Arquitectura REST� 3.2 Arquitectura REST� 3.3 Caso de estudio: diseño e implementación de un

servicio/cliente REST� 3.4 J AX-WS� 3.5 Caso de estudio: diseño e implementación de un

servicio/cliente SOAP con J AX-WS� 3.6 Servicios Web RESTful

ñ ó� Tema 4. Diseño de flujos inter-aplicación� 4.1 Introducción a los sistemas EAI y ESB� 4.2 Orquestación de servicios Web

d ó l ó d d d b d� Tema 5. Introducción a la integración de datos distribuidos

Laboratorio

� Una práctica de integración de serviciosGrupos de 2 personas� Grupos de 2 personas

� Desarrollo iterativoPrimera iteración� Primera iteración

� Implementación de la parte inicial� Entrega: Mayo� Objetivo de la corrección: detectar errores de enfoque y

orientar sobre cómo resolverlos

� Segunda iteración� Segunda iteración� Corrección de errores e implementación del resto de la

funcionalidadEntrega: J unio/J ulio� Entrega: J unio/J ulio

� Objetivo de la corrección: determinar la nota de la práctica

� Ambas iteraciones son obligatorias

Page 2: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Evaluación

� Laboratorio� Nota mínima: 5� Nota mínima: 5

� Examen tipo test� Objetivo: comprobar que se ha hecho la práctica y que los� Objetivo: comprobar que se ha hecho la práctica y que los

conceptos se han asimilado correctamente� Nota mínima: 4

� En principio, la nota final es la de la práctica (si en el examen se supera la nota mínima)

L t d l d bi b j l t fi l� La nota del examen puede subir o bajar la nota final� Si en el examen se saca entre un 4 y un 5, la nota final

máxima es un 5

� Se conservan notas (de prácticas y exámenes) hasta la convocatoria de Diciembre

Material de clase

� Página Web en Moodle� Transparencias� Transparencias.� En breve:

� Código con los ejemplos.� Enlaces (en Internet) al software usado en el laboratorio.

Bibliografía recomendada

� E. R. Harold, W. S. Means, XML in a Nutshell: A Desktop Quick Reference Third editionDesktop Quick Reference, Third edition, O’Reilly, 2004

� B. McLaughlin, Java and XML, Third Edition,� B. McLaughlin, Java and XML, Third Edition,O’Reilly, 2006

� Martin Kalin, Java Web Services: Up and , pRunning. O’Reilly, 2009

� J . McGovern, S. Tyagi, M. E. Stevens, S. Mathew, Java Web Services Architecture, Morgan Kaufmann, 2003

d i h d S b S f l b� Leonard Richardson, Sam Ruby. RESTful WebServices, O’Reilly Media, 2007

Bibliografía complementaria

� E. Gamma, R. Helm, R. J ohnson, J . Vlissides, Design Patterns: Elements of Reusable Object-OrientedPatterns: Elements of Reusable Object OrientedSoftware, Addisson-Wesley, 1994

� K. Arnold, J . Gosling, D. Holmes, The J ava� K. Arnold, J . Gosling, D. Holmes, The J avaProgramming Language, 4th edition, Addison-Wesley, 2005

� G. Booch, I . J acobson, J . Rumbaugh, Unified Modeling Language User Guide, 2nd edition, Addison-W l 2005Wesley, 2005

Page 3: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Recursos en Internet (1)� Información general sobre XML y Servicios Web

� http://www.xml.org� http://www.webservices.org

� Estándares XML y Servicios Web� http://www.w3c.org (generales)� http:// java.sun.com/webservices (J ava)

E tá d BPEL fl j i t li ió� Estándares BPEL para flujos inter-aplicación:� http://www.oasis-

open.org/committees/tc home.php?wg abbrev=wsbpel ope o g/co ttees/tc_ o e p p g_abb e sbpe(WS-BPEL 2.0)

� http://www-128 ibm com/developerworks/library/specification/ws bpel128.ibm.com/developerworks/ library/specification/ws-bpel(BPEL4WS 1.1)

Recursos en Internet (y 2)

� Principales paquetes J ava que usaremos para invocar e implementar Servicios Webe implementar Servicios Web� J DOM

� http://www.jdom.org

� J akarta Commons HttpClient� http:// jakarta.apache.org/commons/httpclient

Tomcat� Tomcat� http://tomcat.apache.org

� Google Web Toolkit (GWT)g ( )� http://code.google.com/webtoolkit

� J ava Web Serviceshttp // j n om/ eb e i e /� http:// java.sun.com/webservices/

Tema 1: Introducción a las tecnologías de integración de aplicacionesde integración de aplicaciones

Índice

� IntroducciónIntegración de Aplicaciones� Integración de Aplicaciones

� Arquitectura de referencia� Capa de Integración de Plataforma� Capa de Integración de Plataforma� Capa de Acceso e Integración de Datos� Capa de Procesos de NegocioCapa de Procesos de Negocio

� Estructura de la asignatura� Tecnologías de Integración de Plataforma� Tecnologías de Integración de Plataforma

� Historia: RPC, CORBA, J AVA RMI , DCOM,…� Servicios Web

� SOAP� El enfoque REST

Page 4: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Introducción (1)

� Integración de aplicaciones � Hoy en día construir nuevas aplicaciones a menudo� Hoy en día, construir nuevas aplicaciones a menudo

involucra hacer colaborar entre sí a aplicaciones distribuidas, heterogéneas y posiblemente autónomas.

ó� Distribución: las diferentes aplicaciones pueden ejecutarse en máquinas conectadas a través de una red:

� LAN� Internet

� Autonomía: El sistema de integración no puede esperar que la aplicación cambie su forma de actuar para facilitar lala aplicación cambie su forma de actuar para facilitar laintegración

� Aplicaciones heredadas � Aplicaciones de otros departamentos� Aplicaciones de otras empresas (B2B)

I ntroducción (2)

� Heterogeneidad� Máquinas: mainframes servidores (Sun IBM HP etc )� Máquinas: mainframes, servidores (Sun, IBM, HP, etc.),

estaciones de trabajo (Compatibles PC, Apple Macintosh, Sun, IBM, HP, etc.)

� Sistemas operativos: Solaris, HP-UX, AIX, Linux, MacOS, MS-Windows (9x, NT, 2000, XP), etc.

� Aplicaciones en distintos lenguajes: J ava, C++, Visual Basic,Aplicaciones en distintos lenguajes: J ava, C++, Visual Basic,Visual C++, Delphi, COBOL, etc.

� Distintas arquitecturas de datos: ficheros, bases de datos de distintos modelos y fabricantes sitios webdistintos modelos y fabricantes, sitios web,…

� Distintos esquemas y formatos de datos. Ejemplo:� App A: DIRECCION=“C\ Alcala, 32, 28080 Madrid”.pp� App B: CALLE=“Calle Alcalá” NUM=“32”, CP=“28080”,

CIUDAD=“Madrid”.

I ntroducción (y 3)

� Heterogeneidad: Razones� Decisiones de ingeniería� Decisiones de ingeniería

� Diferentes personas eligen diferentes soluciones a un mismo problema

d� Razones de coste� Se compra el tipo de software/hardware que cumpla los

requisitos y tenga un precio razonable

� Evolución tecnológica: Aplicaciones antiguas� No es posible desecharlas y rehacerlas con las tecnologías más

modernasmodernas� Es preciso seguir utilizándolas hasta amortizar su coste de

desarrollo y obtener beneficio

Arquitectura de Referencia

App1 App2 App3 App4Aplicacionesfinales de usuariousuario

Gobernanza

Seguridad

Componentes reusables de Lógica de negocio: JEE/ .NET/ ESB / EAI

Capa de Acceso e Integración de DatosGestión

Integración de PlataformaIntegración de Plataforma

SRMCRM ERPWeb

Documentos

Ficheros

Web Services

AplicacionesProveedoras de

Servicios

Page 5: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Arquitectura de referencia (2)� Aplicaciones proveedoras de servicios:

� Gestión de clientes (CRM), Gestión de recursos (ERP), Gestión de proveedores (SRM), Facturación, Almacén,…

� Aplicaciones externas: socios, proveedores, clientes, cloud.

I t ió d Pl t f� Integración de Plataforma� Comunicación entre aplicaciones independientemente de

localización, hardware, SO y lenguaje de programación.localización, hardware, SO y lenguaje de programación.� Tecnología dominante: Servicios Web.

Arquitectura de referencia (3)� Capa de Acceso e Integración de Datos

� Punto único de acceso a datos. Generalización del patrón DAO (Data Access Object)DAO (Data Access Object).

� Ofrece API única de acceso a datos, independiente de arquitectura de almacenamiento.

� Proporciona componentes de acceso a datos reusables. Ejemplo:

� Obtener los datos de un cliente junto con sus incidencias� Obtener los datos de un cliente junto con sus incidenciasgraves abiertas y nuestro nivel de facturación con él.

� Independencia Física y Lógica. Si hay cambios en la localización/esquemas de las fuentes de datos sólo hay quelocalización/esquemas de las fuentes de datos, sólo hay quetocar esta capa, no las aplicaciones. Ejemplos

� Una fuente cambia su esquema de datos.� Una fuente (e.g. Mainframe) es sustituida por otra.� Los datos que antes venían de una fuente ahora vienen de dos

(fusiones).( )� Los datos que antes venían de dos fuentes ahora vienen de

una (reingeniería).

Arquitectura de referencia (4)C d A I t ió d D t ( t)� Capa de Acceso e Integración de Datos (cont)� Gobernanza. Punto único para:

Definir políticas de acceso a datos: permisos� Definir políticas de acceso a datos: permisos. � Determinar el impacto de cambios.� Monitorizar el acceso a fuentes de datos: e.g. Limitar g

accesos concurrentes, detectar errores...� ...

S ft d t t d i� Software de soporte a esta capa puede incorporar:� Maneras declarativas de crear combinaciones de datos:

� Ejemplo: “join” entre información de CRM aplicación� Ejemplo: join entre información de CRM, aplicaciónde incidencias y aplicación de facturación.

� Componentes reusables sin escribir código.� Optimización de consultas distribuidas.� Definición de vistas virtuales.

Múltiples modos de acceso: J DBC SOAP� Múltiples modos de acceso: J DBC, SOAP,...� ...

Arquitectura de referencia (5)� Componentes de Lógica de Negocio

� Lógica de negocio que puede ser usada por una o l f l lvarias aplicaciones finales. Ejemplos:

� Procesar un pago de un cliente.P did d li t� Procesar un pedido de un cliente.

� Gestionar una incidencia de un cliente.� ...

� Pueden programarse con tecnologías convencionales como J EE o NETconvencionales como J EE o .NET.

� Sin embargo, existen tecnologías específicas que facilitan la programación de ciertos tipos defacilitan la programación de ciertos tipos deprocesos de negocio:

� EAI (Enterprise Application Integration), ESB (Enterprise Service Bus), BPM (Business Process Management)...

Page 6: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Arquitectura de referencia (6)� Componentes de Lógica de Negocio (cont.)

� Tecnologías como J AVA están más orientadas a la l ó d írealización de procesos síncronos que:

� Reciben su entrada de un proceso llamante.R li l ló i i á i d ll� Realizan alguna lógica, quizás invocando para ello a aplicaciones externas.

� Devuelven un resultado al llamante� Devuelven un resultado al llamante.� Todo el proceso dura milisegundos o segundos.� Si es necesario, pueden usarse transacciones.Si es necesario, pueden usarse transacciones.� Ejemplo. Procesar un pago.

Arquitectura de referencia (7)� Componentes de Lógica de Negocio (cont.)

� Ejecución de algunos procesos puede durar días:E i t d i id i d li t� E.g. procesamiento de una incidencia de cliente.

� Estos procesos plantean una serie de necesidades:Invocaciones asíncronas (no bloqueantes) a� Invocaciones asíncronas (no bloqueantes) aaplicaciones externas.

� E.g. esperar por resultado acción correctora.g p p� Entradas pueden venir desde múltiples aplicaciones

(no sólo el llamante) y en diferentes puntos de ó d lejecución del proceso:

� E.g. el cliente pasa a estado VIP durante el procesamiento de la incidenciaprocesamiento de la incidencia.

Arquitectura de referencia (8)� Componentes de Lógica de Negocio (cont.)

� Los “resultados” puede haber que notificárselos aúl l l ól l llmúltiples aplicaciones, no sólo al llamante, y no

sólo al final del proceso.E A t li ld i t l d� E.g. Actualizar saldo con empresa instaladora.

� No siempre es posible usar transaccionestradicionales:tradicionales:

� No se puede bloquear un registro en BD durante tres días !!durante tres días !!

� Acciones de compensación: deshacer los efectos de una acción (e.g. anular un pago).efectos de una acción (e.g. anular un pago).

Arquitectura de referencia (9)� Existen lenguajes específicos que ayudan a

programar este tipo de aplicaciones:d l d fl� Modelan un proceso de negocio como un flujo que

coordina a múltiples aplicaciones.A d l fl j d d f� A menudo, los flujos pueden crearse de forma gráfica.Existen múltiples lenguajes propietarios de cada� Existen múltiples lenguajes propietarios de cadafabricante.

� Estándar emergente: BPEL (Business Process� Estándar emergente: BPEL (Business ProcessExecution Language).

Page 7: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Arquitectura de referencia (y 10)� En arquitecturas empresariales reales:

� Frecuentemente no habrá capa de acceso e ó d d l óintegración de datos salvo para propósitos

informacionales (data warehouse). Paquetes software emergentes dan soporte a esta� Paquetes software emergentes dan soporte a estacapa y están ganando aceptación rápidamente.

� Puede no haber solución EAI /ESB/BPM� Puede no haber solución EAI /ESB/BPM.� En organizaciones medianas / grandes, lo más

común es que sí lo haya.

Roadmap Asignatura� Integración de Plataforma:

� Tema 3. � Ocupará la mayor parte del curso y de la práctica.

� Tecnologías para la capa de Acceso e Integración de D tDatos. � Tema 5. Introducción a nivel teórico.

Tecnologías para el modelado de procesos de� Tecnologías para el modelado de procesos denegocio como flujos: � Tema 4 Introducción teórica y ejemplo práctico� Tema 4. Introducción teórica y ejemplo práctico. � Parte opcional de la práctica.

I ntegración de Plataforma (1)

� Historia:� 70’s: Comunicación de procesos en red� 70 s: Comunicación de procesos en red

� Sockets� 80’s: Tecnologías de invocación de procedimientos remotos

Sun RPC (Remote Procedure Call)� Sun RPC (Remote Procedure Call)� DCE (Distributed Computing Environment)

� 90’s: Tecnologías de objetos distribuidos� CORBA (Common Object Request Broker Architecture)� J AVA RMI (Remote Method Invocation)� Microsoft DCOM (Distributed Component Object Model).

� 00’s: Tecnologías de Servicios Web� REST (REpresentional State Transfer)� SOAP (Simple Object Access Protocol)SOAP (Simple Object Access Protocol)

� NOTA: La influencia de cada tecnología no se ciñe sólo a la década mostrada en la transparencia. Ejemplo: CORBA, RMI , DCOM e incluso Sockets siguen en uso.DCOM e incluso Sockets siguen en uso.

I ntegración de Plataforma (2)

� Comunicación de procesos en red� Procesos en diferentes nodos de la red pueden intercambiar� Procesos en diferentes nodos de la red pueden intercambiar

datos utilizando APIs de red (e.g. sockets TCP/IP).� No importa topología de la red, plataforma hardware, SO o

l j d iólenguaje de programación.

� Visión de muy bajo nivel. Utilizar desde un programa servicios proporcionados por programas que se ejecutan en otro nodo es un proceso costoso y “poco amigable”.

� Ejemplo: ¿Cómo se invocaría una operación ofrecida por un proceso remoto?. Sería necesario definir un protocolo.p oceso e oto Se a ecesa o de u p otoco o

Page 8: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Integración de Plataforma (3)

� Invocación de procedimientos remotos� Un proceso expone una serie de operaciones (procedimientos) que p p p (p ) q

pueden ser invocados desde cualquier programa de la red.� Las operaciones y sus parámetros se describen en un fichero de

definición utilizando un lenguaje especial.definición utilizando un lenguaje especial.� Para hacer un programa cliente que invoque a un procedimiento

remoto, un compilador especial para cada lenguaje genera un programa llamado “stub” partiendo del fichero de definición.programa llamado stub partiendo del fichero de definición.

� Con el “stub”, el programador del cliente puede invocar el procedimiento remoto de forma muy parecida a la de un procedimiento local (transparencia)procedimiento local (transparencia).

� El stub es el que realmente recibe la llamada del cliente, envía un mensaje al servidor y recibe la respuesta del mismo.Visión orientada a programación estructurada (paradigma� Visión orientada a programación estructurada (paradigmadominante en los 80), no a programación OO.

� Tecnología dominante: SUN RPC.

I ntegración de Plataforma (4)

� Tecnologías de objetos distribuidos� Conceptualmente muy similar a RPC� Conceptualmente muy similar a RPC.� Cada nodo de la red puede exponer una serie de objetos.

Permiten la invocación de métodos de objetos remotos.� Utiliza el paradigma de programación OO (dominante en los

90 y hasta la actualidad).� J AVA RMI No proporciona independencia del lenguaje de� J AVA RMI . No proporciona independencia del lenguaje de

programación (debe utilizarse J AVA). � Por su facilidad de uso ganó gran aceptación en la comunidad

J AVA.� Sigue siendo un “building block” importante en la arquitectura J EE

(J ava Platform Enterprise Edition).

� DCOM. Solución propietaria de Microsoft.DCOM. Solución propietaria de Microsoft.� Muy utilizado en la comunidad Microsoft.� Difícil la interoperabilidad con el “resto del mundo” (J AVA).

I ntegración de Plataforma (y 5)

� Tecnologías de objetos distribuidos� CORBA� CORBA

� Estandarizado por el OMG (http://www.omg.org). Consorcio constituido por un gran número de empresas (Iona, Borland, HP IBM Oracle Sun etc )HP, IBM, Oracle, Sun, etc.)

� Las APIs están estandarizadas -> El desarrollador no depende de un fabricante.

ú� Existen múltiples implementaciones de distintos fabricantes para las plataformas y lenguajes más usuales (C++, J ava, Ada, COBOL, C, Smalltalk, etc.).

� El OMG ha estandarizado numerosos servicios CORBA útiles para cualquier aplicación:

� Servicio de nombres� Seguridad� Transacciones

Ámbito de aplicación de CORBA

� CORBA era una buena tecnología para abordar integraciones complejas en intranetsp j� Eficiente y probado� Buen soporte para seguridad, transacciones, comunicación basada

en eventos etcen eventos, etc.

� Uso en Internet� I IOP: Protocolo para permitir que diferentes sistemas que utilicen

CORBA i t é d TCP/IPCORBA se comuniquen a través de TCP/IP.� Existen firewalls que no reconocen I IOP

� Hay fabricantes que venden proxies de I IOP, pero no todas las íempresas que han adoptado las tecnologías de Microsoft los tienen

� Existen túneles I IOP sobre HTTP, pero no son óptimos

� Microsoft no fabrica implementaciones de CORBA� Había terceros que sí lo hacían (ej.: Iona, Borland, etc.), pero no se

podía esperar que todas las empresas que han adoptado las tecnologías de Microsoft usasen CORBA

Page 9: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Servicios Web (1)

� La Web proporciona un mecanismo de transporte universal eficiente robusto escalable y probadouniversal, eficiente, robusto, escalable y probadotanto en aplicaciones inter-organización como intra-organización.g

� Muchas de las tecnologías comentadas hasta el momento fueron diseñadas antes de la emergencia de la Web o no fueron específicamente diseñadas para aprovecharse de ella.

Servicios Web (2)� Un Servicio Web expone un conjunto de puntos de

acceso (endpoints) que pueden ser invocados por procesos externos.

� Un endpoint puede ser visto normalmente como una ió ib i á d loperación que recibe ciertos parámetros y devuelve

un resultado, quizás efectuando alguna acción por el caminocamino.

� Están basados en tecnologías surgidas alrededor de la Web:la Web:� Típicamente, los puntos de acceso son accedidos mediante

HTTP y sus direcciones se expresan mediante URLs.� Las invocaciones y las respuestas de las mismas se codifican

típicamente mediante XML.� XML es una tecnología que permite definir lenguajes de� XML es una tecnología que permite definir lenguajes de

intercambio de datos (lo veremos en el Tema 2).

Servicios Web (3)

� Suele distinguirse entre dos estilos de servicios web:� Servicios web SOAP� Servicios web SOAP.

� Añaden un nuevo conjunto de protocolos (SOAP) y lenguajes para permitir RPCs y envío de mensajes entre aplicaciones a través de la webtravés de la web.

� Estandarizados por el W3C.� Suelen utilizar HTTP como mecanismo de transporte, pero no

obligatoriamente.

� Servicios web REST.� No añaden nuevos protocolos ni lenguajes: utilizan solamente� No añaden nuevos protocolos ni lenguajes: utilizan solamente

HTTP 1.1 y formatos como XML para especificar mensajes.� Dan soporte a un nuevo estilo arquitectónico para diseñar

aplicaciones distribuidas (Servicios Web REST “puros” oaplicaciones distribuidas (Servicios Web REST puros o“RESTful Web Services”.

Servicios Web SOAP (1)

� WSDL (Web Services Description Language)� Permite especificar en XML las operaciones parámetros y� Permite especificar en XML las operaciones, parámetros y

tipos de datos de un servicio web.� La idea es similar al fichero de definición de RPC.

� SOAP (originalmente “Simple Object Access Protocol”)

í� Protocolo basado en XML para envío de mensajes estructurados (“objetos”)

� Normalmente funciona sobre HTTP (también SMTP, J MS,…).� Normalmente funciona sobre HTTP (también SMTP, J MS,…).� Cuando un cliente invoca una operación de un servicio,

envía un mensaje SOAP indicando la operación a invocar y los valores de los parámetroslos valores de los parámetros.

� El servicio devuelve un mensaje SOAP con la respuesta.

Page 10: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Servicios Web SOAP (2)

� Los interfaces ofrecidos por un servicio se expresan en WSDL (Web Service Definition Language)

� Existen compiladores para generar WSDL partiendo de interfaces en lenguajes populares (e.g. J AVA)� Esto no sería imprescindible pero es útil porque escribir el� Esto no sería imprescindible pero es útil porque escribir el

WSDL a mano es tedioso

� El compilador de WSDL permite generarp p g� Un “Stub” (Proxy) del objeto remoto (cliente)� Un Skeleton (Adapter) para implementar el interfaz remoto

(servidor)(se do )

Servicios web SOAP (y 4)

Instalador-1

SOAP

Registro UDDI

SOAP

Instalador-2SOAP

InternetSOAP

...SOAPOperadora

Instalador-N

APIs para Servicios web SOAP

� Existen APIs (comerciales y gratuitas) para los lenguajes más usuales.g j

� Partiendo del WSDL, generan Stubs y Skeletons.� En general, las APIs no son estándares, sin embargo, g g

no afecta a la interoperabilidad� La interoperabilidad es posible porque los protocolos (SOAP,

WSDL, UDDI ) están estandarizadosWSDL, UDDI ) están estandarizados

� En el caso de J ava� Las APIs son estándares� Forman parte de J EE� Al igual que en CORBA, podemos cambiar de fabricante sin

que afecte al código fuenteque afecte al código fuente

� En el caso de los lenguajes de Microsoft� Las APIs forman parte de .NET

REST (1)

� REpresentational State Transfer. Estilo arquitectónico propuesto por Roy Fielding en 2000.p p p y g

� RPC, CORBA, RMI , DCOM,…, incluso SOAP: ¿el mismo perro con distinto collar?

Mucha gente piensa que la arquitectura de las� Mucha gente piensa que la arquitectura de lasaplicaciones distribuidas no ha cambiado significativamente en 25 años.

� La Web es, sin duda, la aplicación distribuida más exitosa de la historia, y no sigue esa arquitectura.

� REST: Estilo arquitectónico para construir aplicaciones� REST: Estilo arquitectónico para construir aplicacionesdistribuidas inspirado en las características de la web.� Los defensores de REST (RESTafaris) creen que REST

l l t i li i di t ib id tes la clave para construir aplicaciones distribuidas tan escalables, accesibles, robustas y eficientes como la web.

Page 11: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

REST (2)

� REST suele implementarse usando HTTP, sin protocolos ni tecnologías adicionales como SOAP o WSDL.g

� Por ello, a menudo se usa el nombre REST para los servicios web que usan simplemente HTTP, incluso aunque no sigan completamente el estilo arquitectónicoaunque no sigan completamente el estilo arquitectónicoREST.� RESTful: Nombre dado a los servicios web que usan el

til it tó i REST d f i testilo arquitectónico REST de forma purista.� En el estilo REST, existe un espacio de nombres global

para identificar los recursos de una aplicación. p p� Típicamente URIs.

� El flujo de la aplicación se construye mediante hi lhiperenlaces.

� El conjunto de operaciones para manejar esos recursos es siempre el mismo.siempre el mismo.� Típicamente GET, POST, PUT, DELETE.

REST (y 3)

� REST está pensado para aplicaciones distribuidas donde los servicios coordinados son muy autónomos.y� Pueden aparecer y desaparecer.� Pueden cambiar frecuentemente y sin previo aviso.

REST it li i di t ib id á� REST permite crear aplicaciones distribuidas más desacopladas, minimizando los efectos en la aplicación de cambios en los servicios.aplicación de cambios en los servicios.

� A cambio, suele exigir por parte del programador un enfoque de más bajo nivel:� Normalmente, el programador tiene que manejar por sí

mismo la creación de las invocaciones remotas y la generación / parsing de los mensajes de intercambio.

� Esto es bastante sencillo hoy en día en la mayor parte de lenguajes de programación.

Ámbito de aplicación de servicios web (1)

� Integración de aplicaciones en intranets� Cuando se utilizan se suele seguir el enfoque SOAP� Cuando se utilizan, se suele seguir el enfoque SOAP.

� En los últimos dos años REST gana espacio.

� No eran inicialmente una alternativa tan eficiente y madura como CORBA

� CORBA dispone de numerosos servicios (seguridad, transacciones, etc.), )

� Sin embargo� Gozaron de “industry momentum” y en consecuencia muchas

empresas se decantan por su usoempresas se decantan por su uso� Es una tecnología soportada por todos los fabricantes.

Ámbito de aplicación (y 2)

� Integración de aplicaciones en Internet (B2B y Mashups)Mashups)� El enfoque de Servicios Web SOAP es ya el más utilizado en

integraciones B2B.� Sobre todo fuera del mundo corporativo (Mashups), REST es

mayoritario, aunque SOAP se utiliza también bastante:� Sites como Google Amazon ofrecen tanto API REST como� Sites como Google, Amazon,… ofrecen tanto API REST como

SOAP.

Page 12: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

SOA � SOA (Service Oriented Architecture)

� Modelar arquitecturas de sistemas como un conjunto de servicios poco acoplados (se minimizan las dependenciasservicios poco acoplados (se minimizan las dependenciasentre ellos).

� Los servicios definen formalmente sus operaciones mediante un “contrato” independiente del lenguaje de programación. De esta forma, los servicios pueden interoperar.

� Data Services: Servicios se acceso a datos reusables� Data Services: Servicios se acceso a datos reusables(concepto equivalente a la capa de integración de datos).

� Para construir aplicaciones que combinen varios servicios se t fl j i t li ióapuesta por flujos inter-aplicación.

� El punto de vista SOA sobre la reusabilidad es de granularidad gruesa: reusar servicios, no objetos.g g j

� Se hace énfasis en la fácil publicación y localización de componentes reusables.A t í i d di t d l t l í b� Aunque en teoría es independiente de la tecnología, se basa fuertemente en las tecnologías de Servicios Web.

��� �� �������� ���

� ��� �� ��� �

� ��� ����������� ������ ���������� �������� �� ���� �������� �� �������� � ������ ������������� ��� �� ��� �������������������

� �� ������������ ��� �� ������ �� �������� �� ����� ���� ���� ���� ����������� ����� ���� �������

� ��� ���� �� ����� ������� � �� ������� �������� � �� ����������� ����� ����� ���� ��������

� ����� ��� ���������� ������ �� ��� ����� ��� ���� ������ ����� ���������� ����

� ������� �������� ����������� ������������ ����������� ���������

� �������� �� ���� ����� �������� ��� ����������� ������� �� ��� �������������� �� ����������

������ �� ����������

� ����������� �� ����� ����� ������������������������� ���� �� �� ����� �� �� ��� ��� ����������� �� ��������������

� ���������� �� ������ ������ ���� ���� ����� ������� �� ����� �� ���������� ���

� ������������� �� ������������� ����� �� ������ � ������ ����� �

Page 13: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� ���

� ���������� �� ������ �� ���������� ��������� ������ ������� ��������� �� ��� ���������� ����������� ����� ��� ����������������� �������������� �������� �������� ����� ��� �� ������������ ������

� �������� ����� ��� ����������� �� �� �� �����

� ��������� ������ ��������� ��� ����������� �� �� ���

��

������

���������

���������

��������� � �

������� ���

� ������ �� �� ������� ��� ������ ������ �� ����� �� ������������ ������������� ����� �������� � �� ��������

� ��������� �� ������� ��� ������ ������������ �� ����� � �� ����������� ����� ����� ��� ����� �������� ����������������

� ������ �� ������ �� �� ������� ��� ������ �������� �� ������������ ������������� ����� �������� � ���� ������� � � �� �������

� �� �������� �� �� ������� ��� ������ ��������� ������������� �� �� ��� ��� � �� ������ �������� ������������� �� ��������������

� ������ ������� ������ ����� �������� ��� �� ������������ ������������� �� �� �� ������� ����� �������������������������

������� ���

� ������ �� �� ������� ��� ������ ���������� ��� ���������� ������� ��� �� ������� ���

��� � �� ������ � �� ����� ��� ������������� �� ���� ���� ��������� ����������� �� �� ������� ������

� �� �� ���������� ����� ��� �������� ���� � �� ��� ��� �� ����� ������ ��� ������� �� ���������� ��� ����������� �� ����������� ����� ��� �������� �� ��������� ������

� �� ������ �� ���� �������� � ������ �� ����������� ����� ��������� �� ��������� �� ����������� �� �� �� ��� ������� ����� �� ����� ��� �� ������� ��� ������� �� �� ���������� �� ������� � ��

������� ��� �� ����� ��� ������������� �� ���� ���� ������� �� ����������� �������� ��� �� ����� ��� ������������� �� ���� ���� ������� �� ����������� ������� ���� �� ��� ������

��

����������� �������� ���������������������������������

�� ��������� ��� �� ����

��

������

��������

���� �������

������� ���

� ������ � ������� ��������

� �� �������� ����������� �� ������������ �� ����������� ������������� �� �� ��

� �� ���������� ������� ��� ������ � �� ����� ��� ������������� ������ ������ ����� ������������� ��� ��������� ��������������� ����� ���� ����� �����

� � � � � � � � ��� � ��� ���� ��������� �������� ������� ������� ��������� ��� �������������� ���������� ���������� ����

Page 14: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� ���

� ������ � ������� ���������

� ���� ��� ��� �� ����� ��� ������������� �� ���� �������� ��������� ������� �� �� ������ ��� ������� �� ����������� �������������� �� ���������� ������� ��� ������ ������� ������������������ �� ��������� �������������

� �� ���������� ��� ���� �������� ����� �������� � ���� ��������������� � ����������� �� ������� �� ������������� � ����������� �� ������� �� ��������

� ������� ���������� �� �������������� ��� ��� ����������������� ���� ���� �� ������������� ���� �� ���� ������ �������� �� �������� ��� ������������

������� ���

� ������ �� �� ������� ��� ������ ����� � �� ������� ��� ��� ���������� ������� �� ��� ��� ��� �������� ����������� ������������� �� ��������� �� ������ ������������ � �������������������� � ���������� ��� ���������� ������� ������� � �� ���� ������ ��������

��

����������� �������� ���������������������������������

�� ��������� �� �������������������

��

������

��������

���� �������

������� ���

� ������ � ������� �����

� ���� �� �� ��������� �� ����� �� ���������� ��� �������� ��������� �������� �� ���� �� ������� � �� �������� ������������������ ���������� ����������� �������

� �� �� ����������� �� �������� �� ����� ��������� � ����� ������������������������ ����

� ���� �� ����� ���� ��� ��� ��� ����� � � � � � � � ���� ���� � � � � �� ����� �� ����� �� ����� �� ����� ���� �� ����������� ����� ��������������� ������� � ��������

� ��������� �� ����� ��� �� ������ ��������� �� �������� ����������� �������������� �� �� ����������� ����� �������� �� �� ��

� �� ����� ��� �� ������ ��������� ��� ������������ ������� � ����������� ������ ����� ������������� ��� ��������������������

� � ���������� �� �� ������ ��������� �� ������� �� �� ��� ��������� ������ �� ����������� �� �������

������� �� ��

� ������ � ������� ����������� ������������ ����� �������� �� ���������

� ��� ���������� �������������� �������� �� ��� �� ��� ������������ �� ����������� ����� �������� �� ���������

� ��� ����� ��� �� �� ��� ���������� �� ��� ��� ����� ���������������� �� ���� � ��� ��������� �� ���������� ������� ���������

� � � � � � � �� �� ���� �������� �� ����� ��� �� ������� ��� ����� ��� �� ��������� �� ����� ��� ������������� �� ���� ���� ����� �� �������

� �� �� �������� ��� ������������ �� ���� �� ���������� ������� ��� �������������� �������� ��� ������� ���� ��������

� �� ������� ��� ��� ��������� �� ����������� �������� �� ����������� ���� ��������

Page 15: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� �� ��� �������� ������������� ������������������

��������

���� �� ��������� ��� ��������� �� ����� ���

�������

��������������������������

��������� ��������� ��� ��������� �� ������������

����������������������

������������ �������� ���������� �������������

��������������� ����������������

������������ �������������

������������ ������������

���������� ���������������

���������������� ���������������

��������������� ��������������

������������������

����������� �� ��� ������������������ ����� ������� � �� ������� �� ��� �� ���

�������������� �� ������� �� ����� ���� �� ���� ��� ������ ����� ����� �� ��� �� ���� �� ������� � �� ����� ������� �� ���������� �� ���������� ����� ��� ���������� ������ �������� ������ ���� ������ ����� ����� �� �������� ��������� ����� �� ������� ���������� �� ������� ��� ���������� ���� ������ ������ � ��� ������� ���������� ������������� �� ������ �� �� ����� �� �� ��������� �� ��� ������� ��������������������

��������

����������� �� ��� �� ������ ������� ���

���������������������������������������������������������������������������������������� �������� ���������� ���������������������������������� ������������������������������ ���������������������������� ��������������������������������������������������� �������������������������� �� �������������������������������� ����������������������������������������������������������������� �� �� ��� ����� ���� ��� ������ �� ����� � ��

��� �� ������� ���������� ����� ��� ������������� ��� �����������

��������

���������

������� �� �� ��������� ���

� ��������� ���� ��������� �� ���������� ��������� ��������� �� ���������� ��� ��

����� ��� �� ������� ����� ��� ����� ����� �� ������� ���

� ���������� ���� �������� ���������� �� ���� ��� �������� ����������� �����������

����������� ����� �� ����������� ����� ����������

� �� ���� ��� �� ��������� ��� ���� ���� ������� �������� ��� � � � � � � � �� ���������� �� ������ ��� �� �������� �� ������ ��� � �������������� ������� ����� ������ �������� ��������� ������� ����������

� �� ��������� ����� ���������� � ����������� �����������

� �������� ��� ���� � �������� ��� ���

� ����� �������� ������ ������� ������ �� �� ���������� �� ����� �������� �� ��������� ��� ����������� ���� ������ ���������� ����� �� ��� �������

Page 16: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� ��� ���

� ����������� ���� ����� ������������� ������������������� �� �� ����������� ������� �� ������������� ���� �� ������� ����� ���

�������� ����� �� ��������� ��� ���������

� �������� ������ �� ������� �� �� �������������� ��� �� �� �� ���������� ���������� � �� ��� �� �������� �� ���������

� ��������� ��������� ������ �� ������������ �� ��� ���������� ��� ���������� � ������������ �� �������� ������� �������� �������������� �������

� ��������� ������������ �� � ���� ������ ���������� ������� �� ������������ �� ���� ���� ����������� �� ���������� �������� ��� ���������� �������� ����������� ������������ ���������� ��������� �����

����������� ��� ���

� �������������� ����������� ������������ ��� ������� ���� ���������� �� ��� ������ ��������� ��� ������

� ������������ �� �� ����� ������ �� ��������� �������� �� ���������� �� �������� �������� �� ������ ���������� � ���������� ����������� ����� �������� �� ������ ���������� � ���������� ����������� ����������� ��������

� ����������� �������� ������ ������ �� ������� ������� ����������� ��������� �� ����

����������� ��� ���

� ������ �� �� ��� �� ����� ��� ������� �� �� �� ������������������

� ������� �������� ������������ �� �������� ��������

� �� ����� �� ���������� ��� �������� �� ���������� ��� �� ������ �� ��������� �������� �� �� ��������� �������� ���������� ��� ���� �� ����������� ��� ��� ������ ��� ���������� ��������� �� ����������� ��� ��� �����

� �� ����� �� ���������� �� ����������� ��� ���� � ������ ������ ����� �������� ���� ����������� �� ������� �� ���������

� ������� ������� �������� ������������ �� �������� ��������

� ��� ����� ���� �� ����� ����� �� ��� ����������� ������ ����� ���� ������� ����������

� ����� �������� ���� ����������� �� ������� ���������

����������� ��� �� ��

� ������ �� ������� ��� ���� ����������� �� ���������������� �� ������� � �� ��������� �� ��� ������ �� ���������������� ������ ������� �������� �� ����� �� ��� ����� �� ������ ������� �� �� �� ������� ��

��������������� � ������������� �� �� ���������� ����������� �� ��� ��� ������ ����� �� ������� � ����������� ������ ��� ��������� ��������� �� �� ������� � ������������� ������ ��� ��������� ��������� �� �� ������� � ����

� ������ �� ������ �� ��������� ��� ��� ��� ���������� ����� �� ������������ �������� �� ����������� ��� �� ��������� ����������

� ���������� ������ �� ������� �� ������ �� ����� ��� ��� ������� ����������� �� �� ����� ������������ ��� �� ��������� ����������

� ���������� ������ �� ����� ����������� ��� ��� �� ������ ������ ���������� ��� ���� �� �������� ����� �� ������������ ����������

Page 17: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

��������� � ��������� ���

� ���� ��������� ���� ����� �� �������� ����� ������ �� �� �������

� ����� �� ��� �� ������ ������� �� �� �������� � �� �� ����������� ����� ����� ����� ��������� � ������ ����� ��� ���������� ������������ ��� �������� ����� � ����������

�� ����� ��������������

� �� �� ����� ����� ������� �� ����� �� ��� ���� ��������� �� ������ �������� ��� �� ���� ���� ��� �� ������ ��� �� ������� �� ��������� ������� �� ������� ���� ��������������

�������

��������

��������

� �� �������� ����� ����� ���������� �� ����� ��� �������� ����� ��� �� �������������� ��� �������� ������

��� � ������� ���

� ���� �� �������� ����� �� �������� ���� ����� ����� �� �����

��������� � ��������� �� ��

� �������� ������ �� ����� ��������� �������� �� ������ ����� ����� ���������� �������������� ������������� ����������������������

� ��� ���������� �� ����� ���� �� ��������� � � � � ������� ������������� ���������������

��������� �� ��������� ���� ��������� ����� �������� �� ��������� ������������ ����

����������� �� ����� �����������

������ �������������� ���������������������������� ����������������� �������������������

��������� ����������������� ���������

������ ������������ ��������������� ������������� ������������������ ����� ������� ��������� �������� �������������������� ������������� ��������������� ����������� �� ����������������� ��������������� ��������

������ ������������������ ������������

���������������� �� �� ��� ����� ���� ��� ������ �� ����� � ����� �� ������� ���������� ����� ��� ������������� ��� �����������

��������

��������� �� ��������� �� ��

� �� ���������� �� ����� ������ �� ��������� ����������� ���� ��������� ���� ����� ������������� � �� ���� ���������� �����

� ���� ��������� �� ���� ���������

� ����� ������������ ������ ���� ����������� �� �� ������� �� ������� ����������� ������ ����� ������ �� ���� �������� ��� �� ����������������������� �� �� ���� �� ������� ����������� ��� ������� ��� ���������� ��������� ��� ����� �� ����������� ��� ����������� �� ��� ������� ���������� �� ��� ������������ �� ���� �������� ���������� �� ������

Page 18: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� � ��������� ������������

� ���� ����� ������� ������� ���������� �� �� ����� �� ���������� � �� �� ����� �� �� ��������� �� �������������� ������������ � ����������

���������� ������������ �

����� �

���� �

������ �

������ �

� ����������� ���������������� � ���� �� �������� ��� ������

����������� � ��������� �������� ���

� �������� ������� ��������� �������� �������

� �� ���������� ��� ������������������������������������ � ����������

� �������� ����������

���� ������� ���

�������

��������������������������

���������������������

����������������������

���

��������

����������� � ��������� �������� �� ��

� ������� ������� � �������� ��������� �������� ���������� ����

����� ������������� ������������������

��������� ������ �

�������� ���������������������� ������ �����������������������������

�������� ������ ������ �������������

��

��������

������������������������

��������

���������

��������� �����

� �� �� ����� �� ������� ��� �� ������ �� ����� � �������������� ���������� ����������� �� ��� ������ ���� ���������� ������ �� ��������� �� �� ����������� ����� ������� ��������� ���� �� ����������� ������� �� ������ ���� ������� �����

��������� �� �� ����� ��� ����������������� �� �� ����� ��� ��������

���������

�������

��������������������������

��������� ��������� ��� ��������� �� ������������

����������������������

������������ �������� ���������� �������������

��������������� ����������������

���������

Page 19: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� �� ������� ���

� �� ��������� ��� ����� ����� ��� �� �������� ���������

� �������� ������� �� �� ������� ����� �������� ������ ���������� �� ������� ������ �� ����������� ��� �� ���� ��������� � ��������� ����������� ������������ ����

� ���� ������� �� ������� ���� �������� � ��� ������� ���� ��� �����

� ����� ��� ��� �� �� ������������� �� �� �������� ������������ �� ��� ��� � �� ������ �� �� �������

� �� �������� ���� ���� ������� �� ��� ����� ����� �� ������������� �������

� �� ������ ������ ����� ��� ���������� ���� �� �� ������ �������� ��������

������� �� ������� ���

� �������� ���������� ���� ������ ��� ���������� ��� ��� ������ ����������� ��������

� ������� �� ������� �� ������� ������������������������ ������� ��� �������� ���� ��� ��������� ���� ����� � ����

� �� ����� ��� ������������� �� ���� ������ ���������� ������������ ���� ����������� ��� ������ �� ������� �� ���������������������

� �� ������� �� �� ����� ��������� ���� ��� ���� �� ��������� ���������� ������

� �� ����� ��� ������������� �� ���� ������ ��� ��� �������������������� �� ������� �� ���������������������������������� ������ ���������

������� �� ������� �������� ������������� ������������������

������� ������������������������������������������������������������������������

���� �� ��������� ��� ��������� �� ����� ���

������������������������������������������ ��������� ��� ��������� �� �������������������������������������������� �������� ���������� ���������������������������� ���������������������������� ����������������

��������

������������

������� �� ������� �� ��

� ������� �����������������������������������

�������������������������������������

� ������������������������������������ ������� �� ������� ��� �������� ����� ��� ��������� ���������������� ��� �������� ������ ��� �� �������� ��� ����� � �� �������������� ������� ���������� �� ������� �� �������������������������������������������������������������

� ������������������������������������

� ����� ��� ��������� � ��������� ���������� ������ ��� �������������� ��� �������� ��� ����� ���������� �� ������� �� ������������������������������

� ���� ����� ���� ���� �� ����� �� �� ��� ��� ������� �� �������� �������� �� ������������� ��� ������� �� ������� �� �� ����� ���� �� ���

� ��������������� �� ����� ���������� ��� ����������� ��� ����������� ����������� ����� ��������� � ���� ���� ������������������ ��������

Page 20: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����� �� ���������� ��� ���

� ���������� � ������ ��� ��������� ���� ����� ���������

� ����� � ����� ��������� � ����� ����� ��� ��������� �� ����������

� �������� �� �� ��� ���������

� ����������� ����������� �� ��������� ���� �� ���������� ��� ��� ��� ���� ���� ���� �� ���������� ��� ��� ��� �������������� �� �������� ���� ������������ ����� ����������������� ������������� � �� ������������� ������ ��� �������� ��������

����� �� ���������� ��� ���

� ���������� ����������� ��� ��������� ������ ����� ���������� ������� �� ���������� � ����� ���������

� �� �������� ����������� ���� ������� �� ����������������� ��������� �� �� ���������

� ������� �� ���������� ����� ������ ��� ���������� �� �� ������� ��� ������������� ���� ������ ��� ���������� �� �� ������� ��� ������������� �������� ����� ���������

� ����� ���������� ������ ���� ������� �� ������� ��� ���������������� � ������������ �������� ������ �������� ���

� ������� �� ������ ������� ��� �� ���� ������������� ��� �� ���

����� �� ���������� ��� �� ��

� ���������� ���������� ������� ������� �� ����� ������

����� ������������� ������������������

��������� ���� ������ ������������ ����� ��� �����������

����������������������������������������������������

����� ����������������� �� ��������������������� ������ ���������������������������� �

������

����������������������

�������

������

������� �� �� ������� �� ����������������� �������������������

�������

�������

���������� �� ���������� ��� ���

� ������� ������ ����� �� ���������� ���������� ������������ ��� ��������� � ��������� ������� �� ������������� ��� � ��� �������������

� ��� ��� ����� �� �������� ��� ������ ���� ��� ��������� ���� �����������

� ��������� �������������� ������

� ������� ��� ���� �������� ��������� �������������� ��� ����� �� ������� ��� �� � �� ��� �� ��������� ���

� ����� ��� ���� ���� ��� �������� ��� ������������������� ��� �� ���

� �� ��������� ��� ��� ������ ��� ������������� ���� ������� ����� ������� ���� ����� �� ���� ����� ������

Page 21: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���������� �� ���������� ��� ���

� ������� ������ ���������� ���� ��� �� ������������ ����� ������� �� ��������� �� ��� �������� ����������

� ��� ���������� ��� ������ �� ��������� ���� ������� ��������� ��� ���� ���� �������� �� �� ��������� ������� ����������� � ��� �������� ����������� �� ���������� ����� �������� ���� �������� ����� � � � ���������� ��� �� ��������� �� ������ � �������� ��� ���������� �� ��� ��������

� ������ ������������ �������� ������ �������� � ��� ������ �������� ���� ��� �������� ������������� ���� ������ ����� ������������� ��� �����

� �� �� ��������� �� ������� ����������� � ��� �������� ����������� ���� ������� �������� �� �������� �� ���������� ������������ ������� �� ��������� ����� ������ ������� �� ������������� �� ��� �������� ��������� � ��� �������� ����������

���������� �� ���������� ��� �� ��

� � ������������� ���������� ��� ����������� ��������� ��� �������� ��� �������� �� ������������ �� ��������� ��� ������������ ���� �� ������� �� ������������� ��������� ���� �� ����� ��� ��� ��������� ����������� �� ������� ��������� ���������������������������

�� ����� �������� ��� ���� ������� ������ �� ������ �������� �� ����� �������� ��� ���� ������� ������ �� ������ ��������� �������

� �� ������������ �� �������� ���� ��� ������� �������� ��������� �� ������� �����������������������

� ������� ���� �� �� ��������� ��� ����������� �� ������� ���� ����������� ��� ���� � ��� ������ �����������

� ���� �������� �� �������� ���� �������������������������������������

���������� �������� ������������� ������������������

����������� ��������������������������������������������

���������������������������������������������

�����������������������������������

�������������������������������

���� ������������� ����� ���

���������������� �������������������

��������������� ���������� ������������������

�������������� ������������ ������������������

�������������� ����������� ������������������

������������������

���������� ������� ������� �����

�������� ������ �� ������

� ���� ������

� ���� �����

� ���� ������

� ���� �������

� ���� ������� �������

� ���� ��������

���

��������������� �������������

���������������� ������������������

���������������� �������������

���������������� �������������

���������������� �������������

���������������� �������������

���������������� �������������

���������������� �������������

������������������

�����������������

Page 22: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���������� ������� ������� ����� ���

���������������� �������������

��������������

������������ ����������������� �����������������

������������ ������������ �������������������

������������ �������������� ������������������

������������ ������������������ ��������������������

������������ ��������������� �����������������

������������� �����������������������

������������ ������������ �����������������

������������� �����������������������

������������ ������������ ������������

������������� �����������������������

������������ ��������������� �������������������

���������������

������������������

���������� �� ������ �������� ����� ���

���������������� ��������������

��������������

������������ ������������ ������������

������������� �����������������������

���������������

������������������

���� �������� ������� ����� ��������� ���

������������ ������������� ���������������

�������������

�������� ��� �������������� ��������������������������������������������

��������������������������������������������������������������������������������������������������������������

� ��� ��������� � ����� �������� ����������� ������ ������������ ��� �� �������� ���� ������� �� ������� ��� ����� ����������� �� ������� �������� �� ������� �� ���������������������������������������

� ���������������� ���������� �� ��� ��� ������� �� ������� ����� ��������� ��������� �� ���� �������

� ���� �� � � � � ��� ������������������������������������ ���������� �� ������� �� ������� ��� ������� ���� ��� ��������� � �������� �� �� �������� ������������ �� �� ������� �� ������� �������������� ����������������

� ������������������������������� �� ��� ���������� ��� ��� �������� ���� �������� ��� ���������������� ���������� ������������ ����� ������ �� �� ��������� �� ��������� ������� ��� ������� � ������ �� ��� �� ��������� ���������������

� �� �������� �� ����� �������� ����������� ������� ��������� ������������ �� ����� �� ������������������ �� ������������

� ������� ������ �������������������� ���� �������� �� ����� �������������� � �� �� ��� ����������� �� ��������

�������� ��� ���

� ���� ������ ������������� ����� ��� ��������� � ���������� ��� ������ ���� ������� ��� ����� ��������� � ���������

� ������� ������ ����� ������������� ������� ���� ����� ������ ������ ������� ������������� ��������� ����

� ������������� �� ����� �������� ������������� �� ����� �������� �������� ������� �� ���� ������ � ������ �� ���� ���������������� ������� �� ���� ������

� ��� ������������� ����������� ��� �� ��� ��������������������� ���� ������� ����� ��������� �� ����� ����� �������

� �� ���� ����� ������ �� ���� ������ ���������� �� ��������� ������� �������� ����� ������������ � ��� �� ��� ����������� �� �����������

Page 23: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

�������� ��� ���

� ������������� �� ����� ������� ������� ������� ������ ����� ������������� �� �������������

� ������� �� ���� �������� �� �� ������ ��� ��������� ���������� ������ �� ��� �������� �������

� ������� �� ���� �������� �� �� ������ ��� ��������� ���������� �������� ��� ��������� �������

� ���� �������� �������������� � � � � �� �� ����� ��� ���������� ��� ������ ��������� ��� ���������� �� ���� ����������� ������ �� ���� �� �������� ��� ������������ ��� ��������� ���� ����� � ����� ������ ��� ������ ���� ����� ������� ������������

�������� ��� ���� ���� �������� ������������� ������

� �� ���� ����� �������� ���� ���������� ��� �������� ���� �������� ��� ���������� �������� �� �� ������������ ��� ������ ��� ����������������� �� ���������

� ������� ����� ������������� ���� ��� ��������� ������ �������� �� ��������� �����

� ����� ������������� ����������� ����� ��� ��������� ������ ����� ������������� ����������� ����� ��� ��������� ���������� ������������� �

� ������� ���� ����� �������� ��� �� ��� ���������

� ���� �������� �� ������ ������ �� ������� �� ����� �������������� �� ������ ������ � ������ �� ������������������

� ��� ������� �� ������������� � �������������

�������� ��� �� ��

� ���� �������� ������������� ������� �� ������� ������� ����� ��������� �� ��������� � ���������

� �� ����� �� ��������� �� ���������� �� ������ �� ������ ������� ������������� ����� ���� ������� ��� ���������

� ������� �� ������� ������� ����� ��������� ��� ���������� ������� ��������������

� �� ������� ������� ���������� �� �������� ����� �� ������� ������� ���������� �� �������� ������������

����������� � �������� ��� ���

� �� �� ������ �� ��������� ��� ����� ������� �� ������ ������� ��� �������� � ���� ������� ��������� ��� �������� �� ������� ���

����� ������������� ������������������������� �����������������������������������

����������������������������������������������������������������������������������������������������

���������������������������������������������������������������������� ��������

����������������������������������� ��������� ��� ��������� �� �������������������������������������������� �������� ���������� ����������������

�����������

���������

Page 24: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� � �������� ��� �� ��

� ��� ����������� � �������� ��� �� ����������� ��� �� ���������������������� ��� ������� �� ������������������������������������������������� �� ����� �� �� �� ����� ���� ����� ��� ���� �����

� ����� �� �� ��� ��� ������� ��� ��������������� �� ������� ��������� ����

� �� ��� �������� � ���� ����� ��� �������

�� �� ������� �� ���������� ��� �� ������� ��� �������� ��� �� �� ������� �� ���������� ��� �� ������� ��� �������� ��������� �� ������� ��������������������������� �������������� �� ����������������������������������

� ����� ��������� ��� �� �� ������ �� ��� ��� ������� ��������� ����������������������������������������� ������ ��������� ������ �� ��� ��� ������� ������������ ����� ��� ����� ����� �� �� �������

��� ������� �� ���������� ���

������������ ���

� �� ��������� ��� �� ����� �� ��� ������ ������������� ����� ��� ����� ���� �������� � ��

������������� ����� ���������� �� ���� � ��� ������ �� ������� ���� �� ����� � �������� ��� ���� �� ������ �� ����������������� ��� ��������� ������ ��� �� ���������������� �����

� ���������� �� �������� �� ��������� � ���������� � ����������������� ������ ����� ��������� ����������� �� ��������� �� ������� �������� ���� ���� ����� �� ������ ����� ����� ��������� ��� �� ��������� �� ������

� �������������� �� ������� ��������� ������� ��������� ��� ���������� ���

�� ��������� ��� ���� ���� �������� � �� �� ������ ��� ��������

� ������� ������� ���� ��� ��������� ��� �������� �� �� �������� ��������� � �������� �� ������ ��� �� ����������� �� ������

������������ ���

� ����� �� �������� ������� ���� ���� ������� ���� �����������

� ������� ���� ��� ��������� ������ ������� ���������� �� ����� �� ������� ����������� �� ���������

��� ������� �������� ���� ��� �� �������� �� ��� ����� �������� �����������

� ��������� ��������� �� ��������� ���� ������� � �� ����������� ������������� ����� �������� �� �����

� ������ �������� ��������������� �� ����� � ������� ��� � �������� ��

� ������������ ������� �� ������� ���� �� ������������ ���������� ���������� ������ ���������� ��� ���������� ������������������������� ��� ������� ������������ ��� ���������������������� ������ ���� �������� �� �� �������

Page 25: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������������ �� ��

� ������� ���� ������������ �� ���������� �� ����� �� �������� ���� ��� ��������

��������������� �� ��������� �� �������� ��������

� ������ ������� �� �������� ������������� ������ �� ��� ����������� �� ��� ��� ��� ��������� ���� ��� ��� ������������� �

� ������������ �� ����� ������ ������� ���� ������� ���� ��� ��������� �� ���� ��� ��� ������� �� ���� ���

���� �� �������� ������� ���� ���

� ��� ������� ��� ��� ����� ������ ���� ���������� ����� ����� �� ���� �� ��������� ��������� ���� ������� �� �������� �����������

� �� �� ������� ��������� ������ �� �������� �� ����������� ����������� ��� � ������ ������� �������� � ������ �� ������ ������� ���� ��� ��� ������ �� ������ �� ���������� �� ������ ������� ���� ��� ��� ������ �� ������ �� ���������������� �� �� ���� ������ �� �� ���� �� ������ �����

� ������ �� ��� ������� �� ���� ��������� �� �� ���� ������� �� ������ ����� ������� �� ������ ������� ��� �� �������������

� �� ����� ������� ���� ���������� �� ���� ���������� ������� ���� ����� ���������

���� �� �������� ������� ���� ���

� ���� ���������� ��� ��� ����� ������ ���� ���������� ����� ����� �� ���� �� ����������� ��������� ���� ������� �� �������� ����������������

� ������ �� ��� ������� �� ���� ��������� �� �� ���� ������� �� ������������� ������� �� ��� ��� ������ ���� ����� ��� �����

����� ���� �� �� � ���� ����� �� ���� ����� ������� ���� ���������� �� ���

� ��� ��������� ������ ������� ������ ���� ���� �� ��� ���� ������������� ��� �� ��� ��������������������

�� ���������� ���� ������ ���������� ����� ����� �� ���� ��� ���� ������� �� �������� �����������

� ����� ������� ���� ���������� �� ���

���� �� �������� ������� ���� ���

���������������������

��������������������������

��������������������

� ���� ����� ����������� �� ������ ������� �����������

������������������������������

�������

�����������������

�������������������������

���������������������

�����������������

���� ���������� �� �������� �� �� ����������� �� ������� �� ����� ��� �������� �� �� ������ ��� ����� ���� ��������� �� �� �������������� ����� �� �� ������ ��������

Page 26: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���� �� �������� ������� ���� ���

��������

���������

���������

���������������

� ������� ����������� ������ ������� ������������� ��������� ���� ������� �� ������ ���������

� ���� �������� �������������� ��� �� ���������� �������������

���������

���������

���������

����������������������

���������

���������

����

��������������������

������

���������

������� ��������������

��� �������������

���������

�������

�������������������

���������

���������

��������

����

���

���� �� �������� ������� ���� ���

� ���� ����� ��� ��� ��� ������������ ���� ������� �� �������� ����������������� ��������������������

� ����� ����� �� ���� ��� �� ��� ���� �� ��� ������� ��� � ��� ����� �������� ��� ����������

��������� ���� ������������ ����� ����� ������ ��� ��������� ����������

������� ����������� ���� ����� ����� ���������� �� ������� ��� �������� ������� �� ���� ����� ����� ���������� �� ������� ��� ����

� ���� ��������� ������� ���������� �� ���� �� ��������� ������ ��� ���� ��� ���������� ��� ����������

� ������� �������� ���������������� �� ������� ��� � ��� ��� �������������� ���������� ��������

� ��������� �������������� �� ���� �� ����������� ��� �������������� ���������� �� ��� ������� ��� � ���

� �� ������ ��� ������� �� ������������� �� ������� ��� ������ �������� ����� ������� ������� ������� ������ ��� ���������� �������� �� ��� ��������

� ����� �� ��� �� ���� ������� ����� �������� ��� ����������� � �� ��������� �� ���� ����������� ���������� ���� �������� ��� �� ��������������

���� �� �������� ������� ���� ���

� ���� � ������ ������������ ������� � ���� ���� ������

� ����� �������������������� ������ ��������������������

� �������� �� ������ ������� � ���� ������ ������� ���� ���������� �� ���� �������� ���� �� �������� ���� � ��� ������� �� ���� ��� ��

��� �� ���� �� ��� �� ��� �� ��������� ������� �� ���� ������ �� ����� ���� ����� ��� ���������� �������� ��������

� �� ���� �������� ��� �� �������� ���� ����� �� ���������������������� ���� ��� ������� �� ��� ������� �������

� ������������� ��� ������� ��� ��� ������ ��������� ��� ���������� ���������� � ������ ��� ��������� ����

� ������������ ����

���� �� �������� ������� ���� �� ��

� ���� ����� ������������ ��� ��� ��������� ����� ����� �� ���� �� ����������� ��������� ���� ������� �� �������� ��������������

� ���� �������� �� �������� �� ����������� ������� ��������� ����������������� ������� ���� ������

� ������� � ���������� �� ��� ����������� � ������ �� �� ������� ���� ������ ������ ���� ������������ � ���

����������� ��������� �� �� ������������������ ��������� �� �� �������� � ������ �� �� ��������� ���� ���� ��������������� ����������

�� ��� ������ ���������� ��� ��������� ��� ����� ��� ���������� � ������ �� ���������� �� ��� ������ ���������� ������� ������� ��

��������� ���� �������� ���� ��������� ��� �� ��� �� �� ������ �� ��� ���� ������

������ ������� �� ������������ � ��������� �� ������ ��������� ���� ��� ��� �������� ������ ��� �� �������

������� ���������� ��������

� �� ��� ��������� ��� � ��� ������� ��������������� ��������������� �������� �������� � ����

Page 27: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���� ���

� ���� �������� ����������� ���� ������������������ ������ ��������

� ������ ��� ������� ��� ��������� ����� �� ����� ��������� ����� �� ���� ���� ���� ���������� �� �� ����� ����

� ��������������

� ������ ���� ��������� �� ����� ���� �� ������� � ������ �� ��� ������ ���� ��������� �� ����� ���� �� ������� � ������ �� ����������� ���

� ���������������

� ������ ���� ������� �� ��������� ��� � ������ �� �� ���������

� ������������ ���� ������� �� ��� �� ��� ��� ����������� ����

���� ���

� ������������ �� ��� ������ �� ���� ������� ����������� ����� �� �� ����� ������������������ ��������� �� ���������� �������� �� ��� �������� �� ��

���������� ���� ���������������� �� ����� �� ������������ ����� ����� �� ��� ����� �� ������� �� ��� ��������� ���

������ � ��� ������� ������� �� ������� ���� ��������� ���������� ��� ������� �� ������� ���� ��������� ���������� �������������������� � ���� � ���������� �� ����������������������� �� �������������� �� ��� �������

� ��������������������������������������� � ������������������

� ������ �� ��������� ��� ��� ����� �� ����������� �� ����������� � ���� �� ������ ������������������ ��� �� ����������������

� ������������������������� ���������������������

� ������ �� ������ ������������������ � ������ �� ������������ ��� �� ����� �����������

���� ���

������������������

� ���������� � ����� ����� � ������� ������� � ������ ����������� � ��������� ������������� � ������������� ���������� � ������������� ������ � ������������������� � ������

�� ���� ����� ���� ��������������� �� �������������������

������ ���� ����� ����� ���� �������� ���� �����

� �������� � ������

� ������������ ������� �������

�����������������

� ��������������������� � ������������ � ������������������� ���������������������� � ������������������� ��� � ������������� � ����

���� ���� ������� �� �� ��������� ��� ��� �� ����������� �� ��� ��������

� �������� ���������� �� ��������

����� ������������� ������������������

���� ������� ���

������ ���������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������� �������� ���������� ���������������������������������� ������������������������������ ��������������������������������� �����������������������������������������������������������

������ �� �� ��� ����� ���� ��� ������ �� ����� � �� ��� ��������� ���������� ����� ��� ������������� ���

�������������������

Page 28: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���� ���

� ������ ������ �� ��������� ����������� ����� �� ����� � �������

�������

����

�������

�������

���������

� ������� ������������� � ���� ���������� � ������

��������

��������

� �������������������� � ��������� ������������ � ����� ���������������� � �������

� ������������ � ������ �� �� � ������������ ���������������� � �������� � �������� ��������������������� � ����������� � �������� ����������������� � ������ �� �� � ����������� � ���������� ���������������������� � ������ �� �� � ����������� � ������� ������������� � ������ �� �� � ����������� � �������� ���������������� � ������ �� �� � ����������� � ����� �������������������������� � ������ �� �� � ����������� �

������� ��������������������� � ������ �� �� � ����������� � ������� ������������������ � ������� ������������� � ������� ����������������� � ������� ����� � ������ �� �� � ������������ ������������ � �������

���� ���

� �������������� ���� ��� ��������� ��� �� �������

��������

��������������

�������

���������

���������

����

��������������������

�����������������

���������

���������

��������

����

���

� ������� ����������� ������ ���� ������� �� ������ ���������

���� ���

� ��������� ����������� ���������������� ������������

� ���� �� ��������� ��� ��� �������� ����� ������ ���� ������������

� �������� �� ����� �� ����� ��� ���������� ������ ������� ����������������

� �������� �� �������� ���� ��� ���������� ��������

������� ������������ � ��������������������������

� �������� ��� ��� ��������� �� ���� ��� �� ��� ������� ��� ������� ��

�������� ��� ��� �� �������� �� ��������� ���� ������� ��� ��������� ���� � ��� ������ �� ��������� ����������� ��

������� �� ������� ������� ��� �� ������� �� ������� ��� ������������ �� �������� ���� � ��������

� ������� ��� ��������� ����� ������ �� ��� ��� ����������� ��������� ������� ���� �� �������� ���� � ��������

� � �� ��� ��� �� ������� �� ���������� ��� ������� �� ��� ��������� �� ������������ ����� ���������� ��� ��� ��� �������� ��� �� ����� ���������������������� �� ����������� ��� ������� �

���� ���

� ������� ������� ������������� �������������� ���� �� ��������� ����

� ���� �� �������� ��� �� ������ ������������� ������������������� � ��� ����������������

�������������������������������������������������������

� ������ ������� ������������������ ������

� ����� �� ���� ���� �� ������� �������� ����

� ���������������������������������������������

� ������ ������� ��������������������� �����������

� ����� ��� ��������� �� ����� ���� �� ������� �������� ����

� �������������������������� �������� � ���

����������������������������������

Page 29: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���� ���

� ������� ������� ������� ��������� ������������������� ���� �� ��������� ����

� ��������� �� ������ ��������� ��������������� �� ������ ���������� ������������

� �� ����� ��������� ������� �� ��� ���������������������� ������������ �������������������������� � �������� ���� ������� �� ����� �� ������������ �� ������ �������� ��������� �� � �� ���������� �� ������ �������� ������������ � �� ������������� ���������

� ����������� ��� �

�����������������������������������������������������

� ������� ������ ������������������������ ���� �� ��������� ����

� ��������� ������������ �� ����� �� �� �������� ���� �������� � ������ �� �� ������

� ������������� ����������� � ���������������������������������������

���� ����

� ������� ������� ������� ������� ��������������� ���� �� ��������� ����

� ��������� �� �������� ���� � ������ �� �� ������� �������������� ������������ � ������������������������������

�������������������������������������������������������

� ������� ���� ������������������ ���� �� ��������� ����

� ��������� �� ����� �� ��������� ���� ��� �� ������ ������������� �������������������� ������������� � ���������������������������������

�������������������������������������������������������

���� ����� ������� ������

� ������� ������ ���������������������������� ���� �� ��������� ����

� �������� �� ����� ����������� ��������� �� �� �������� ������������� �� ����� ��� ��� �������� ���� ����� ������ ����� �����������

� ������� ��� �������� �� ������ ��� ��������� � �� ������ ���� ������� �� ������ ��������� �� �� ����� �� ��������� ��� �� ������� ����� ������� �� ������ � �� ������� �� ���������� �� ����� �� ����� � ���

��������� �� ���������� �� ��� ����������� ���� ���� ��������� ��� ��������� ���������������

� �� �� ��������� ��� ��� ������� ��� �� ������� ������������ �� ������ ��������������� ������ �� ����������� �� ������ ������

� ������ �� ��� �� ������ ��������������� ����� ����� �� ������� � ������������ ����������� �� �� �������� �������� �� ������� ������������ �������� ����� � ������� ��� �����

� ��� ������� ��������������������� ��� �������� �� ���� ��������

� ������������� �������� � ����������������������������������������������

�������������������������������������������������������� �������� ���������� �� ������� �� �� �������� ��� ������� ������������ � ���

������ �� ������ ������� ������ ������ ������������������

���� ����

� ������� ������� ������� ������ ����������������������� ���� �� ��������� ����

� �������� �� ������ ��� �������� �� ������ �� ��������� � �� ��������������� �� �� �������� ������������

� �� ����� ��� ��� �������� ���� ����� ������ ���� ���� ��������� ��� ��������� �������

� �� �� ��������� ��� ��� ������� ��� �� ������� ������ �� ����� ��������� � � �������� ����� � �������

� ������ �� ��� �� ������ ��������������� ����� ����� �� ������� ��� ���������� ����������� �� �� �������� �������� �� ������������������� ����� � �������

� ��� ������� ���������������� ��� �������� �� ���� ��������

� ������������ ������� � ��������������

���������������������������������������� ���������

� ������� ������ ������ �������������

Page 30: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���� ����

� ������� ������� ������� ���� ������������������� ����� ������ ����� ��

��������� ����

� �� ����� � �� ��������� �� �� �������� �� �������� �� ������ �� �� �������� �� �������� �� ��������� ��� �� ������ ���������� ��� � ���

�������������������������������������� �����������������������

� ������ ���� �������������� �����

� ��������� �� ����� ������ ���� �� ��������� ��� ��������� ������������� ����� � ���

����������������������������

���� ����

� �� ��������������

����������

� ������������� �������� � ������������ � ��������

� �� ������ ����� ������ �� ������� ��� �� ������ ��� ����� �� ������ �������� ��� �������� �� ����� ����

���� �� ���

� �� ���������������

������������

� ������������������ � �������� ���������� � ��������� ��� � �������������

������

� ������������ �� ����������� ��������� ������������������������

������������ ��������� �

��� ���������������������������������������

� ������ �� ��� �� ������� �������� � ��� ������������ �����

� ������ ������� ������� �� ��� ��������������� �� ��������� ������

�������������������������������������� ���

������� ���������������������

������ �������������������������� ��������������������������� �������������������������� ������������������������� ���������������

������ ��������������������������������������� ������������������������ ����������������������� ������������������������� �������������������������������� ����������������������������� �����������������������������

������ ��������������������������������������������� ������������������������������������������������ �������������������������������������������

Page 31: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

�������������������������������������� ���

������ ����� ����������������� �

������ ����� ������ ��������� ������ �������������������������������������������������������

������� ������������������� ��

������ ����� ������ ������������������������������������������������ ��� ������ ���������������� �

��� �

���������� ������� � ��� ��������������������� �������� � ������������������������� ������������ � ��������������������������

������ ���������������������������������

� ����� ���������� �� ������ ��� ����������������������� ������������� ��������� �

� �� � � ������������������������� ����

�������������������������������������� ���

������ ����� ������ ���� ������������������������ ����������������������������� ���� ������ ���������������� �

��� �

������� ������������ � �������������������������������� �������� � ��� ����������������������������������� ��������� �

��� ���������������������������������������

�������������������������� �����

� ����� ���������� �� ������ ��� ����������������������� ����������� �������� � �

� �� � � ������������������������� ����

�� ����� ������� �����������

�������������������������������������� ���

�� ��������� ������ ������� ��� ��� �� ���� ����������� ����������� ��

������� ����� ������ ������������������ �������������������������� ������������� ������ ����������������������� �

������� ����������������� � �������������������������������������������

���� ���������� � �����

�� ������������������ �� ����� ����������� � ����������������������������������������������

������ ����� � ���������������������������������������������������

����� ������� � ������������������������������������������������������ ���������

�������� ����������� � ��������������������������������������������������� ���������

������������ ������������� � ������������������������������������������������ ���������

������������ ���������� � ��������������������������������������������� ���������

�������������������������������������� ���

������������ ������ � ��������������������������������������������� ���������

������ �������� ����������������������������������������������� ��������

������������������ ���������������� � ��� ������������������������������ ������ �������� ���������������������������������������������������������������������������� ����������

������ �����������������

Page 32: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

�������������������������������������� ���������� ����� ������ �������� ���������������

������� ������������������� ������ ����������������������� �

��� ��� � �������������������������������������������������������� ����� �

���������������������������������������������������������� ���� �

�������������������������������������������������������������� ����������� � �����������������������

�������������������������������������� ������������������������������������ ���������������� � ����� � ���� � �������������������������������� ������

������ �������������

������� ����� ������ ������������ ������������������������� ������������ �

������������ �������� � ��� ��������������������

��� �������� � � ������������ ������������������������������������

������� ���������

�������������������������������������� ���

�� ��������� ������ ������� ��� ���� �� ��� ����������� ����������� ��

������ ����� ������ ������� ������������������������ ����������������� �

������� ������������ � ��� ���������������� ��������

�� ��������������������������������� �� ����� �������� ����������������� �

��� ��������������������� ����������������������������������

����������������������������������������������������������������������������������������

������� ������������ � ��� ���������������� ������������������������������������������������������������������������������������������������

������� �������������� � ��� ������������������ �������������������������������

���������������������������������������������������������������������������������������

�������������������������������������� ���

������� ������������������ ���������������������������������������������������

��������������������������������������������

������������� ���������������� � �������������������������� ������� �������������������������������������

������������������������������������������

������������� ������������� � ������������������������������ ����������������������������������

���������������������������������������

������������� ������������� � ����������������������� �������������������������������������

���������������������������������������

������� ��������������� � ��� ������������������� ���������������������������������������������������������������������������������������������������������

������ �������������

�������������������������������������� ���

������� ����� ������ ������� ����������������������� ������������ �

������� ������������������ � ��� ������������������������������

��� ��� � ������������������������������������������ ����� � ������������������������������� �

���������������� � ����� ���� � �������������������������������

�������������������������������������� ���������������������������������������������������������������

����������������������������������������������������������������

������������������������

������ �������������������

Page 33: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

�������������������������������������� �� ���

������� ����� ������ ������������� ��������������������� ������������ ��������� ���������� ���� ��������� �

������������� ����������� � ��� ���������������������

��� ������� � � ��������� �������� ������� � ��� �������������������� ������������������������������������������������������������������

������ ������������

����������� ���

� ������������������������������������������� ��� ������� �������� �� �� ����� ����������������� ��������� ����

��������� ������ ��� ����� �������� ������� �� ������� �� �������� ����� ����� �� ���������� �� ���������� �� ��� �������� �� �� ����������� �������� � ����������������

� ���������� �� ����� ������ ���� �� ������� ���������� �� ��� ������� �� ��� ��� �������������� �� ������

������� �� ����� �� ������� �� ��������� ������� ����� ������

� ���� ��������� ���� �� ��������� ����� ���� ����������� �������� ���� ��������� ���� �� ��������� ���������������������� ������������������ �� ������� ��� ���������� ��� ��������� ��� ��� ������� �����������

����������������

� ������������������� ������������������������ � �������� ������������������������ � ������� ����� � ����������� ���������������������� � ����������

����������������

��� ������������� ���������������� � ��� ������������� �� ������� �����

����������� �� ��

� ���������� � �������� ���� ���� �� ����� ������� ������� ���� ������� ��� �������� ����

������ ������ �� ������������ �������� ���� ����� �������� �� ��������� ����� � ���� �������������� �� �� �������� ���� ��

������� �������� ��� ��� �������� ��� ���������� ������� ������������� ��� ��� �������� ���� ����������� ��� �������������

� ��� ���������� ����� ���� ����������� ���������� ����� ���� ��������� ��� ��������� � ��������� ��� �� ��������� ����� ���������� ����� ��������� ��� ����������������� ���� ����� �����

� �� ������������� ��� ���������� ��� ��� ������������������������ ������� ������� ��� ���������� ��������� ���

� ��� ���������� ��� ������������� ������������ �������������� �� ��������������������������� �������� ������������� �� ������� ���

� �� ��������� ��� �� ������ ��� ������� ���� ��� ����� �� ������ �������� ��� ������� ��� ����� ���������� �� ������ ����� �������� �� ����� ��������� � ��������� �����������

Tema 3.1: Servicios Web REST: Conceptos BásicosConceptos Básicos

Page 34: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Índice

� IntroducciónIntroducción a HTTP� Introducción a HTTP

� Conceptos básicos de RESTEl estilo arquitectónico REST� El estilo arquitectónico REST

� REST en la práctica� Características de un Servicio Web REST

� Valoración y Conclusiones � Ejemplos de servicios web REST: RSS / ATOMj p /

I ntroducción

� REpresentational State Transfer. Estilo arquitectónico propuesto por Roy Fielding en 2000propuesto por Roy Fielding en 2000.

� La Web es, sin duda, la aplicación distribuida más exitosa de la historia.exitosa de la historia.

� REST: Estilo arquitectónico para construir aplicaciones distribuidas inspirado en las p pcaracterísticas de la web.

� REST se basa fuertemente en HTTP 1.1:� Realmente es independiente de HTTP� Pero HTTP 1.1 es el único protocolo masivo que ha sido

diseñado para soportar los principios REST (aunque nodiseñado para soportar los principios REST (aunque nosiempre es usado de esa forma).

I ntroducción (y 2)

� Frecuentemente REST se utiliza como sinónimo de servicios web que en lugar de las tecnologías SOAPservicios web que, en lugar de las tecnologías SOAP, utilizan directamente HTTP y XML.� No añaden nuevos protocolos ni lenguajes: utilizan p g j

solamente HTTP 1.1 y formatos como XML para especificar mensajes.

� A menudo no siguen estrictamente todos los principios del� A menudo no siguen estrictamente todos los principios delestilo arquitectónico REST.

� Aún así, se benefician de algunas ventajas. � En este apartado veremos características generales a todos

los servicios autodenominados REST. � En el apartado 3 6 veremos los principios estrictos del estilo� En el apartado 3.6 veremos los principios estrictos del estilo

arquitectónico REST.

� Ejemplo: Información de películas en el tema 2.j

I ntroducción a HTTP

� HTTP: HyperText Transfer Protocol. Estandarizado por el W3C y la IETFpor el W3C y la IETF.

� La versión actual es HTTP 1.1.� Protocolo cliente/servidor utilizado en la Web� Protocolo cliente/servidor utilizado en la Web.

Inicialmente construido para transferir páginas HTML.� Esquema petición/respuesta.� Esquema petición/respuesta.� Utiliza TCP para comunicar cliente y servidor (puerto

reservado: 80).)� Desde HTTP 1.1, una conexión HTTP puede utilizarse

para varias peticiones.� Concepto clave: URL como identificador de recurso.

Page 35: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Peticiones HTTP (1)

� Una petición HTTP consta de:� Una URL y un método de acceso (GET POST PUT )� Una URL y un método de acceso (GET, POST, PUT,…).� Cabeceras. Metainformación de la petición.� Cuerpo del mensaje (opcional).p j p

� Métodos de acceso:� GET: Solicita una representación del recurso especificado.

No debe causar “efectos secundarios” (modificaciones en el recurso).

� POST: Envía datos para que sean procesados (e.g.� POST: Envía datos para que sean procesados (e.g.formularios) al recurso indicado. Puede crear un nuevo recurso, modificar un recurso existente o ambas cosas.PUT: Carga en el servidor una representación de un recurso� PUT: Carga en el servidor una representación de un recurso.

� DELETE: Elimina el recurso especificado.

Peticiones HTTP (2)

� Peticiones GET, PUT, DELETE deben ser idempotentes.p� Múltiples peticiones iguales deben tener el mismo efecto que

una sola.

Las peticiones GET:� Las peticiones GET:� No tienen cuerpo del mensaje.� Pueden especificarse parámetros en la URL (consultas).p p ( )� Se especifican como pares campo=valor, separados por el

carácter ‘&’.� http://www.bookshop.com/search?tit=J ava&author=J ohn+Smithhttp://www.bookshop.com/search?tit J ava&author J ohn Smith

� No deben tener efectos secundarios.

� Las peticiones POST:� Normalmente los datos van en el cuerpo del mensaje.� Pueden causar efectos secundarios:

� Crear un nuevo recurso� Modificar un recurso existente

Respuestas HTTP

� Una respuesta HTTP contiene:� Código de Status:� Código de Status:

� 200: OK.� 404: Recurso no encontrado.� 500: Error en el servidor.� 403: Error de autorización.� …� …

� Cabeceras. Metainformación de la respuesta.� Cuerpo del mensaje:

� Representación del recurso invocado.� … o mensaje de error.

Cabeceras HTTP

� Especifican metainformación sobre las peticiones / respuestasrespuestas.

� Entre otras:� Tipo de datos esperados / devueltos como respuesta.� Tipo de datos esperados / devueltos como respuesta.� Codificación esperada / devuelta.� Lenguaje esperado / devuelto.� Antigüedad de la respuesta.� Control de cache (e.g. tiempo de expiración, última

modificación )modificación,…)� Credenciales de autorización.� Información para proxies.p p� Información para Autenticación.� Agente del usuario (e.g. navegador utilizado).� …

Page 36: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Características Servicios REST(1)

� Cliente- Servidor. � Clientes invocan directamente URLs para acceder a puntos� Clientes invocan directamente URLs para acceder a puntos

de acceso

� Sin estado. � Cada petición de un cliente debe contener toda la

información necesaria. N d b fi i d t t l d id� No puede beneficiarse de contexto almacenado en servidor.

� Facilita la replicación

� Sin tecnologías adicionales� Sin tecnologías adicionales.� Normalmente, clientes usan directamente HTTP y parsean

las respuestas (en formatos como XML o J SON).� No suele haber código autogenerado que oculte los detalles

de la comunicación.

Características Servicios REST(2)

� La semántica de las peticiones HTTP se respeta… aunque a menudo se usan sólo GET y POSTaunque a menudo se usan sólo GET y POST.

� Esto permite funcionar a “intermediarios” y otros servicios de infraestructura, sin necesidad deservicios de infraestructura, sin necesidad deconfiguración específica para cada servicio.

Características Servicios REST(3)

� Ejemplo cache: en Internet existen múltiples niveles intermedios de cacheniveles intermedios de cache.

� Las caches funcionan con cualquier sitio web sin necesidad de ninguna pre programación ni en elnecesidad de ninguna pre-programación ni en elsitio web ni en el sistema cache.Semántica conocida de HTTP:� Semántica conocida de HTTP:� Petición GET no invalida documentos en cache.

P ti ió POST PUT DELETE i lid� Petición POST, PUT, DELETE invalidan.

� En RPC (y en servicios web SOAP) no se sabe d d l á ti d iónada de la semántica de una operación.

� Habría que configurar cada servidor cache i di d i d ió d d i iindicando si cada operación de cada servicio invalida o no.

Características Servicios REST(4)

� Otros ejemplos:Proxies Pueden reintentar transparentemente� Proxies. Pueden reintentar transparentementepeticiones idempotentes. Saben que no pueden reintentar las no idempotentes.p

� Crawlers / Buscadores (e.g. Google). Saben que deben seguir sólo enlaces / formularios sin efectos

d isecundarios.

Page 37: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Características Servicios REST (5)

� Accesibilidad: REST usa directamente URLs y HTTP:� Fácil ver y manipular datos para humanos: puedo acceder a� Fácil ver y manipular datos para humanos: puedo acceder a

un recurso directamente con un navegador (XML suele ser legible para humanos).á� Fácil devolver distintas representaciones del recurso.

Ejemplo: HTML para usuarios humanos y XML para aplicaciones (cabecera HTTP Agente de Usuario + XSLT).g

� Prácticamente cualquier aplicación (desde Office a los sistemas de integración de datos) puede acceder recursos HTTPHTTP.

� Interoperabilidad garantizada

Características Servicios REST (6)

� Accesibilidad (cont.): RPC utiliza librerías y protocolos específicos:específicos:� No es fácil para un humano acceder rápidamente a los

recursos. Hay que construir aplicaciones ad-hoc para ello.� Cualquier operación que involucre acceso al recurso implica

programar.� Para acceder a un servicio RPC las aplicaciones deberán� Para acceder a un servicio RPC, las aplicaciones deberán

utilizar librerías generadas específicamente para nuestro servicio. Menor interoperabilidad.

b l d d ó� A cambio, el programador no se preocupa de cómo se envían peticiones HTTP ni de parsear XML.

Características Servicios REST (7)

� Desacoplamiento:En REST un cliente puede “parsear” sólo aquellos� En REST un cliente puede parsear sólo aquelloselementos que necesita.

� Si cambia algo en el servicio que él no usa no se� Si cambia algo en el servicio que él no usa, no seve afectado.

� En cambio, con el enfoque RPC, cualquier cambio� En cambio, con el enfoque RPC, cualquier cambioen el servicio remoto obliga a generar nuevos stubs.

� Además los objetos auto-generados por el enfoque RPC tendrán la misma estructura que en l i i d l á d del servicio: puede no ser la más adecuada para tu

aplicación.

Características Servicios REST (8)

� Pueden reusar mecanismos genéricos de diseño de HTTP:HTTP:� Autenticación, autorización, cifrado…� Con esquemas RPC, debe proporcionarlos el programador o q p p p g

bien se necesitan nuevos estándares� Sin embargo, HTTP no tiene todo lo necesario para cualquier

aplicación (e g transacciones distribuidas servicios deaplicación (e.g. transacciones distribuidas, servicios demensajería,…).

� Los defensores de REST proponen extender HTTP cuando sea imp scindible l g d t limprescindible en lugar de crear nuevos protocolos.

� A veces incluso cuestionan su utilidad (su necesidad puede ser un síntoma de mal diseño).

Page 38: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Tema 3.2: RSS / ATOM/

Introducción (1)

� RSS / ATOM: Familias de formatos XML utilizados habitualmente para sindicación de contenidos (“webhabitualmente para sindicación de contenidos ( webfeeds”):� Blogs, Noticias,…g

� “Web feed”:� Usuario se subscribe a los “feeds” que le interesan (e.g. un

blog, un periódico on-line,…).� Puede utilizar un programa lector de “feeds” para ver todos

los nuevos contenidos, sin necesidad de ir a cada sitio web.los nuevos contenidos, sin necesidad de ir a cada sitio web.� Para cada nuevo contenido, normalmente se muestra cierta

información básica (título, resumen,…) y un enlace a la información completa en la fuente originalinformación completa en la fuente original.

� Los principales navegadores incluyen ya un lector de feeds.

I ntroducción (2)

� El nombre RSS puede referirse a varios estándares, no siempre compatibles entre sí:p p� Really Simple Syndication (RSS 2.0).� Rich Site Summary (RSS 0.91, RSS 1.0).

RDF Sit S (RSS 0 9 RSS 1 0)� RDF Site Summary (RSS 0.9, RSS 1.0).

� Inicialmente creado por Netscape, fue abandonado y extendido de forma independiente por dos grupos.extendido de forma independiente por dos grupos.

� Como consecuencia hay dos ramas de compatibilidad en RSS:� RSS 0.9, RSS 1.0, RSS 1.1.� RSS 0.91, RSS 0.92, RSS 2.0

� Los más utilizados son RSS 1 0 y RSS 2 0� Los más utilizados son RSS 1.0 y RSS 2.0.� La rama “2.0” es más simple, ya que no usa RDF.� La mayoría de lectores soportan ambas ramas� La mayoría de lectores soportan ambas ramas.

Introducción (3)

� ATOM surge debido a los problemas de compatibilidad entre versiones y a algunascompatibilidad entre versiones y a algunaslimitaciones adicionales de RSS.

� ATOM Syndication: Estándar de la IETF (Internet� ATOM Syndication: Estándar de la IETF (InternetEngineering Task Force) publicado en RFC 4287.

� Los principales lectores de “feeds” también soportan p p pAtom.

� Muchos productores de feeds soportan ambos formatos (RSS, Atom), aunque otros sólo uno de ellos.S b d í l é i h bi l� Sobre todo en artículos no técnicos, es habitualencontrar el término “RSS” referido a cualquier formato de sindicación: tanto a RSS como a Atomformato de sindicación: tanto a RSS como a Atom.

Page 39: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Introducción (y 4)

� Los servicios que proporcionan feeds ATOM / RSS son servicios web REST (RESTful de hecho):son servicios web REST (RESTful, de hecho):� Los contenidos se acceden a través de HTTP y se devuelven

en XML.� Las “entidades” (canales e items) se pueden representar

mediante URIs únicos (idea más fuerte en ATOM).� Es un ejemplo de integración a través de la implantación de� Es un ejemplo de integración a través de la implantación de

un vocabulario estándar en lugar de un API estándar.� Su éxito ha sido espectacular.

� Es importante resaltar que es un formato dedicadoexclusivamente a representar contenidos y no

l i ti d i f ió t t dcualquier tipo de información estructurada.� Se usa un “esquema” fijo.� ATOM sin embargo es extensible� ATOM, sin embargo, es extensible

Información en RSS 2.0 (1)

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

<rss version="2 0"><rss version="2.0">

<channel>

<title> Información de películas en la UDC</title><link>http://ws.udc.es/movies</link><description> Este sitio ofrece información completa sobre

películas estrenadas recientemente.</description><language>es-ES</language>

<pubDate>Mon, 19 Mar 2007 04:00:00 GMT</pubDate>

<lastBuildDate>Mon, 19 Mar 2007 13:54:26 GMT</lastBuildDate>

<managingEditor>[email protected]</managingEditor>

< bM t > @ d </ bM t ><webMaster>[email protected]</webMaster>

<ttl>60</ttl>

Información en RSS 2.0 (2)

<item>

<title> La maldición del escorpión de Jade </title>

<link>http://ws udc es/movies/maldicion escorpion jade html<link>http://ws.udc.es/movies/maldicion_escorpion_jade.html

</link>

<description>Comedia. 103 minutos. Estrenada el 19/10/2001 Dirigida por Woody Allen. Con Woody Allen, Helen Hunt, Dan Aykroyd, Elzabeth Berkley, Charlize Theron. Woody Allen encarna a CW Briggs, el rey de los investigadores de seguros de Nueva York en 1940 --o cuanto menos eso es lo que no cesa de decirle a la nueva experta en eficiencia de la empresa, Betty Ann Fitzgerald (Helen Hunt)--. Briggs hace alarde de ser capaz de arruinar cualquier treta de seguros penetrando en la mente del malhechor, pero ahora, debido a los poderes hipnóticos del "Escorpión de Jade", es la mente de un malhechor la que penetra en Briggs

</description>

<category>Comedy</category>

<pubDate>Mon, 19 Mar 2007 04:00:00 GMT</pubDate>

< id>htt // d / i / ldi i i j d ht l<guid>http://ws.udc.es/movies/maldicion_escorpion_jade.html

</guid>

</item>

Información en RSS 2.0 (y 3)

<item>

<title>Amelie</title><title>Amelie</title>

<link> http://ws.udc.es/movies/amelie.html </link>

<description> Comedia romántica. 120 min. Estrenada el 19/10/2001. Dirigida por Jean-Pierre Jeunet. Con Audrey Tautou, Mathieu Kassovitz, Rufus, Yolande Moreau, Artus de Penguern, Dominique Pinon. Amelie no es una chica como las demás. Ha visto a su pez de colores deslizarse hacia las alcantarillas ...

</description>p

<category>Comedy</category>

<category>Romantic</category>

<guid>http://ws.udc.es/movies/amelie.html</guid>

<pubDate>Mon, 19 Mar 2007 13:54:26 </pubDate>

</item>

</channel>

</rss></rss>

Page 40: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Formato RSS 2.0 (1)

� Es un documento XML.Declaración RSS:� Declaración RSS: <rss version=“2.0”>

� Un único elemento channel con información acerca del canal y sus contenidosdel canal y sus contenidos.

� Un canal puede contener cualquier número de elementos item. Cada item representa un elementoelementos item. Cada item representa un elementode información del canal (noticia, entrada en el blog,…).

� Subelementos obligatorios del canal:� title. El nombre del canal.� link. La URL al sitio web HTML que se corresponde con el

canal.� description. Descripción corta del canal.� description. Descripción corta del canal.

Formato RSS 2.0 (2)

� Subelementos opcionales del canal:� language Lenguaje del canal Valores definidos por el� language. Lenguaje del canal. Valores definidos por el

W3C (http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes)� pubDate. La fecha de publicación del grueso del contenido

del canal. Por ejemplo, si un site renueva el grueso de su contenido diariamente, este valor variará una vez al día.

� Formato de fecha: RFC 822

� lastBuildDate. La última vez que cambió el contenido del canal.

i Edit E mail del responsable de los� managingEditor. E-mail del responsable de loscontenidos.

� webMaster. E-mail del responsable técnico del sitio web.� ttl. Indica cuantos minutos un canal puede ser cacheado.

Formato RSS 2.0 (3)

� Subelementos opcionales del canal (cont):� copyright Información de copyright de los contenidos� copyright. Información de copyright de los contenidos.� generator. Programa utilizado para generar el canal. � cloud. Mecanismo simple publish-subscribe. � image. Especifica una imagen o logo del canal.� rating. Rating PICS (http://www.w3.org/PICS/).

I f ió d� skipHours, skipDays. Información para agregadores sobre qué horas y días no se actualiza contenido.

� Otros: docs, textInput., p

Formato RSS 2.0 (y 4)

� Subelementos de item:� Todos son opcionales pero debe aparecer al menos uno de� Todos son opcionales pero debe aparecer al menos uno de

los dos siguientes: title o description.� title. Título del item.� link. La URL al contenido HTML completo del item.� category. Incluye el item en una o más categorías de una

taxonomíataxonomía.� pubDate. Indica cuando se publicó el item.� guid. Identificador único del item (permalink). Puede

coincidir o no con el link.� author. E-mail del autor del item. comments URL de página con comentarios sobre el item� comments. URL de página con comentarios sobre el item.

� enclosure. Objeto multimedia asociado al item.� source. Feed de origen del item. g

Page 41: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Información en ATOM (1)

<?xml version="1.0" encoding="ISO-8859-1"?>

<feed xmlns="http://www w3 org/2005/Atom"><feed xmlns="http://www.w3.org/2005/Atom">

<title>Información de películas en la UDC</title>

<subtitle> Este sitio ofrece información completa sobre películas p pestrenadas recientemente

</subtitle>

<link href="http://ws.udc.es/movies"/>

d t d 2006 03 19T13 54 26Z / d t d<updated>2006-03-19T13:54:26Z</updated>

<author>

<name>Fernando Bellas</name>

</author></author>

<author>

<name>Alberto Pan</name>

</author>

Información en ATOM (2)<entry>

<title>La maldición del escorpión de Jade </title><link

// / / /href="http://ws.udc.es/movies/maldicion_escorpion_jade.html"/><id> http://ws.udc.es/movies/maldicion_escorpion_jade.html </id><updated>2006-03-19T04:00:00Z</updated><summary>Woody Allen encarna a CW Briggs, el rey de los

investigadores de seguros de Nueva York en 1940 --o cuanto menos eso es lo que no cesa de decirle a la nueva experta en eficiencia de la empresa, Betty Ann Fitzgerald (Helen Hunt)--. Briggs hace alarde de ser capaz de arruinar cualquier treta de seguros penetrando en la mente del malhechor, pero ahora, debido a los poderes hipnoticos del "Escorpion de Jade", es la mente de un malhechor la que penetra en Briggs

</summary><content>Comedia 103 minutos Estrenada el 19/10/2001<content>Comedia. 103 minutos. Estrenada el 19/10/2001

Dirigida por Woody Allen. Con Woody Allen, Helen Hunt, Dan Aykroyd, Elzabeth Berkley, Charlize Theron. Woody Allen encarna a CW Briggs, el rey de los investigadores de seguros de Nueva York en 1940 --o cuanto menos eso es lo que no cesa de decirle a la nueva experta en eficiencia de la empresa, Betty Ann Fitzgerald (Helen Hunt)--.eficiencia de la empresa, Betty Ann Fitzgerald (Helen Hunt) .Briggs hace alarde de ser capaz de arruinar cualquier treta de seguros penetrando en la mente del malhechor, pero ahora, debido a los poderes hipnoticos del "Escorpion de Jade", es la mente de un malhechor la que penetra en Briggs

</content></content><category> Comedia </category>

</entry>

Información en ATOM (y 3)

<entry>

<title>Amelie</title><title>Amelie</title>

<link href="http://ws.udc.es/movies/amelie.html"/>

<id> http://ws.udc.es/movies/amelie.html </id>

<updated>2006-03-19T13:54:26Z</updated>

<summary>Amelie no es una chica como las demás. Ha visto a su pez de colores deslizarse hacia las alcantarillas ...

</summary>

<content>Comedia romántica 120 min Estrenada el 19/10/2001<content>Comedia romántica. 120 min. Estrenada el 19/10/2001. Dirigida por Jean-Pierre Jeunet. Con Audrey Tautou, Mathieu Kassovitz, Rufus, Yolande Moreau, Artus de Penguern, Dominique Pinon. Amelie no es una chica como las demás. Ha visto a su pez de colores deslizarse hacia las alcantarillascolores deslizarse hacia las alcantarillas ...

</content>

<category> Comedia </category>

<category> Romántica </category>g y g y

</entry>

</feed>

Formato Documentos Atom (1)

� Más complejo que RSS. No haremos una descripción exhaustivaexhaustiva.

� Es un documento XML. Utiliza el espacio de nombres http://www.w3.org/2005/Atom

� El elemento feed es similar al channel RSS.� El elemento entry es similar al item RSS.� Subelementos obligatorios de feed:

� title. Nombre del canal.� author. Autor (pueden ser varios). Puede especificar el

nombre y el e-mail. Si todos los entry tienen su propio author, no es necesario.,

� updated. Fecha última modificación (formato RFC 3339).

Page 42: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Formato Documentos Atom (2)

� Otros subelementos:� subtitle Breve descripción� subtitle. Breve descripción.� rights, category, generator, icon, logo, id, contributor...

� Subelementos de entry:� id. Identificador único de la entrada. Debe seguir el formato

IRI (I t ti li d R Id tifi RFC 3987)IRI (Internationalized Resource Identifier: RFC 3987)� Las IRIs “internacionalizan” las URIs permitiendo más

caracteres..� Toda URI es una IRI .

� title. Título de la entrada.� updated Fecha de última modificación de la entrada� updated. Fecha de última modificación de la entrada.� author. Autor de la entrada. Puede especificar nombre y e-

mail. Si se especifica en el feed no es necesario. � summary. Resumen textual del contenido de la entrada.

Formato Documentos Atom (y 3)

� Subelementos opcionales de entry:� content Contenido completo de la entrada No tiene� content. Contenido completo de la entrada. No tiene

porque ser textual, sino que puede especificar explícitamente su tipo (puede ser HTML, XHTML o binario). Puede especificarse el lenguajePuede especificarse el lenguaje.

� category. Categorías a las que se asocia la entrada.� source, published,…, p ,

ATOM vs RSS

� RSS no especifica explícitamente el tipo de contenido mientras que ATOM sí.q� RSS normalmente lleva texto o HTML, pero es necesario aplicar

heurísticas para detectarlo. � En ATOM puede ser también XHTML o binario� En ATOM puede ser también XHTML o binario.

� ATOM separa el resumen del contenido completo.� ATOM utiliza mecanismos estándar XML para manejar distintos

lenguajes.� ATOM utiliza un formato de fechas diferente.� ATOM utiliza IRIs� ATOM utiliza IRIs.� En ATOM es obligatorio que cada entrada tenga un identificador

único.� ATOM es extensible. Puede usarse para dar información más

detallada sobre el item.� ATOM soporta firma digital utilizando el estándar W3C llamado� ATOM soporta firma digital utilizando el estándar W3C llamado

XML Digital Signature.

Generación y Parsing RSS /ATOM

� Tanto RSS como ATOM pueden ser generados fácilmente desde cualquier aplicación webfácilmente desde cualquier aplicación web.

� Cualquier parser XML puede ser utilizado para deserializar estos formatos en objetos.deserializar estos formatos en objetos.� E.g. J DOM.

� Existen algunos parsers específicos para los g p p pprincipales lenguajes. En J AVA:� ROME (http://wiki.java.net/bin/view/J avawsxml/Rome).� EDDIE (http://www.davidpashley.com/projects/eddie.html).

� Soportan la generación y parsing de los principales formatos e incluso la traducción desde un formato aformatos e incluso la traducción desde un formato aotro.

Page 43: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

3.3 Caso de estudio: diseño e implementación de un servicio/cliente RESTimplementación de un servicio/cliente REST

Índice

� Descripción del caso de estudioñ� Diseño por capas

� Protocolo REST� Implementación REST de la capa Acceso al

ServicioSe c o� Implementación REST de la capa

Implementación del ServicioImplementación del Servicio� Comentarios finales

Descripción del caso de estudio (1)

� Retomando el ejemplo ilustrado en el tema 2

ws.udc.es1: Petición a http://ws.udc.es/Movies/releases

BD

Portal

3BD

http://ws.udc.es/Movies/releases

2: Respuesta en formato

Internet

Apl cliente

3

Servicio Movies2: Respuesta en formatoestructurado

Apl. cliente Servicio Movies

Descripción del caso de estudio (2)

� El caso de estudio está inspirado en el ejemplo anterior� Cliente MoviesSearchClient� Cliente MoviesSearchClient

� Imprime la información de las películas que se estrenan en una fecha

� Ejemplo: MoviesSearchClient {sh bat} 19 10 2001� Ejemplo: MoviesSearchClient.{sh, bat} 19 10 2001

� Cliente MoviesAdminClient� Permite añadir/actualizar/eliminar información sobre películas� Ejemplos:

� MoviesAdminClient.{sh, bat} -a Movie-1.xml Movie-2.xml ...

� MoviesAdminClient.{sh, bat} -u Movie-1.xml Movie-2.xml ...

� MoviesAdminClient.{sh, bat} –r 1 2 ...

� NOTA: El uso de XML para pasar la información de las películas con las opciones -a y -u es sólo por comodidad (como alternativa a pasar la información en múltiples parámetros)múltiples parámetros)

Page 44: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Descripción del caso de estudio (3)

� Servicio� Ofrece cuatro operaciones� Ofrece cuatro operaciones

� Obtener la información de las películas que se estrenan en una determinada fecha

� Añadir la información de una película� Añadir la información de una película� Actualizar la información de una película� Eliminar la información de una película a partir de su

identificadoridentificador

� Por sencillez, los dos clientes tienen una interfaz de línea de comandos y el servicio guarda los datos de cada pelíc la en n fiche o ticada película en un fichero .properties

� REST y SOAP� El ejemplo proporciona dos implementaciones del servicio:� El ejemplo proporciona dos implementaciones del servicio:

una REST y otra SOAP� Los clientes pueden configurarse (sin necesidad de

recompilación) para usar una u otrarecompilación) para usar una u otra

Descripción del caso de estudio (y 4)

� NOTA� Ambos clientes pueden ejecutarse desde la intranet del� Ambos clientes pueden ejecutarse desde la intranet del

servicio o desde Internet� Sin embargo, en un caso real, posiblemente

� MoviesSearchClient representa una versión simplificada de un cliente (aplicación de escritorio o aplicación Web) que accede desde Internet

� MoviesAdminClient sería de utilidad a los empleados de la empresa que ofrece el servicio de las películas, y posiblemente estaría implementado como una aplicación Web (instalada en la propia empresa, y seguramente sólo accesible desde ella) que accede directamente a la base de datos en la que se guardaría la información de las películas

Í ndice

� Descripción del caso de estudioi ñ� Diseño por capas

� Protocolo REST� Implementación REST de la capa Acceso al

ServicioSe c o� Implementación REST de la capa

Implementación del ServicioImplementación del Servicio� Comentarios finales

Diseño por capas (1)

� El diseño por capas es una de las técnica de diseño más usadas en Ciencias de la Computación (e.g.arquitecturas de protocolos de Redes).

� Una capa “inferior” proporciona un servicio a otra “ ”capa “superior”.

� El servicio ofrecido se define mediante un “contrato de e i io” ( imil inte f J AVA)de servicio” (similar a interfaz J AVA)

� Permite independizar el software de ambas capas:A l i l i t ó i l t� A la capa superior no le importa cómo se implementa el servicio

� Cambios en la manera de implementar una capa no� Cambios en la manera de implementar una capa noafectan a la otra.

� Múltiples usos en integración de aplicaciones.p g p

Page 45: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Diseño por capas (1)

� En el caso de estudio usaremos el diseño por capas para ocultar las tecnologías de acceso epara ocultar las tecnologías de acceso eimplementación de servicios

Implementacióndel Servicio

Interfaz de Usuario del Servicio

Acceso al ServicioLógica de Negocio

Acceso al Servicio

Cliente S idCliente Servidor

Diseño por capas (2)

� Capa Interfaz de Usuario� Implementa la interfaz de usuario� Implementa la interfaz de usuario� No depende de la tecnología de acceso al servicio

� Capa Acceso al Servicio� Implementa el acceso al servicio� Ofrece una API sencilla que oculta la tecnología usada para

acceder al servicio

� Capa Implementación del Servicio� Utiliza una tecnología para implementar el servicio y delega

en la capa Lógica de Negocioen la capa Lógica de Negocio

� Capa Lógica de Negocio� Implementa la lógica que expone el servicio� Implementa la lógica que expone el servicio� No depende de la tecnología de implementación del servicio� Ofrece una API sencilla a la capa de Implementación del

ServicioServicio

Diseño por capas (3)� Ventajas

� La persona (o el grupo de personas) que se encarga del d ll d it l t l ídesarrollo de una capa no necesita conocer las tecnologías usadas en otras capas

� Cada capa puede ser desarrollada en paralelo con el resto p p pde capas

� Se facilita el mantenimiento del softwareCambios en la implementación de una capa (e g uso de� Cambios en la implementación de una capa (e.g. uso denuevas tecnologías) no conllevan cambios en el resto de capas

� Riesgosg� El software es más complejo

� Si el software a construir es muy sencillo (e.g. un prototipo), puede no valer la penapuede no valer la pena.

� Si realmente ambas capas no cambian independientemente, tampoco compensa.

Diseño por capas (4)

� Comentarios adicionales� Capa Lógica de Negocio� Capa Lógica de Negocio

� Es muy frecuente que esta capa ya exista previamente a la creación del servicio (el servicio surge como necesidad de exponer toda o parte de la capa Lógica de Negocio a otrasexponer toda o parte de la capa Lógica de Negocio a otrasaplicaciones)

� El diseño por capas permite habilitar como servicio una aplicación ya existente ya que la capa de implementación delaplicación ya existente ya que la capa de implementación delservicio no modifica la implementación de la capa Lógica de Negocio (no sería deseable y quizás tampoco posible)

¿Cli id ?� ¿Cliente o servidor?� Aunque el gráfico anterior ilustra un cliente puro y un servidor

puro, en un sistema distribuido, una aplicación puede actuar tanto de cliente como de servidor (e.g. un servicio que como parte de su implementación necesita hacer uso de otros servicios)

Page 46: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Diseño por capas (5)

� El diseño por capas es útil siempre que queremos “aislar” una parte del software de cambios en otra parte del mismo.

� Si hay cambios en una capa, puede haber que hacer b l d “ d ó ”cambios en la parte de “traducción” entre capas,

pero no será necesario hacerlo en la otra capa.Pe mite q e mbo l do de l p e ol ionen po� Permite que ambos lados de la capa evolucionen por separado de acuerdo a sus necesidades y a su propio ritmoritmo.� Por ejemplo, si ahora el servidor devuelve un nuevo campo

o cambia el nombre de uno existente, el cliente no tiene f t d llporque verse afectado por ello.

� Las capas introducen costes extra de tiempo de desarrollo y eficiencia por lo que deben utilizarsedesarrollo y eficiencia, por lo que deben utilizarsesólo cuando son necesarias.

Diseño por capas (y 6)

� El diseño por capas también sirve para implementar la idea de “plugin”.

� Algunos paquetes software permiten que desarrolladores externos extiendan su funcionalidad

d “ l ” lprogramando componentes “plugin”. Ejemplos:� Toolbars y botoneras en navegadores.

Adaptadores para distintas bases de datos en paquetes� Adaptadores para distintas bases de datos en paquetesempresariales.

� Funciones “definidas por el usuario” en bases de datos.� Apps en facebook

� El paquete software original no puede modificarse o á h lno es práctico hacerlo.

� Pero si el software original usa diseño por capas, el d t d ñ di / tit iprogramador externo puede añadir / sustituir su

propia implementación de una capa.

Estructura de paquetes del caso de estudio

es.udc.ws.movies

Subsistema Util Subsistema Movies

client

model

servicees.udc.ws.util

tconfiguration

rest

proxy

exceptions servlets

xmlOtros ...

xml

jaxws

Subpaquetes ...xml

Visión de la estructura de paquetes en capas

Implementación del ServicioInterfaz de Usuario

es.udc.ws.movies.client es.udc.ws.movies.rest.servletses.udc.ws.movies.rest.xml

Acceso al Servicio

d i iLógica de Negocio

es.udc.ws.movies.servicees.udc.ws.movies.service.rest.proxyes.udc.ws.movies.service.rest.xml es.udc.ws.movies.model

Cliente Servidor

NOTAS� NOTAS� Subsistema Util: todas las capas lo usan� es udc ws movies xml: usado por todos los paquetes� es.udc.ws.movies.xml: usado por todos los paquetes,

excepto la capa Lógica de Negocio

Page 47: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.util.exceptions [Subsistema Util] (1)

Exception

RuntimeException

ParsingException ServiceException InstanceException

DuplicateInstanceException InstanceNotFoundException

es.udc.ws.util.exceptions [Subsistema Util] (y 2)

� Tanto en este paquete como en otros, se ha seguido la siguiente estrategia de definición de excepciones� Excepciones “graves”

� Representan errores de infraestructura� Ejemplo: un documento XML no está bien formado o no es válido

(ParsingE ception) un error en el acceso al servicio(ParsingException), un error en el acceso al servicio(ServiceException), etc.

� Se han modelado como excepciones de runtime� Sólo es preciso capturarlas en los lugares en los que explícitamente seSólo es preciso capturarlas en los lugares en los que explícitamente se

quieren tratar� En resto de sitios, “fluyen” hacia arriba� Permiten especificar un mensaje y/o encapsular una excepción (la que

d j l bl )produjo el problema)� Útil para depuración

� Excepciones que indican un error “lógico”Representan errores originados por el usuario� Representan errores originados por el usuario

� Ejemplo: se intenta eliminar la información de una película especificando un identificador que no existe (InstanceNotFoundException), etc.

� Se han modelado como excepciones de tipo “checked” (derivan directamente de Exception)

es.udc.ws.util.configuration [Subsistema Util] (1)

RuntimeException

MissingConfigurationParameterException UnavailableConfigurationParametersException

ConfigurationParametersManager

t M St i St i

+ getParameter(name : String) : String

- parameters : Map<String, String>

� ConfigurationParametersManager� Permite leer parámetros de configuración de un fichero

.properties� Se pueden parsear fácilmente con java.util.Properties

� El directorio en el que está el fichero tiene que formar parte del classpathCachea los parámetros en memoria� Cachea los parámetros en memoria

es.udc.ws.util.configuration [Subsistema Util] (y 2)

� Ejemplo de fichero de configuración

# ---------------------------------------------------------------------

# MovieInformationServiceRESTProxy (Movies)

# ---------------------------------------------------------------------

MovieInformationServiceRESTProxy/endpointAddress=\

http://localhost:8080/ws-movies-service/rest/MovieInformationProvider

� NOTA: para evitar conflictos de nombres, se ha usado la convención “clase/parámetro” para nombrar los parámetros de /p p pconfiguración

� Ejemplo de uso

String endpointAddress = ConfigurationParametersManager.getParameter(

"MovieInformationServiceRESTProxy/endpointAddress");

Page 48: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.util.configuration.ConfigurationParametersManager (1)

public final class ConfigurationParametersManager {

private static final String CONFIGURATION FILE =private static final String CONFIGURATION_FILE ="ConfigurationParameters.properties";

private static Map<String, String> parameters;

private ConfigurationParametersManager() {}private ConfigurationParametersManager() {}

public static String getParameter(String name) throws MissingConfigurationParameterException,

UnavailableConfigurationParametersException {UnavailableConfigurationParametersException {

String value;

try {try {value = getParameters().get(name);

} catch (IOException e) {throw new UnavailableConfigurationParametersException(e);

}}

if (value == null) { throw new MissingConfigurationParameterException(name);

} else {} else {return value;

}}

es.udc.ws.util.configuration.ConfigurationParametersManager (y 2)

private static Map<String, String> getParameters() throws IOException {

if (parameters == null) {if (parameters null) {

/* Read property file.*/ Class configurationParametersManagerClass =

ConfigurationParametersManager.class;ConfigurationParametersManager.class;ClassLoader classLoader =

configurationParametersManagerClass.getClassLoader();InputStream inputStream =

classLoader.getResourceAsStream(CONFIGURATION FILE);g ( _ );Properties properties = new Properties();properties.load(inputStream);inputStream.close();

/* * We use a "HashMap" instead of a "Properties" because* HashMap's methods are *not* synchronized (then, they are* faster) and the parameters are read-only.) p y*/

parameters = new HashMap(properties); }

return parameters; }

}

es.udc.ws.movies.service [Capa Acceso al Servicio] (1)

ConfigurationParametersManager

es.udc.ws.util.configuration

MovieInformationServiceFactory

ConfigurationParametersManager

MovieInformationServiceFactory

+ getMovieInformationService() : MovieInformationService

<<interface>>MovieInformationService

+ findMoviesByReleaseDate(releaseDate : Calendar) : List<MovieInformationTO>+ addMovie(movieInformation : MovieInformationTO) : Long+ updateMovie(movieInformation : MovieInformationTO) : void+ removeMovie(identifier : Long) : void+ removeMovie(identifier : Long) : void

es.udc.ws.movies.model

MovieInformationTO

es.udc.ws.movies.service [Capa Acceso al Servicio] (2)

� Define un sencillo API para acceder al servicioOculta la tecnología usada para acceder al servicio� Oculta la tecnología usada para acceder al servicio

� MovieInformationServicePatrón Facade� Patrón Facade

� Interfaz con un método por cada una de las operaciones del servicio

� MovieInformationServiceFactory� Patrón Factory� Permite construir una instancia de MovieInformationService sin que el llamador necesite conocer la clase que implementa el interfazq p

� getMovieInformationService� Lee de un fichero de configuración el nombre de la clase que

implementa el interfazimplementa el interfaz� Construye una instancia de esa clase

Page 49: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service [Capa Acceso al Servicio] (y 3)

� MovieInformationService + MovieInformationServiceFactoryy� Además de las anteriores ventajas (sencillez + ocultación de

tecnología), permiten que el cliente pueda acceder a distintas implementaciones del servicio sin necesidad dedistintas implementaciones del servicio sin necesidad derecompilarlo

� Basta especificar en la configuración la implementación de MovieInformationService que se deseaq

� El caso de estudio proporciona dos implementaciones de MovieInformationService: una para acceder a un servicio REST y otra para acceder a uno SOAPservicio REST y otra para acceder a uno SOAP

� En ambos casos, los clientes son los mismos (no se han implementado dos veces)

� Ejemplo de uso� Ejemplo de usoCalendar releaseDate = ...MovieInformationService service =

MovieInformationServiceFactory.getInstance();y gList<MovieInformationTO> movies =

service.findMoviesByReleaseDate(releaseDate);

es.udc.ws.movies.service.MovieInformationServiceFactory (1)

public class MovieInformationServiceFactory {

private final static String PROXY_CLASS_NAME_PARAMETER ="MovieInformationServiceFactory/proxyClassName";

private static Class proxyClass;

private MovieInformationServiceFactory() {}

public final static MovieInformationServicegetMovieInformationService() throws ServiceException {

try { return (MovieInformationService)

getProxyClass().newInstance();} catch (Exception e) {

throw new ServiceException(e);}

}

es.udc.ws.movies.service.MovieInformationServiceFactory (y 2)

private static Class getProxyClass()

throws ClassNotFoundException {

if (proxyClass == null) {

String proxyClassName =

ConfigurationParametersManager.getParameter(g g g (

PROXY_CLASS_NAME_PARAMETER);

proxyClass = Class.forName(proxyClassName);

}

return proxyClass;

}}

}

� java.lang.Class� forName: carga una instancia de una clase (bytecodes) en memoria y

devuelve una instancia de la clase Class que representa la clase cargada� newInstance: permite crear una instancia de la clase

es.udc.ws.movies.client [Capa Interfaz de Usuario] (1)

M i XMLC

es.udc.ws.movies.xml

MovieXMLConversor

AdminClient MovieInformationServiceFactory

es.udc.ws.movies.service

<<interface>>MovieInformationServiceMovieInformationService

SearchClient MovieInformationTO

es.udc.ws.movies.model

SearchClient

Page 50: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.client [Capa Interfaz de Usuario] (y 2)

� AdminClient utiliza MovieXMLConversor(apartado 2 2) porque la información de las películas(apartado 2.2) porque la información de las películascon las opciones -a y -u está en XML� Utiliza MovieXMLConversor.toMovieInformation para

crear una instancia de MovieInformationTO a partir de un documento XML

� Luego invoca a addMovie o updateMovie� Luego invoca a addMovie o updateMovie(MovieInformationService) con esa instancia de MovieInformationTO

es.udc.ws.movies.model [Capa Lógica de Negocio] (1)

MovieInformationFacadeMovieInformationFacade

+ getInstance() : MovieInformationFacade+ findMoviesByReleaseDate(releaseDate : Calendar) : List<MovieInformationTO>

- instance : MovieInformationFacade

+ findMoviesByReleaseDate(releaseDate : Calendar) : List<MovieInformationTO>+ addMovie(movieInformation : MovieInformationTO) : Long+ updateMovie(movieInformation : MovieInformationTO) : void+ removeMovie(identifier : Long) : void

MovieInformationTO

- identifier : Long- title : String- runtime : short- releaseDate : Calendar

El tipo Genre está declarado dentro de MovieInformationTO:

public enum Genre {- directorNames : List<String>- actorNames : List<String>- genres : List<Genre>- synopsis : String

public enum Genre {COM, DRA, HOR, ROM, SFI, THR};

+ Constructor+ Métodos get/set

es.udc.ws.movies.model [Capa Lógica de Negocio] (2)

� Versión simplificada de la capa Lógica de Negocio� Guarda la información de las películas en un directorio� Utiliza un fichero .properties para guardar la información de

cada película � En un caso real se utilizaría una BD

� MovieInformationFacade� Patrón Facade� En este caso, además, es un SingletonEn este caso, además, es un Singleton� Proporciona una operación por cada caso de uso� Un diseño más elaborado podría utilizar

� Un interfaz con las operaciones públicas de la actual clase� Un interfaz con las operaciones públicas de la actual claseMovieInformationFacade

� Una factoría para poder crear instancias del interfaz� Una clase de implementación del interfaz (la actual clase

i f i d )MovieInformationFacade)� addMovieInformation

� El identificador en el MovieInformationTO recibido es nullG id tifi d ñ d l i f ió id tifi d l� Genera un identificador, añade la información con ese identificador y lo devuelve

es.udc.ws.movies.model [Capa Lógica de Negocio] (y 3)

� MovieInformationTO� Patrón Transfer Object (TO)� Patrón Transfer Object (TO)� Representa un conjunto de datos

� En este caso, modela la información de una película

Page 51: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.xml (1)

MovieXMLConversor

+ toMovieInformation(in : InputStream) : MovieInformationTO+ toMovieInformationList(movieElements : List<Element>) : List<MovieInformationTO>+ toXML(movieInformation : MovieInformationTO, out : OutputStream) : void+ toXML(movieInformationList : List<MovieInformationTO>): List<Element>

MovieInformationTO

es.udc.ws.movies.model

MovieInformationTO

es.udc.ws.movies.xml (y 2)

� Se usa en todas las capas, excepto en la capa Lógica de Negociog

� MovieXMLConversor� Realiza conversiones de MovieInformationTO a/desde

XMLXML� Los métodos toMovieInformation y el primer método toXML se estudiaron en el apartado 2.2

� toMovieInformationList� Recibe una lista de elementos J DOM, donde cada elemento

(tag movie) representa la información de una película� Lo utiliza la implementación REST de la capa de Acceso al

Servicio (operación findMoviesByReleaseDate)� Segundo método toXMLg

� Operación inversa a toMovieInformationList� Lo utiliza la capa de Implementación del Servicio (para

devolver los datos de las películas que se estrenan en una p qdeterminada fecha)

Í ndice

� Descripción del caso de estudioñ� Diseño por capas

� Protocolo REST� Implementación REST de la capa Acceso al

ServicioSe c o� Implementación REST de la capa

Implementación del ServicioImplementación del Servicio� Comentarios finales

Protocolo REST (1)

� El protocolo REST no es Restful:� Es el utilizado más habitualmente en la actualidad, aunque esto , q

empieza a cambiar.� Protocolo inspirado en las APIs REST de upcoming.org, Google

Calendar y el servicio de geolocalización de Google MapsCalendar y el servicio de geolocalización de Google Maps� En la sección 3.6, veremos la alternativa RESTful.

� Existe una URL por cada una de las operaciones que ofrece el i iservicio

� Las operaciones de lectura se invocan mediante GET y las de modificación mediante POST

� Tras invocar una URL del servicio, el cliente puede obtener� Código de estado 200: la respuesta contiene un documento XML

con la respuesta del serviciocon la respuesta del servicio� Otro código de estado: ha ocurrido algún tipo de error grave

� La URL no existe (404)Un problema grave (e g problemas de acceso al repositorio de� Un problema grave (e.g. problemas de acceso al repositorio deinformación) durante la ejecución del servicio (500)

� Etc.

Page 52: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Protocolo REST (2)

� Cuando el código de estado es 200, las respuestas son del estiloson del estilo

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

<response xmlns="http://ws.udc.es/movies/xml" contentType="...">

... Otros elementos ...

</response>

V l d l t ib t� Valores del atributo contentType� DATA: la respuesta indica que la operación se ha ejecutado

correctamente y si la operación devuelve datos éstoscorrectamente, y si la operación devuelve datos, éstosvienen dentro del tag response

� EXCEPTION: la respuesta indica que la operación no se ha did li d bid d ió d lpodido realizar debido a un error de programación o del

usuario (e.g. parámetros incorrectos, información incorrecta, la película cuya información se está intentado actualizar no existe, etc.)

Protocolo REST (3)

� Obtener la información de las películas que se estrenan en una determinada fecha

Petición GET a http://XXX/ws-movies-service/rest/MovieInformationProvider/ �� findMoviesByReleaseDate?day=19&month=10&year=2001

Cliente Servicio

<? l i "1 0" di "UTF 8"?><?xml version="1.0" encoding="UTF-8"?><response xmlns="http://ws.udc.es/movies/xml" contentType="DATA">

<movie><identifier>3</identifier> <titl >L M ldi ió d l E ió d J d </titl ><title>La Maldición del Escorpión de Jade</title>...

</movie> <movie>

<id tifi >4</id tifi ><identifier>4</identifier><title>Amelie</title>...

</movie></ ></response>

Protocolo REST (4)

� Añadir la información de una película

Petición POST a http://XXX/ws-movies-service/rest/MovieInformationProvider/addMovie

<? l i "1 0" di "UTF 8"?><?xml version="1.0" encoding="UTF-8"?><movie xmlns="http://ws.udc.es/movies/xml">

<title>Amelie</title><runtime>140</runtime>...

</movie>

Cliente Servicio

<?xml version="1.0" encoding="UTF-8"?> <response xmlns="http://ws.udc.es/movies/xml" contentType="DATA">

<identifier>4</identifier> </response>

Protocolo REST (5)

� Actualizar la información de una película

Petición POST a http://XXX/ws-movies-service/rest/MovieInformationProvider/updateMovie

<? l i "1 0" di "UTF 8"?><?xml version="1.0" encoding="UTF-8"?><movie xmlns="http://ws.udc.es/movies/xml">

<identifier>4</identifier> <title>Amelie</title>< ti >120</ ti ><runtime>120</runtime>...

</movie>

Cliente ServicioCliente Servicio

<?xml version="1.0" encoding="UTF-8"?> <response xmlns="http://ws.udc.es/movies/xml" contentType="DATA"/>

Page 53: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Protocolo REST (6)

� Eliminar la información de una película

Petición POST a http://XXX/ws-movies-service/rest/MovieInformationProvider/removeMovie(parámetro HTTP “identifier” � identificador de la película a eliminar)

Cliente Servicio

<?xml version="1.0" encoding="UTF-8"?> < l "htt // d / i / l" t tT "DATA"/><response xmlns="http://ws.udc.es/movies/xml" contentType="DATA"/>

Protocolo REST (7)

� Respuestas con contentType="EXCEPTION" son del estilodel estilo

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

<response xmlns="http://ws.udc.es/movies/xml" p p

contentType="EXCEPTION">

<exception code="XXX" message="YYY" />

</response>

� Elemento exception� Atributo code (entero)� Atributo code (entero)

� 1: parámetros incorrectos� 2: formato de XML incorrecto (XML mal formado)� 3: información de la película incorrecta (XML no válido)� 4: instancia no encontrada (útil para las operaciones de

actualización y eliminación)y )

� Atributo message: mensaje textual (útil para depuración)

Protocolo REST (8)

� Ejemplo de respuesta con contentType="EXCEPTION"

Petición GET a http://XXX/ws-movies-service/rest/MovieInformationProvider/ �p // / / / /� findMoviesByReleaseDate?day=19&month=10

Cliente Servicio

<response xmlns="http://ws.udc.es/movies/xml" contentType="EXCEPTION"> / �<exception code="1" message="Incorrect/missing 'day', 'month', or �

� 'year' parameter" /> </response>

Protocolo REST (y 9)

� Añadir/actualizar la información de una película� Se ha decido pasar los datos de la película en XML� Se ha decido pasar los datos de la película en XML

� Esta es la solución que emplea, por ejemplo, el API REST de Google Calendar

l í á� Otra alternativa consistiría en usar parámetros HTTP para pasar la información de una película

� Ejemploj p� Parámetros univaluados: identifier, title, runtime, releaseDate y sypnosis

� Parámetros multivaluados: director, actor y genre

� Esta es la solución que emplea, por ejemplo, el API REST de upcoming.org

Page 54: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Índice

� Descripción del caso de estudioñ� Diseño por capas

� Protocolo REST� Implementación REST de la capa Acceso

al Servicioa Se c o� Implementación REST de la capa

Implementación del ServicioImplementación del Servicio� Comentarios finales

es.udc.ws.movies.service.rest.xml[Capas de Acceso e Implementación del Servicio] (1)

ServiceResponseXMLConversor

+ toServiceResponse(in : InputStream) : ServiceResponse+ t XML( i R S i R t O t tSt ) id

ServiceResponse

+ toXML(serviceResponse : ServiceResponse, out : OutputStream) : void

p

- contentType : ContentType- dataElements: List<Element>- exception: ExceptionInServiceResponse

El tipo contentType está declarado dentro deServiceResponse:

+ ServiceResponse()+ ServiceResponse(dataElement : Element)+ ServiceResponse(dataElements : List<Element>)+ ServiceResponse(exception : ExceptionInServiceResponse)

public enum ContentType {DATA, EXCEPTION};

p ( p p p )+ Métodos get

ExceptionInServiceResponse

- code : int- message: String

org.jdom

0 n+ Constructor+ Métodos getElement

0..n

es.udc.ws.movies.service.rest.xml[Capas de Acceso e Implementación del Servicio] (y 2)

� ServiceResponse� Modela las respuestas del servicio� Modela las respuestas del servicio� Puede contener

� Datos (contentType == DATA)� Por comodidad existen tres constructores� Por comodidad existen tres constructores� ServiceResponse(): la respuesta no incluye información� ServiceResponse(Element): la respuesta incluye un

elemento (e.g. el identificador de una película añadida)( g p )� ServiceResponse(List<Element>): la respuesta incluye una

lista de elementos (e.g. la lista de películas a estrenar)

� Una indicación de que la petición no se ha podido realizar ( t tT EXCEPTION)(contentType == EXCEPTION)

� Cuarto constructor

� ServiceResponseXMLConversor� Realiza conversiones de ServiceResponse a/desde XML� La capas de Acceso al Servicio e Implementación del

Servicio también se apoyan en MovieXMLConversorServicio también se apoyan en MovieXMLConversor

es.udc.ws.movies.service.rest.proxy [Capa de Acceso al Servicio]

<<interface>>MovieInformationService

es.udc.ws.movies.service

MovieInformationService

MovieInformationRESTProxyMovieInformationRESTProxy

es.udc.ws.movies.service.rest.xml es.udc.ws.movies.service.xml

ServiceResponseXMLConversor MovieXMLConversor

� MovieInformationRESTProxy� Patrón Proxy (en conjunción con el interfaz que implementa)� Representa un sustituto (proxy) local del servicio remoto� Utiliza J akarta Commons HttpClient para realizar las peticiones HTTP

� Framework Open Source de Apache (http:// jakarta.apache.org/commons/httpclient)Recientemente HttpClient ha pasado a formar parte de Apache HttpComponents� Recientemente HttpClient ha pasado a formar parte de Apache HttpComponents(http://hc.apache.org)

Page 55: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Visión global de HttpClient [org.apache.commons.httpclient] (1)

Htt Cli tHttpClient

+ HttpClient()+ executeMethod(method : HttpMethod) : int

HttpStatus

Declara constantes para cada uno de los códigos de estado: SC_OK(200), SC NOT FOUND (404),

<<interface>>HttpMethod ( 00), SC_ O _ OU ( 0 ),

SC_INTERNAL_SERVER_ERROR(500), etc.

HttpMethod

+ getResponseBodyAsStream() : InputStream+ releaseConnection() : void

Visión global de HttpClient [org.apache.commons.httpclient.methods] (2)

<<interface>>Htt M th d

org.apache.commons.httpclient

HttpMethodBase

HttpMethod

G tM th dExpectContinueMethod Resto de métodos HTTP:GetMethod

+ GetMethod(uri : String)

ExpectContinueMethod Resto de métodos HTTP:OptionsMethod, HeadMethod, etc.

i t fEntityEnclosingMethod

+ setRequestEntity(requestEntity : RequestEntity) : void

<<interface>>RequestEntity

PutMethod

PostMethod

InputStreamRequestEntity

+ InputStreamRequestEntity(content : InputStream,

+ PostMethod(uri : String)+ addParameter(paramName: String, paramValue : String) : void

p ,contentType : String) : void

Visión global de HttpClient (3)

� HttpMethod� Representa una petición HTTP y su correspondiente� Representa una petición HTTP y su correspondiente

respuesta� Por cada tipo de operación HTTP (GET, POST, etc.) existe

l ( t )una clase XXXMethod (GetMethod, PostMethod, etc.)que implementa el interfaz HttpMethod

� Método InputStream getResponseBodyAsStream()p g p y ()� Permite leer la respuesta de una operación HTTP

� Método void releaseConnection()� Libera la conexión HTTP (HttpClient puede reusarla para otras

peticiones)

� HttpClientp� int executeMethod(HttpMethod method)

� Envía la petición HTTP especificada por parámetro� Devuelve un código de estado con el resultado de la petición

Visión global de HttpClient (4)

� GetMethod� Constructor GetMethod(String uri)

� Permite construir un objeto para realizar una petición GET a la URI especificada� Permite construir un objeto para realizar una petición GET a la URI especificadapor parámetro

� Los parámetros (si los hay) forman parte de la URI

� Esquema típico para enviar una petición GET y leer su respuesta

GetMethod method = new GetMethod("http://example.org/resource?param1=val1&param2=val2");

try { /* 1: Enviar petición. *// : p /HttpClient client = new HttpClient();int statusCode = client.executeMethod(method);

/* 2: Procesar respuesta. *// p /if (statusCode == HttpStatus.SC_OK) {

InputStream in = method.getResponseBodyAsStream();<< Tratar respuesta >>

} else {} {<< Tratar error >>

}} catch (<<...>>) {

<< Tratar excepciones >> p} finally {

method.releaseConnection();}

Page 56: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Visión global de HttpClient (5)

� GetMethod (cont)� Sólo se deben usar caracteres ASCI I en la URL� Sólo se deben usar caracteres ASCI I en la URL� Si en el valor de un parámetro es necesario usar un

carácter especial (e.g. “?”, “&”, blanco, etc.) o un carácter ñ áno ASCI I (e.g. “ñ”, “á”, etc.), se puede usar

java.net.URLEncoder

� Ejemploj p

String url = ...

url += "parameter=" + URLEncoder.encode(value, "UTF-8");

� En http://wiki.apache.org/HttpComponents/FrequentlyAskedApplicationDesignQuestions se documentan otras opciones g Q pposibles

Visión global de HttpClient (6)

� PostMethod� Constructor PostMethod(String uri)� Constructor PostMethod(String uri)

� Permite construir un objeto para realizar una petición POST a la URI especificada por parámetro

é d� Método void addParameter(String paramName, String paramValue)� Permite añadir parámetros a la petición� Los parámetros no forman parte de la URI sino del cuerpo de p p p

la petición

� Método void setRequestEntity(RequestEntity requestEntity)Permite asociar un objeto RequestEntity� Permite asociar un objeto RequestEntity

� Un objeto RequestEntity permite enviar texto en el cuerpo de la petición HTTP

Visión global de HttpClient (7)

� InputStreamRequestEntity� Constructor InputStreamRequestEntity(InputStream content� Constructor InputStreamRequestEntity(InputStream content,

String contentType)

� Construye un RequestEntity que lee el texto desde un InputStream y cuyo tipo de contenido viene especificado enInputStream y cuyo tipo de contenido viene especificado encontentType (e.g. "text/xml; charset=UTF-8" si se envía XML en UTF-8)

Visión global de HttpClient (8)

� Esquema típico para enviar una petición POST con texto en el cuerpo y leer su respuestaPostMethod method = new PostMethod("http://example.org/resource");try {

/* 1: Preparar petición. */ InputStream xmlInputStream = ... InputStreamRequestEntity requestEntity =

new InputStreamRequestEntity(xmlInputStream, "text/xml; charset=UTF-8");

/* 2: Enviar petición. */HttpClient client = new HttpClient();method.setRequestEntity(requestEntity);int statusCode = client.executeMethod(method);

/* 3: Procesar respuesta. */ if (statusCode == HttpStatus.SC_OK) {

InputStream in = method.getResponseBodyAsStream();<< Tratar respuesta >>

} else {<< Tratar error >>

} } catch (<<...>>) {

<< Tratar excepciones >> } finally {

method.releaseConnection();}

Page 57: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Visión global de HttpClient (y 9)

� Esquema típico para enviar una petición POST con parámetros y sin texto en el cuerpo, y leer su respuesta

PostMethod method = new PostMethod("http://example.org/resource");PostMethod method new PostMethod( http://example.org/resource );

method.addParameter("param1", "val1");method.addParameter("param2", "val2");

try {

/* 1: Enviar petición. */HttpClient client = new HttpClient();p p ();int statusCode = client.executeMethod(method);

/* 2: Procesar respuesta. */ << Tratar código de estado >>gif (statusCode == HttpStatus.SC_OK) {

InputStream in = method.getResponseBodyAsStream();<< Tratar respuesta >>

} }} catch (<<...>>) {

<< Tratar excepciones. >> } finally {

method.releaseConnection();();}

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (1)

public class MovieInformationServiceRESTProxy implements MovieInformationService {

private final static String ENDPOINT_ADDRESS_PARAMETER ="MovieInformationServiceRESTProxy/endpointAddress";

private static String endpointAddress;

public MovieInformationServiceRESTProxy() {}

public List<MovieInformationTO> findMoviesByReleaseDate(Calendar releaseDate) throws ServiceException {

/* Prepare request. */int day = releaseDate.get(Calendar.DAY_OF_MONTH);int month = releaseDate.get(Calendar.MONTH) –

Calendar.JANUARY + 1;int year = releaseDate.get(Calendar.YEAR);GetMethod method = new GetMethod(

getEndpointAddress() + "/findMoviesByReleaseDate" +"?day=" + day + "&month=" + month + "&year=" + year);

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (2)

try {

/* Send request. */HttpClient client = new HttpClient();int statusCode = client.executeMethod(method);

/* Process reply. */ handleHTTPStatusCode(statusCode);

InputStream in = method.getResponseBodyAsStream();ServiceResponse serviceResponse =

ServiceResponseXMLConversor.toServiceResponse(in);

if (serviceResponse.getContentType() ==ServiceResponse.ContentType.DATA) {

return MovieXMLConversor.toMovieInformationList(serviceResponse.getDataElements());

} else { // ServiceResponse.ContentType.EXCEPTION throw getUnexpectedServiceException(

serviceResponse.getException()); }

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (3)

} catch (ServiceException e) {throw e;

} catch (Exception e) {throw new ServiceException(e);p

} finally {method.releaseConnection();

} }

public Long addMovie(MovieInformationTO movieInformation) throws MovieInformationException, ServiceException {

PostMethod method = new PostMethod(getEndpointAddress() + "/addMovie");

try {

/* Prepare request. */ByteArrayOutputStream xmlOutputStream =

new ByteArrayOutputStream(); MovieXMLConversor.toXML(movieInformation, xmlOutputStream);ByteArrayInputStream xmlInputStream =

new ByteArrayInputStream(xmlOutputStream.toByteArray());

InputStreamRequestEntity requestEntity = new InputStreamRequestEntity(xmlInputStream,

"text/xml; charset=UTF-8");

Page 58: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (4)

/* Send request. */HttpClient client = new HttpClient();method.setRequestEntity(requestEntity);method.setRequestEntity(requestEntity);int statusCode = client.executeMethod(method);

/* Process reply. */ h dl HTTPSt t C d ( t t C d )handleHTTPStatusCode(statusCode);

InputStream in = method.getResponseBodyAsStream();ServiceResponse serviceResponse =

ServiceResponseXMLConversor.toServiceResponse(in);

if (serviceResponse.getContentType() ==ServiceResponse.ContentType.DATA) {ServiceResponse.ContentType.DATA) {

Element identifierElement =serviceResponse.getDataElements().get(0);

L id tifiLong identifier =Long.valueOf(identifierElement.getTextTrim());

return identifier;

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (5)

} else { // ServiceResponse.ContentType.EXCEPTION

ExceptionInServiceResponse exception = serviceResponse.getException();

if (exception.getCode() ==ExceptionCodes.INCORRECT_MOVIE_INFORMATION) { throw new MovieInformationException(

exception.getMessage()); } else {

throw getUnexpectedServiceException(exception);}

}

} catch (MovieInformationException e) {throw e;

} catch (ServiceException e) {throw e;

} catch (Exception e) {throw new ServiceException(e);

} finally {method.releaseConnection();

}

}

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (6)

public void removeMovie(Long identifier)throws InstanceNotFoundException, ServiceException {

/* Prepare request.*/PostMethod method =

new PostMethod(getEndpointAddress() + "/removeMovie");method.addParameter("identifier", identifier.toString());

try {

/* send request. */HttpClient client = new HttpClient();int statusCode = client.executeMethod(method);

/* Process reply. */ handleHTTPStatusCode(statusCode);

InputStream in = method.getResponseBodyAsStream(); ServiceResponse serviceResponse =

ServiceResponseXMLConversor.toServiceResponse(in);

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (7)

if (serviceResponse.getContentType() ==ServiceResponse.ContentType.EXCEPTION) {

ExceptionInServiceResponse exception = serviceResponse.getException();

if (exception.getCode() ==ExceptionCodes.INSTANCE_NOT_FOUND) { throw new InstanceNotFoundException(

identifier, MovieInformationTO.class.getName()); } else {

throw getUnexpectedServiceException(exception); }

}

} catch (InstanceNotFoundException e) {throw e;

} catch (ServiceException e) {throw e;

} catch (Exception e) {throw new ServiceException(e);

} finally {method.releaseConnection();

} }

Page 59: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (8)

// updateMovie -> similar a addMovie ...

private static String getEndpointAddress()throws MissingConfigurationParameterException,

UnavailableConfigurationParametersException {

if (endpointAddress == null) {endpointAddress =

ConfigurationParametersManager.getParameter(ENDPOINT_ADDRESS_PARAMETER);

}

return endpointAddress;

}

private void handleHTTPStatusCode(int statusCode) throws ServiceException {

if (statusCode != HttpStatus.SC_OK) { throw new ServiceException(

"HTTP error; status code = " + statusCode);}

}

es.udc.ws.movies.service.rest.proxy.MovieInformationServiceRESTProxy (y 9)

private ServiceException getUnexpectedServiceException (

ExceptionInServiceResponse exception) {

return new ServiceException("Server exception; " +

"code = " + exception.getCode() + "; message = " +

exception.getMessage());p g g ())

}

}

Comentarios

� MovieInformationServiceRESTProxy lee de la configuración la dirección base del serviciog

MovieInformationServiceRESTProxy/endpointAddress=\http://localhost:8080/ws-movies-service/rest/MovieInformationProvider

� Excepciones� ServiceException (runtime)

� Error de comunicación o invocación incorrecta (e g parámetros� Error de comunicación o invocación incorrecta (e.g. parámetroserróneos)

� MovieInformationException (runtime)� El XML de la información de la película no está bien formado o no� El XML de la información de la película no está bien formado o no

es válido� InstanceNotFoundException (checked)

No se encuentra el objeto� No se encuentra el objeto� En el ejemplo (updateMovie y removeMovie) se utiliza para

señalar que la película sobre la que se intenta hacer una acción no existeexiste

Í ndice

� Descripción del caso de estudioñ� Diseño por capas

� Protocolo REST� Implementación REST de la capa Acceso al

ServicioSe c o� Implementación REST de la capa

Implementación del ServicioImplementación del Servicio� Comentarios finales

Page 60: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Aplicaciones Web J ava EE (1)

� En J ava EE, las aplicaciones Web se instalan en servidores (contenedores) de aplicacionesp

HTTP

war

Aplicaciones Web

Servidor de aplicacionesCliente

war

� El API de programación Web que ofrece el servidor de aplicaciones está estandarizada� El API está formada en su mayoría por interfaces y clasesEl API está formada en su mayoría por interfaces y clases

abstractas

� Las aplicaciones Web se distribuyen en ficheros WARUn fichero WAR (Web ARchive) es un fichero J AR con una� Un fichero WAR (Web ARchive) es un fichero J AR con unaestructura de directorios estandarizada

� Contiene clases objeto (.class), librerías utilizadas (.jar), fi h d fi ió t b t i i dficheros de configuración y otras abstracciones propias de una aplicación Web

Aplicaciones Web J ava EE (2)

� Una aplicación Web que utilice las APIs estándares puede instalarse en cualquier servidor de aplicacionespuede instalarse en cualquier servidor de aplicacionesJ ava EE

� Existen muchos servidores de aplicaciones� Existen muchos servidores de aplicaciones� Ejemplos de servidores de código cerrado

� BEA WebLogic Server: http://www.bea.com� IBM WebSphere ApplicationServer: http://www.ibm.com� Sun J ava System Application Server: http://www.sun.com� Oracle Application Server: http://www.oracle.comO ac e pp cat o Se e ttp // o ac e co

� Ejemplos de servidores de código abierto� J Boss AS: http://www.jboss.org

A h T h // h� Apache Tomcat: http://tomcat.apache.org� Sólo proporciona las APIs de servlets y J SP� NOTA: para la programación de servicios REST sólo necesitamos

l API d l tel API de servlets

Aplicaciones Web J ava EE (y 3)

� Las APIs de programación Web J ava no están pensadas para devolver HTML/XHTML sino cualquierpensadas para devolver HTML/XHTML, sino cualquiertipo de información sobre HTTP� Una aplicación Web puede devolver sólo markup para p p p p

navegadores, actuar como un servicio para aplicaciones cliente, o ambas cosas

En consecuencia se pueden utilizar para� En consecuencia, se pueden utilizar paraimplementar servicios Web

� Utilizaremos el API de Servlets en conjunción� Utilizaremos el API de Servlets, en conjuncióncon J DOM, para implementar servicios REST

� Un servlet es una clase que puede recibir las� Un servlet es una clase que puede recibir laspeticiones asociadas a una o varias URLs y devolver las respuestas

Visión global del framework de servlets (1)

<<interface>>Servlet

javax.servlet

+ init(config : ServletConfig) : void+ destroy() : void+ service(request : ServletRequest, response : ServletResponse) : void

GenericServlet

+ init(config : ServletConfig) : void+ destroy() : void+ service(request : ServletRequest, response : ServletResponse) : void

javax.servlet.http

HttpServlet

+ service(request : ServletRequest, response : ServletResponse) : void# service(request : HttpServletRequest, response : HttpServletResponse) : voids ( qu s pS qu s , spo s pS spo s ) o d# doGet(request : HttpServletRequest, response : HttpServletResponse) : void# doPost(request : HttpServletRequest, response : HttpServletResponse) : void

Page 61: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Visión global del framework de servlets (2)

<<interface>>javax servlet ServletRequest

<<interface>>javax servlet ServletResponse

javax.servlet

javax.servlet.ServletRequest

+ getParameter(name : String) : String+ getParameterValues(name : String) : String[]+ getInputStream() : ServletInputStream

javax.servlet.ServletResponse

+ setContentType(type : String) : void+ getOuputStream () : ServletOutputStream

+ getInputStream() : ServletInputStream

<<interface>> <<interface>>Htt S l tR

javax.servlet.http

HttpServletRequest HttpServletResponse

Visión global del framework de servlets (3)

� Normalmente el desarrollador implementa un servlet extendiendo de HttpServlet y redefine losextendiendo de HttpServlet y redefine losmétodos doXXX (e.g. doGet, doPost, doPut, doDelete, etc.) necesarios

� Ciclo de vida de un servlet� Cuando el servidor de aplicaciones Web necesita cargar un

servlet en memoria (e.g. al arrancar, la primera vez que se accede a él, etc.), crea una instancia de la clase de implementación y llama a la operación init (interfaz Servlet)

� En una máquina virtual Java, sólo existe una instancia de cada servlet para cada aplicación Web instaladap p

� Cuando el servidor de aplicaciones Web decide eliminar un servlet de memoria (e.g. lleva cierto tiempo sin usarse), llama a la operación destroy (interfaz Servlet)llama a la operación destroy (interfaz Servlet)

Visión global del framework de servlets (4)

� Ciclo de vida de un servlet (cont)� Cuando el servidor de aplicaciones Web recibe una petición� Cuando el servidor de aplicaciones Web recibe una petición

dirigida a un servlet, invoca la operación service (interfaz Servlet)L ió úbli d ll l� La operación pública service de HttpServlet llama a la operación protegida service

� Esta operación es una operación plantilla (Template Method),p p p ( p ),que llama a doGet, doPost, doPut, doDelete, etc., según la petición HTTP sea GET, POST, PUT, DELETE, etc.

Visión global del framework de servlets (5)

� Modelo multi-thread de procesamiento de peticiones� Cada vez que el servidor de aplicaciones Web recibe� Cada vez que el servidor de aplicaciones Web recibe

una petición dirigida a un servlet, la petición se procesa en un thread independiente (concurrentemente con otras peticiones)(concurrentemente con otras peticiones)

� Internamente los servidores de aplicaciones suelen usar un “pool de threads”

� Existe un conjunto (pool) de threads de tamaño configurable� Cada petición se inserta en una cola

La petición es servida por uno de los threads libres del pool� La petición es servida por uno de los threads libres del pool� Si no hay ningún thread libre, la petición permanece en la cola

hasta que uno termina su trabajo

Page 62: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Visión global del framework de servlets (6)

� Modelo multi-thread de procesamiento de peticiones (cont)� Dado que sólo existe una instancia de cada servlet para cada q p

aplicación Web instalada, los métodos doXXX tienen que ser thread-safe

� No es necesario utilizar synchronized (¡¡¡ni eficiente!!!) si y ( )la implementación de los métodos doXXX sólo hace uso de variables locales (pila o heap) o de variables globales (static) de sólo lectura (típicamente caches), que es lo normal

� Si los métodos doXXX modifican alguna estructura global (un atributo del servlet o alguna variable global), necesitan sincronizar g g ),su acceso

� Sin embargo, en general, eso es mala idea, dado que una aplicación con estas características no funcionará en un entorno cluster

� En un entorno cluster, el servidor de aplicaciones Web está replicado en varias máquinas para conseguir escalabilidad y tolerancia a fallos

� En estos casos, es mejor usar una base de datos para las estructuras globales que sean de lectura/escritura

Visión global del framework de servlets (7)

� ServletRequest� String getParameter(String name)g g ( g )

Permite obtener el valor de un parámetro univaluado � String[] getParameterValues(String name)

Permite obtener el valor de un parámetro multivaluado� Permite obtener el valor de un parámetro multivaluado� También se puede usar con parámetros univaluados

� NOTAá� Un parámetro multivaluado es aquel que tiene (o puede tener)

varios valores� Al realizar la petición HTTP el parámetro (en la URI o en el

cuerpo del mensaje dependiendo del tipo de petición) secuerpo del mensaje, dependiendo del tipo de petición) seespecifica “n” veces, cada una con su valor

� Ejemplo: http://example.com/weather?city=Coruna&city=Santiagottp //e a p e co / eat e c ty Co u a&c ty Sa t ago

� ServletInputStream getInputStream()� Permite leer el cuerpo de la petición� ServletInputStream es una clase abstracta que� ServletInputStream es una clase abstracta que

implementa java.io.InputStream

Visión global del framework de servlets (y 8)

� ServletResponse� void setContentType(String type)� void setContentType(String type)

� Especifica el tipo de contenido de la respuesta (e.g. "text/xml; charset=UTF-8")

()� ServletOutputStream getOutputStream()

� Permite escribir la respuesta� ServletOutputStream es una clase abstracta que p q

implementa java.io.OutputStream

es.udc.ws.movies.service.rest.servlets [Capa Implementación del Servicio] (1)

javax.servlet.http

HttpServlet

AddMovieServletFindMoviesByReleaseDateServlet UpdateMovieServlet RemoveMovieServlet

ServletUtilsMovieInformationFacadeMovieXMLConversor

es.udc.ws.movies.xml es.udc.ws.movies.model

Page 63: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.rest.servlets [Capa Implementación del Servicio] (y 2)

ServletUtils

+ writeServiceResponse(response : HttpServletResponse) : voidit S i R (d t El t El t Htt S l tR ) id+ writeServiceResponse(dataElement : Element, response : HttpServletResponse) : void

+ writeServiceResponse(dataElements : List<Element>, response : HttpServletResponse) : void+ writeServiceResponse(exceptionCode : int, exceptionMessage: String,

response : HttpServletResponse) : void

es.udc.ws.movies.service.rest.xml Los métodos writeServiceResponse

ServiceResponseXMLConversor

writeServiceResponseconstruyen un objeto ServiceResponseapropiado y escriben el XML en larespuesta usando

ServiceResponse

respuesta usandoServiceResponseXMLConvesor

es.udc.ws.movies.service.rest.servlets.FindMoviesByReleaseDate (1)

public class FindMoviesByReleaseDateServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException {

/* Get releaseDate. */ Calendar releaseDate;

try {

String day = request.getParameter("day");String month = request.getParameter("month");String year = request.getParameter("year");

releaseDate = DateOperations.getDate(day, month, year);

} catch (Exception e) { ServletUtils.writeServiceResponse(

ExceptionCodes.INCORRECT_PARAMETERS,"Incorrect/missing 'day', 'month', or 'year' " + "parameter", response);

return; }

es.udc.ws.movies.service.rest.servlets.FindMoviesByReleaseDate (y 2)

/* Find movies. */

List<MovieInformationTO> movieInformationList =

MovieInformationFacade getInstance()MovieInformationFacade.getInstance().

findMoviesByReleaseDate(releaseDate);

/* Generate response. */p

ServletUtils.writeServiceResponse(

MovieXMLConversor.toXML(movieInformationList), response);

}

}

es.udc.ws.movies.service.rest.servlets.AddMovieServlet (1)

public class AddMovieServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

MovieInformationTO movieInformation;

/* Get movie from request. */try {

movieInformation = MovieXMLConversor.toMovieInformation(request.getInputStream());

} catch (ParsingException e) { ServletUtils.writeServiceResponse(

ExceptionCodes.XML_INCORRECT_FORMAT,e.getMessage(), response);

return; }

Page 64: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.rest.servlets.AddMovieServlet (y 2)

/* Add movie to repository. */Long identifier;

try {identifier = MovieInformationFacade.getInstance().

addMovie(movieInformation);} catch (MovieInformationException e) {

ServletUtils.writeServiceResponse(ExceptionCodes.INCORRECT_MOVIE_INFORMATION,e.getMessage(), response);

return;}

/* Generate response. */Element identifierElement =

new Element("identifier", MovieXMLConversor.XML_NS);

identifierElement.setText(identifier.toString()); ServletUtils.writeServiceResponse(identifierElement, response);

}

}

es.udc.ws.movies.service.rest.servlets.RemoveMovieServlet (1)

public class RemoveMovieServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

/* Get movie identifier. */Long identifier;

try {identifier =

Long.valueOf(request.getParameter("identifier"));} catch (Exception e) {

ServletUtils.writeServiceResponse(ExceptionCodes.INCORRECT_PARAMETERS,"Incorrect/missing 'identifier' parameter", response);

return; }

es.udc.ws.movies.service.rest.servlets.RemoveMovieServlet (y 2)

/* Remove movie from repository. */try {

MovieInformationFacade.getInstance().removeMovie(identifier);

} catch (InstanceNotFoundException e) { ServletUtils.writeServiceResponse(

ExceptionCodes.INSTANCE_NOT_FOUND,e.getMessage(), response);

return; }

/* Generate response. */ ServletUtils.writeServiceResponse(response);

}

}

es.udc.ws.movies.service.rest.servlets.ServletUtils (1)

public class ServletUtils {

private ServletUtils() {}

public final static void writeServiceResponse(HttpServletResponse response) throws IOException {

writeServiceResponse(new ServiceResponse(), response); }

public final static void writeServiceResponse(Element dataElement,HttpServletResponse response) throws IOException {

writeServiceResponse(new ServiceResponse(dataElement),response);

}

public final static void writeServiceResponse(List<Element> dataElements,HttpServletResponse response) throws IOException {

writeServiceResponse(new ServiceResponse(dataElements),response);

}

Page 65: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.rest.servlets.ServletUtils (y 2)

public final static void writeServiceResponse(int exceptionCode,String exceptionMessage, HttpServletResponse response)throws IOException {

ServiceResponse serviceResponse = new ServiceResponse(new ExceptionInServiceResponse(exceptionCode,exceptionMessage));

writeServiceResponse(serviceResponse, response);

}

private final static void writeServiceResponse(ServiceResponse serviceResponse, HttpServletResponse response)throws IOException {

OutputStream out = response.getOutputStream();

response.setContentType("text/xml; charset=UTF-8");ServiceResponseXMLConversor.toXML(serviceResponse, out, true); out.close();

}

}

Comentarios

� Los anteriores servlets no tratan IOException ni MovieInformationFacadeExceptionMovieInformationFacadeException� java.io.IOException (checked): representa un error de

escritura en el OutputStream de la respuestai f i d i ( ti ) d d� MovieInformationFacadeException (runtime): cada caso de

uso de la fachada del modelo puede devolverla si ocurre un error grave (e.g. error de acceso al repositorio)

� Ambas excepciones representan errores relativos a la infraestructura usada y ajenos al usuario

� El servidor de aplicaciones captura IOException y las excepciones de runtime, y si se producen, devuelve una respuesta con código de estado 500 (INTERNAL SERVER ERROR), que es lo que deseamos

Empaquetamiento de una aplicación Web (1)

� jar cvf aplicacionWeb.war directorio� Opciones similares al comando Unix tarp

� El nombre de una aplicación Web no tiene porque coincidir con el de su fichero .war

� El nombre se decide al instalar el fichero .war en el servidor de� El nombre se decide al instalar el fichero .war en el servidor deaplicaciones

� Maven genera automáticamente ficheros .war para los módulos con empaquetamiento “war”módulos con empaquetamiento war .

� Estructura de un fichero .war� Directorio WEB-INF/classes

� Ficheros .class que conforman la aplicación Web, agrupados en directorios según su estructura en paquetes

� ¡Sin ficheros fuente!

� Directorio WEB-INF/lib� Ficheros .jar de librerías que usa la aplicación

� ¡Sin ficheros fuente!

Empaquetamiento de una aplicación Web (2)

� Estructura de un fichero .war (cont)� WEB-INF/web xml� WEB INF/web.xml

� Configuración estándar de la aplicación Web

� Directorio raíz y subdirectorios� Vista de la aplicación (ej.: ficheros HTML, páginas J SP,

imágenes, etc.)� Visible a los navegadoresg

� Lo que hay debajo de WEB-INF sólo es visible a los servlets y páginas J SP de la aplicación

� Un fichero war se puede instalar (deployment) en� Un fichero .war se puede instalar (deployment) encualquier servidor de aplicaciones Web J ava EE

Page 66: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Empaquetamiento de una aplicación Web (y 3)

� Un contenedor de aplicaciones Web usa un cargador de clases distinto para cada war instalado => cada paplicación Web tiene su propio espacio de memoria (datos + bytecodes)E t it� Esto permite que� Distintas aplicaciones Web puedan usar versiones distintas

de una misma clase� Distintas aplicaciones Web pueden usar una misma clase

con atributos/variables globales (static), y cada aplicación tener sus propios valoresp p

� Ejemplo: considerar el atributo static parameters de ConfigurationParametersManager

� Si dos aplicaciones Web usan esta clase el contenedor cargará� Si dos aplicaciones Web usan esta clase, el contenedor cargaráuna clase por cada aplicación, y en consecuencia parameterstendrá un valor distinto en cada aplicación

� Es lo que deseamos, dado que cada aplicación tiene su propia configuración

jar tvf Movies.war (1)

WEB-INF/lib/<<librerías Metro (SOAP)>>WEB-INF/lib/<<librerías de JDOM>>WEB-INF/lib/ws-movies-common-<<VERSION>>.jarWEB-INF/lib/ws-util-<<VERSION>>.jarWEB-INF/classes/es/udc/ws/movies/model/DateOperations.classWEB-INF/classes/es/udc/ws/movies/model/GenreOperations.classWEB-INF/classes/es/udc/ws/movies/model/MovieInformationException.classWEB-INF/classes/es/udc/ws/movies/model/MovieInformationFacade$1.classWEB-INF/classes/es/udc/ws/movies/model/MovieInformationFacade.classWEB-INF/classes/es/udc/ws/movies/model/ ->

-> MovieInformationFacadeException.classWEB-INF/classes/es/udc/ws/movies/model/MovieInformationTO$Genre.classWEB-INF/classes/es/udc/ws/movies/model/MovieInformationTO.classWEB-INF/classes/es/udc/ws/movies/service/rest/servlets/ ->

-> AddMovieServlet.classWEB-INF/classes/es/udc/ws/movies/service/rest/servlets/ ->

-> FindMoviesByReleaseDateServlet.classWEB-INF/classes/es/udc/ws/movies/service/rest/servlets/ ->

-> RemoveMovieServlet.classWEB-INF/classes/es/udc/ws/movies/service/rest/servlets/ ->

-> ServletUtils.class

jar tvf Movies.war (y 2)

WEB-INF/classes/es/udc/ws/movies/service/rest/servlets/ ->-> UpdateMovieServlet.class

WEB-INF/classes/es/udc/ws/movies/service/rest/xml/ ->-> ExceptionCodes.class

WEB-INF/classes/es/udc/ws/movies/service/rest/xml/ ->-> ExceptionInServiceResponse.class

WEB-INF/classes/es/udc/ws/movies/service/rest/xml/ ->-> ServiceResponse$ContentType.class

WEB-INF/classes/es/udc/ws/movies/service/rest/xml/ServiceResponse.classWEB-INF/classes/es/udc/ws/movies/service/rest/xml/ ->

-> ServiceResponseXMLConversor.classWEB-INF/classes/es/udc/ws/movies/service/soap/<<...>>WEB-INF/classes/es/udc/ws/movies/xml/MovieXMLConversor.classWEB-INF/classes/ConfigurationParameters.propertiesWEB-INF/web.xml

ConfigurationParametersManager requiere que el fichero g g q qConfigurationParameters.properties esté en el classpath, que en el caso de una aplicación Web está formado por el directorio WEB-INF/classes y los ficheros J AR disponibles en WEB-INF/lib.

web.xml (1)<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4">

<distributable/>

<display-name>Movies Web Service</display-name>

<servlet><display-name>FindMoviesByReleaseDateServlet</display-name> <servlet-name>FindMoviesByReleaseDateServlet</servlet-name><servlet-class>

es.udc.ws.movies.service.rest.servlets. ->-> FindMoviesByReleaseDateServlet

</servlet-class></servlet>

<< Definiciones similares para los servlets AddMovieServlet, UpdateMovieServlet, RemoveMovieServlet ... >>

Page 67: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

web.xml (y 2)

<servlet-mapping>

<servlet-name>FindMoviesByReleaseDateServlet</servlet-name>

<url pattern><url-pattern>

/rest/MovieInformationProvider/findMoviesByReleaseDate

</url-pattern>

</servlet-mapping> pp g

<< Resto de mappings para las URLs de inserción, actualización,

borrado de información de películas ... >>

</web-app>

Comentarios (1)

� distributable� La aplicación puede funcionar en cluster (e g no utiliza� La aplicación puede funcionar en cluster (e.g. no utiliza

variables globales modificables, etc.)

� display-name� Nombre visual que mostrará la aplicación de administración

del servidor de aplicaciones para esta aplicación Web

l t� servlet� Permite definir un servlet, especificando un nombre visual

(display-name), un nombre (servlet-name) para(display name), un nombre (servlet name) parareferirse al servlet desde el resto del fichero web.xml y el nombre completo de la clase que lo implementa (servlet-class)class)

Comentarios (y 2)

� servlet-mapping� Permite especificar las URLs a las que responderá el servlet� Permite especificar las URLs a las que responderá el servlet

especificado en servlet-name� url-pattern permite especificar una URL concreta (como

l j l ) t ó ( / / )en el ejemplo) o un patrón (e.g. /rest/*)

� NOTA: las URLs especificadas no incluyen la parte inicial (http://direcciónServidor[:puerto]/nombreApli( p / [ p ] pcaciónWeb)

� Si el servicio cambia de dirección y/o puerto, o la aplicación Web se reinstala con otro nombre no hay que cambiar elWeb se reinstala con otro nombre, no hay que cambiar elfichero web.xml

Índice

� Descripción del caso de estudioñ� Diseño por capas

� Protocolo REST� Implementación REST de la capa Acceso al

ServicioSe c o� Implementación REST de la capa

Implementación del ServicioImplementación del Servicio� Comentarios finales

Page 68: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Procesamiento de una petición

Capa Interfaz de Usuario Capa Acceso al Servicio

Capa Implemen-tación del Servicio

Capa Lógicade Negocio

Cliente Servidor de aplicaciones

SearchClient MovieInformation-ServiceFactory

FindMoviesByRe-leaseDateServlet

MovieInfor-mationFacade

<<interface>>MovieInforma-

tionService

de Usuario p g

tionService

getMovieInfor-mationService

MovieInformation-ServiceRESTProxy

mationService new

fi dM i B R l DfindMoviesByReleaseDateEnviar petición findMoviesBy-

ReleaseDate

El servidor de aplicaciones recibe la petición epetición einvoca a doGet

Distribuciones

� Distribución del servicio� Fichero WAR mostrado anteriormente� Fichero WAR mostrado anteriormente� Sólo contiene las clases necesarias para la ejecución del

servicio

Distribución de los clientes� Distribución de los clientes� En un caso real, las clases de las aplicaciones cliente se

empaquetan en uno o varios ficheros J AR y se proporcionan óscripts .sh/.bat para facilitar su ejecución

� Los ejemplos de la asignatura lo hacen así

Validación de documentos XML (1)

� Tanto los clientes como el servicio comprueban que el XML está bien formadoel XML está bien formado� Lo hace J DOM automáticamente

� Ni los clientes ni el servicio comprueban con J DOM� Ni los clientes ni el servicio comprueban con J DOMque el documento es válido� Sin embargo, se hacen las comprobaciones

necesarias� Ejemplo 1: MovieXMLConversor comprueba que los

valores de los atributos day, month y year son enterosy, y y� Ejemplo 2: ServiceResponseXMLConversor comprueba

que el valor del atributo code es un enteroEj l 3 b l� Ejemplo 3: MovieInformationFacade comprueba que las listas de directores, actores y géneros no son vacías, etc.

Validación de documentos XML (2)

� Ventajas de no realizar una validación estricta� Eficiencia

� Especialmente importante para la implementación de servicios (que potencialmente pueden recibir muchas peticiones)

� Evolución en el tiempoE ibl t d l XML d l t l i d j d f i� Es posible extender el XML del protocolo sin que dejen de funcionar clientes y/o servicios

� Ejemplo 1 (evolución en el tiempo)� Muchas empresas podrían haber construido clientes del tipo� Muchas empresas podrían haber construido clientes del tipoSearchClient

� Más adelante la empresa proveedora del servicio decide añadir el tag rating (puntuación) a la información de una película

� La empresa proveedora del servicio modifica la implementación del servicio y el cliente AdminClient (asumamos que corre en su intranet)

� En este momento, todos los clientes del tipo SearchClient no están� En este momento, todos los clientes del tipo SearchClient no estánactualizados

� Sin embargo, no dejan de funcionar, dado que en el XML que reciben sólo preguntan por los tags que conocen (e.g. identifier, title, runtime releaseDate etc )runtime, releaseDate, etc.)

� Es decir, descartan automáticamente los tags (rating) que no conocen

Page 69: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Validación de documentos XML (y 3)

� Ventajas de no realizar una validación estricta (cont)� Ejemplo 2 (evolución en el tiempo)

Si los clientes Ad i Cli t co iesen f e a de la int anet no� Si los clientes AdminClient corriesen fuera de la intranet y noestuviesen actualizados, tampoco dejarían de funcionar

� No enviarían la puntuación de la película� El servicio tendría que tratar el tag rating como opcional en el XML

ibque recibe� Ejemplo 3 (evolución en el tiempo)

� Si hubiese más de una implementación del servicio, y alguna de ellas no estuviese actualizada, los clientes actualizados que trabajasen , q jcontra servicios desactualizados tampoco dejarían de funcionar

� Los servicios desactualizados descartarían automáticamente el tag rating

� Los clientes actualizados tendrían que tratar el tag rating como� Los clientes actualizados tendrían que tratar el tag rating comoopcional en el XML que reciben

� NOTA� Obsérvese que los ficheros movies/client/src/main/sampledocs/Movie-* xml llevanmovies/client/src/main/sampledocs/Movie- .xml llevanuna referencia al esquema

� Útil cuando los documentos XML se escriben “a mano” y se quieren validar (para estar seguros de que se han escrito correctamente)Eclipse WTP viene con un plugin que comprueba que un documento� Eclipse WTP viene con un plugin que comprueba que un documentoXML está bien formado y es válido cuando el documento incluye una referencia a su esquema

Otros temas

� Seguridad� Cuando se desea que algunas operaciones de un servicio� Cuando se desea que algunas operaciones de un servicio

sólo estén accesibles a algunos usuarios, se puede utilizar autenticación / autorización HTTP

� Están empezando a aparecer frameworks que dan soporte directo al enfoque REST

R tl t (htt // tl t )� Restlet (http://www.restlet.org)� Esfuerzo de estandarización (J SR 311 – J AX-RS):

http:// jcp.org/en/jsr/detail?id=311http:// jcp.org/en/jsr/detail?id 311

� Se centra en Servicios web “puros” RESTful.� La usaremos en la sección 3.6

3.4 Servicios Web SOAP: J AX-WSWS

Índice

� Introducción a SOAP� J AX-WS

Page 70: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

SOAP (1)

� SOAP es un protocolo basado en XML para el intercambio de mensajes en un entorno jdistribuido� Originalmente acrónimo de “Simple Object Access Protocol”

H id ó i� Hoy ya no se considera acrónimo� Estandarizado por W3C

� Los mensajes SOAP se envían encapsulados en otros� Los mensajes SOAP se envían encapsulados en otrosprotocolos de nivel de aplicación (e.g. HTTP o SMTP)� HTTP es el usado habitualmente (buena elección para

atravesar firewalls)atravesar firewalls)

� Con SOAP, un servicio se compone de puertos, y cada puerto ofrece un conjunto de operacionesp j p� Cada operación tiene: nombre, parámetros (entrada, salida,

entrada/salida), valor de retorno y posibles “faults” (excepciones)(excepciones)

SOAP (2)

� Las operaciones pueden ser� Síncronas (RPC): el cliente envía la petición y se queda bloqueado ( ) p y q q

hasta que llegue la respuesta� La alternativa síncrona es la más usada hoy en día

� Asíncronas: el cliente envía la petición, continúa con su ejecución,� Asíncronas: el cliente envía la petición, continúa con su ejecución,y más adelante puede comprobar si llegó la respuesta

� SOAP estandariza la manera de enviar un mensaje para invocar una operación del servicio y cómo enviar la respuestauna operación del servicio y cómo enviar la respuesta� Misma estructura de mensaje para petición y respuesta� Envelope

� Elemento raíz de un mensaje SOAP� Puede contener un elemento Header y otro Body

� Header (opcional)� Permite pasar información “extra” a protocolos de nivel superior (e.g.

tokens de seguridad, identificadores de transacción, etc.)

� Body (obligatorio)y ( g )� Contiene los datos del mensaje

SOAP (y 3) [Ejemplo (fuente Wikipedia): servicio con operación getProductDetails]

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body>

d il l h // h l /<getProductDetails xmlns="http://warehouse.example.com/ws"> <productID>827635</productID>

</getProductDetails> </soap:Body> / l</soap:Envelope>

Cliente Servicio

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><getProductDetailsResponse xmlns="http://warehouse.example.com/ws"><getProductDetailsResult><productName>Toptimate 3-Piece Set</productName><productID>827635</productID><description>3-Piece luggage set. Black Polyester.</description><price currency="NIS">96.50</price><inStock>true</inStock>

</getProductDetailsResult></getProductDetailsResponse>

</soap:Body></soap:Envelope>

WSDL

� WSDL (Web Services Description Language)� Permite especificar en XML la interfaz de un servicio� Permite especificar en XML la interfaz de un servicio

(puertos, operaciones, tipos de datos, etc.)� Estandarizado por el W3C

Page 71: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

APIs de programación (1)

� De bajo nivel� Permiten explícitamente construir enviar y recibir� Permiten explícitamente construir, enviar y recibir

mensajes SOAP

� De alto nivel� Disponen de un compilador de WSDL� Para el cliente, por cada puerto, el compilador genera un

i t f l ( t b/ ) l i l t tiinterfaz, una clase (stub/proxy) que lo implementa y tipos de datos asociados

� El interfaz contiene una operación por cada operación del puerto

� El stub/ proxy implementa cada operación� Construye la petición SOAP (convierte los parámetros a XML)y p ( p )� La envía� Espera por la respuesta SOAP (si es una operación síncrona)� Convierte el valor de retorno o “fault” (XML) a un objeto( ) j

APIs de programación (y 2)

� De alto nivel (cont)� Para el servicio por cada puerto el compilador genera una� Para el servicio, por cada puerto, el compilador genera una

clase skeleton y tipos de datos asociados� El skeleton

� Recibe las peticiones SOAP� Convierte los parámetros de XML a objetos� Delega en una clase implementada por el desarrollador que

i ió d ió d l tproporciona una operación por cada operación del puerto� Convierte el valor de retorno o excepción a XML� Envía la respuesta SOAP

� También proporcionan un compilador desde interfaces o clases de implementación del servicio a WSDL

� Permite que el desarrollador del servicio especifique el interfaz q p qdel servicio en un lenguaje convencional (e.g. J ava, C#, etc.)

� Genera el WSDL automáticamente.� Esto es útil porque crear el WSDL manualmente puede ser� Esto es útil porque crear el WSDL manualmente puede ser

incómodo.

Í ndice

� Introducción a SOAP� JAX-WS

¿Qué es J AX-WS? (1)

� JAX-WS es un API estándar en Java para implementar e invocar Servicios Web. � Forma parte del API de J ava SE.� Usa anotaciones para facilitar el desarrollo.� Permite invocar e implementar operaciones de servicios Web p p

SOAP mediante el paradigma de RPC.� Permite también operaciones asíncronas.

� En lugar de quedarse bloqueado esperando por respuesta, se ó

g q q p p pproporciona una operación de callback.

� Permite también cierto soporte para REST (aunque no es el objetivo principal).C l i t API d J tá f d� Como cualquier otro API de J ava, está formada por un conjunto de interfaces

� Existen múltiples implementaciones (Metro, CXF, Axis 2 )2,…)

� El código escrito por el desarrollador no depende de la implementación concreta de J AX-WS que se utiliceNosotros utilizaremos Metro� Nosotros utilizaremos Metro.

Page 72: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

¿Qué es J AX-WS? (y 2)

� Especifica un mapping de WSDL a J ava� Permite que las implementaciones de J AX-WS proporcionen� Permite que las implementaciones de J AX-WS proporcionen

un compilador de WSDL a Java, que genere stubs (proxies) para invocar servicios Web.

� Especifica un mapping de J ava a WSDL� Permite que las implementaciones de J AX-WS proporcionen

un compilador de Java a WSDL que genere elun compilador de Java a WSDL, que genere eldocumento WSDL correspondiente a un interfaz o clase de implementación J ava

ó ó� La definición del interfaz o clase de implementación J ava está sujeta a ciertas restricciones

� El documento WSDL permite que un cliente (escrito sobre� El documento WSDL permite que un cliente (escrito sobrecualquier plataforma) pueda invocar el servicio Web

� Los mappings están basados en J AXB.

¿Qué es Metro?U t lkit t i S i i W b i l� Una toolkit para construir Servicios Web que incluye la implementación de referencia de J AX-WS.

http://metro dev java net/� http://metro.dev.java.net/

� A diferencia de otras implementaciones de referencia, es apta para producción)es apta para producción)

� Permite implementar servicios SOAP en un servidor de aplicaciones J ava EEp

� Incluye� Un conjunto de librerías� Un compilador de J ava a WSDL� Un compilador de WSDL a J ava

� Otras implementaciones de J AX-WS:� Axis 2 (http://ws.apache.org/axis2/)

CXF (http://cxf apache org/)� CXF (http://cxf.apache.org/)

Ejemplo StockQuote

� Servicio Web que ofrece una interfaz con una operación que a partir de un conjunto de identificadores de valores bursátiles d l ti idevuelve sus cotizaciones

� Cada cotización incluye� Su identificador� Su valor� El número de segundos de antigüedad que tiene el valor (el valor

real actual sería ligeramente distinto)

Cliente

SOAP/HTTP

StockQuoteProvider

� El ejemplo permitirá aprender cómo en J AX-WS� El ejemplo permitirá aprender cómo en J AX WS� Se define y se implementa el interfaz de un servicio Web � Se invoca un servicio Web desde un cliente

ili di ñ (l b d l i i� No se utiliza diseño por capas (lo abordaremos en el siguiente apartado).

Definición de la interfaz del servicio Web (1)P d d fi i lí it t d d j� Puede definirse explícitamente o puede dejarse que J AX-WS la obtenga automáticamente desde una clase anotada de implementación del servicioanotada de implementación del servicio.

� En el ejemplo hemos seguido la segunda aproximación. Definida enaproximación. Definida enes.udc.ws.jaxwstutorial.service

� El paquete incluyep q y� StockQuoteProviderImpl: la implementación del

servicio. Define la operación getLastTradePricesT d P i l l d l ti ió� TradePrice: la clase que modela una cotización

� La operación getLastTradePrices devuelve los TradePrice correspondientes a un conjunto de identificadores de valores bursátiles.

� IncorrectTickerSymbolException� La operación getLastTradePrices lanza esta excepción si� La operación getLastTradePrices lanza esta excepción si

alguno de los identificadores no existe

Page 73: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Definición de la interfaz del servicio Web (2)

� Método de trabajo� Compilar las clases del paquete p p q

es.udc.ws.jaxwstutorial.service� Utilizar el compilador de J ava a WSDL sobre

StockQuoteProviderImpl� Genera StockQuoteProviderService.wsdl

� Usar el compilador de WSDL a J ava sobre StockQuoteProviderService.wsdl

� El código generado incluirá � Stub, y clases auxiliares, y � Otra vez StockQuoteProvider, TradePrice e IncorrectTickerSymbolException (incluyen atributos y operaciones adicionales que necesitan el stub y el skeleton)

El li t d l i i W b á t ti ( t� El cliente del servicio Web usará estos tipos (paquetees.udc.ws.jaxwstutorial.wsdl)

Modelo de implementación de servicios

� Modelo basado en un servidor de aplicaciones J ava EE con soporte para el API de Servlets

U li ió W b d i l i i i i W b SOAP� Una aplicación Web puede incluir uno o varios servicios Web SOAP� Es el modelo que estudiaremos

Cliente

SOAP/HTTP

warAplicaciones Web (.war)

Servidor de aplicacionesCliente

� Modelo basado en un servidor de aplicaciones J ava EE con soporte para el API de EJ B

� El servicio Web SOAP se implementa como un Stateless Sesion Bean, cuyainterfaz remota es la del servicio Web

SOAP/HTTP

EJ BComponentes

EJ B (.jar)

Servidor de aplicacionesCliente

( j )

Modelo basado en servidor de aplicaciones con soporte para Servlets (1)

R i it d l l d i l t ió� Requisitos de la clase de implementación� Debe tener un constructor público.� Debe estar anotada con javax jws WebService� Debe estar anotada con javax.jws.WebService

� name: nombre del tipo de puerto en wsdl.� serviceName: nombre del servicio en wsdl.� targetNamespace. Espacio de nombres en wsdl.� endpointInterface. Si la interfaz se define

d t i di t i d dseparadamente, se indica en esta propiedad.� Las operaciones del servicio deben ser públicas, usar tipos

compatibles J AXB y (opcional) declarar javax.jws.WebMethod. p y ( p )� name: nombre de la operación en wsdl� exclude: valor booleano. Si true, la operación no se

i l l dlincluye en el wsdl. � Las excepciones lanzadas deben usar la anotación

javax.xml.ws.WebFault

� name: nombre en wsdl.� targetNamespace. Espacio de nombres en wsdl.

Modelo basado en servidor de aplicaciones con soporte para Servlets (2)

� Modelo de ejecución� La implementación de J AX-WS tiene que incluir un servlet quep q q

� Recibe las peticiones SOAP sobre HTTP que envían los clientes� Invoca la operación correspondiente sobre el servicio Web

Devuelve una respuesta SOAP sobre HTTP con el resultado de� Devuelve una respuesta SOAP sobre HTTP con el resultado dela operación

Servlet SkeletonSOAP/HTTP

Cliente Servlet Skeleton

Implementación

Cliente

Implementacióndel servicio

Servidor de aplicaciones

Page 74: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Modelo basado en servidor de aplicaciones con soporte para Servlets (3)

� Modelo de ejecución (cont)� El servlet crea un pool (conjunto) de instancias de la clase� El servlet crea un pool (conjunto) de instancias de la clase

de implementación� Por defecto, las instancias no pueden mantener estado

específico para el clienteespecífico para el cliente� Pero pueden tener estado global, es decir, atributos

típicamente inicializados al crear el servicio y que optimizan la ejecución de las operaciones del servicio (e.g. cachés de sólo j p ( glectura, una conexión a una BD, etc.)

� Cuidado con el estado global en entornos cluster (e.g. no usar atributos modificables que afecten a la funcionalidad del

i i )servicio)� Cada vez que llega una petición, el servlet delega en una

instancia que no se esté utilizando en ese momento� Dada que el modelo de ejecución de servlets es multi-thread,

se pueden atender múltiples peticiones SOAP concurrentemente (cada petición utiliza su propia instancia)

Modelo basado en servidor de aplicaciones con soporte para Servlets (y 4)

� Ciclo de vida� Las anotaciones javax.annotation.PostConstruct y import j y p

javax.annotation.PreDestroy permiten marcar métodos que se ejecutarán respectivamente tras la inicialización y antes de la destrucción de una instancia.

es.udc.ws.jaxwstutorial.service.StockQuoteProviderImpl (1)

package es.udc.ws.jaxwstutorial.service;

import javax jws WebMethod;import javax.jws.WebMethod;

import javax.jws.WebService;

import javax.annotation.PostConstruct;

import java.util.ArrayList;p j y

import java.util.HashMap;

import java.util.List;

import java.util.Map;

@WebService(

name="StockQuoteProvider",

serviceName="StockQuoteProviderService"serviceName= StockQuoteProviderService ,

targetNamespace="http://ws.adoo.udc.es/"

)

public class StockQuoteProviderImpl {

private Map<String, TradePrice> tradePrices;

es.udc.ws.jaxwstutorial.service.StockQuoteProviderImpl (2)

@PostConstruct

private void init() {

TradePrice ibmTradePrice = new TradePrice();TradePrice ibmTradePrice = new TradePrice();

ibmTradePrice.setTickerSymbol("IBM");

ibmTradePrice.setPrice(10.5);

ibmTradePrice.setElapsedSeconds(60*20);p ( )

TradePrice sunTradePrice = new TradePrice();

sunTradePrice.setTickerSymbol("SUN");

sunTradePrice.setPrice(9.1);

sunTradePrice.setElapsedSeconds(60*10);

TradePrice micTradePrice = new TradePrice();

micTradePrice.setTickerSymbol("MIC");

micTradePrice setPrice(20 3);micTradePrice.setPrice(20.3);

micTradePrice.setElapsedSeconds(60*5);

tradePrices = new HashMap<String, TradePrice>();p g

tradePrices.put(ibmTradePrice.getTickerSymbol(),ibmTradePrice);

tradePrices.put(sunTradePrice.getTickerSymbol(),sunTradePrice);

tradePrices.put(micTradePrice.getTickerSymbol(),micTradePrice);

}

Page 75: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.jaxwstutorial.service.StockQuoteProviderImpl (3)

public StockQuoteProviderImpl() {

}

@WebMethod(

operationName="getLastTradePrices"

))

public List<TradePrice> getLastTradePrices(List<String> tickerSymbols) throws IncorrectTickerSymbolException {

Li t t dT d P i A Li t()List requestedTradePrices = new ArrayList();

System.out.println("Requested " + tickerSymbols.size() + " ticker simbol(s)");

for (int i=0; i<tickerSymbols.size(); i++) {y

TradePrice tradePrice= tradePrices.get(tickerSymbols.get(i));

es.udc.ws.jaxwstutorial.service.StockQuoteProviderImpl (y 4)

if (tradePrice == null) {

IncorrectTickerSymbolExceptionInfo info = new IncorrectTickerSymbolExceptionInfo();IncorrectTickerSymbolExceptionInfo();

info.setIncorrectTickerSymbol(tickerSymbols.get(i));

throw new IncorrectTickerSymbolException(info);

}

requestedTradePrices.add(tradePrice);

}

System.out.println("Successfully resolved " + requestedTradePrices size() + " ticker simbol(s)");requestedTradePrices.size() + " ticker simbol(s)");

return requestedTradePrices;

}

}

es.udc.ws.jaxwstutorial.servicedef.TradePrice (1)

package es.udc.ws.jaxwstutorial.service;

public class TradePrice {public class TradePrice {

private String tickerSymbol;

private double price;

private int elapsedSeconds;p p

public String getTickerSymbol() {

return tickerSymbol;

}

public void setTickerSymbol(String tickerSymbol) {

this tickerSymbol = tickerSymbol;this.tickerSymbol = tickerSymbol;

}

public double getPrice() {p g

return price;

}

es.udc.ws.jaxwstutorial.service.TradePrice (y 2)

public void setPrice(double price) {

this.price = price;

}}

public int getElapsedSeconds() {

return elapsedSeconds;p

}

public void setElapsedSeconds(int elapsedSeconds) {

this.elapsedSeconds = elapsedSeconds;

}

}}

Page 76: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.jaxwstutorial.service.IncorrectTickerSymbolException

package es.udc.ws.jaxwstutorial.service;

import javax.xml.ws.WebFault;

@WebFault(name = "IncorrectTickerSymbolException", targetNamespace = "http://ws.adoo.udc.es/")

public class IncorrectTickerSymbolException extends Exception {

private IncorrectTickerSymbolExceptionInfo exceptionInfo;

bli I tTi k S b lE ti (I tTi k S b lE ti I fpublic IncorrectTickerSymbolException(IncorrectTickerSymbolExceptionInfo exceptionInfo) {

this.exceptionInfo = exceptionInfo;

}

public IncorrectTickerSymbolExceptionInfo getFaultInfo() {

return exceptionInfo;

}

}

es.udc.ws.jaxwstutorial.service.IncorrectTickerSymbolExceptionInfo

package es.udc.ws.jaxwstutorial.service;

public class IncorrectTickerSymbolExceptionInfo {public class IncorrectTickerSymbolExceptionInfo {

protected String incorrectTickerSymbol;

public String getIncorrectTickerSymbol() {

return incorrectTickerSymbol;

}

public void setIncorrectTickerSymbol(String value) {

this.incorrectTickerSymbol = value;

}}

}

Comentarios

� Por la forma en la que J AX-WS define el mapping de Exceptions java a WSDL y viceversa, es conveniente p j y ,que las Excepciones utilizadas cumplan las siguientes reglas:

La info mación encaps lada en la E cepción debe i en n� La información encapsulada en la Excepción debe ir en unobjeto separado

� IncorrectTickerSymbolExceptionInfo

é é� Este objeto debe ser obtenido a través del método getFaultInfo.

� De esta forma, las excepciones lanzadas por los stubsDe esta forma, las excepciones lanzadas por los stubsdel cliente serán iguales que las usadas en el servicio.E l t lkit t i� En algunas toolkits esto no es necesario.

Visión global de WSDL� Dejaremos momentáneamente la explicación de los

detalles de la definición del interfaz remoto tiStockQuoteProviderService y sus tipos

asociadosU il d l t i fi h J� Una vez compilados los anteriores ficheros J ava, se puede obtener el documento WSDLUn documento WSDL consta de varias partes� Un documento WSDL consta de varias partes� Definición de tipos de datos � Definición de mensajes� Definición de mensajes� Definición de tipos de puertos� Definición de bindings� Definición de servicios

� Vamos a echar un vistazo al fichero generado� Objetivo: comprender el formato general de un

documento WSDL

Page 77: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

StockQuoteProviderService.wsdl (1)<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<definitions targetNamespace="http://ws.adoo.udc.es/" // / /name="StockQuoteProviderService" xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:tns="http://ws.adoo.udc.es/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<types><xsd:schema><xsd:import namespace="http://ws.adoo.udc.es/"

schemaLocation="StockQuoteProviderService_schema1.xsd"/></xsd:schema>

</types>

StockQuote…schema1.xsd (1)<?xml version="1.0" encoding="UTF-8" standalone="yes"?><xs:schema version="1.0" targetNamespace="http://ws.adoo.udc.es/"

xmlns:tns="http://ws.adoo.udc.es/" xmlns:xs "http://www w3 org/2001/XMLSchema">xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="IncorrectTickerSymbolException" nillable="true" type="tns:incorrectTickerSymbolExceptionInfo"/>

<xs:element name="getLastTradePrices" type="tns:getLastTradePrices"/>

<xs:element name="getLastTradePricesResponse" type="tns:getLastTradePricesResponse"/>yp g p /

<xs:complexType name="getLastTradePrices"><xs:sequence><xs:element name="arg0" type="xs:string" minOccurs="0" g yp g

maxOccurs="unbounded"/></xs:sequence>

</xs:complexType>

<xs:complexType name="getLastTradePricesResponse"><xs:sequence><xs:element name="return" type="tns:tradePrice" minOccurs="0"

maxOccurs="unbounded"/>/</xs:sequence>

</xs:complexType>

StockQuote…schema1.xsd (y 2)<xs:complexType name="tradePrice">

<xs:sequence><xs:element name="elapsedSeconds" type="xs:int"/><xs:element name="price" type="xs:double"/><xs:element name="tickerSymbol" type="xs:string" minOccurs="0"/>

</xs:sequence></xs:complexType>

<xs:complexType name="incorrectTickerSymbolExceptionInfo"><xs:sequence><xs:element name="incorrectTickerSymbol" type="xs:string"

0 /minOccurs="0"/></xs:sequence>

</xs:complexType></xs:schema>

Definición de tipos de datos - Comentarios

� Es posible usar varios sistemas de tipos� El uso de un esquema XML es el más habitualq� También se pueden usar tipos SOAP.� Metro genera las definiciones de tipos en un fichero g p

aparte (no es necesario hacerlo así).� En el ejemplo se definen

� El tipo complejo getLastTradePrices, que corresponde al tipo J ava de entrada a la operación List<String>

Se define como una secuencia de elementos xsd:string� Se define como una secuencia de elementos xsd:string

� Los tipos complejos TradePrice e IncorrectTickerSymbolException que corresponden a los tipos J ava con el mismo nombre.

� getLastTradePricesResponse representa el tipo de la respuesta de la operación List<TradePrice>.respuesta de la operación List<TradePrice>.

� nillable=true especifica que el correspondiente elemento puede tomar el valor nil (null en J ava)

Page 78: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

StockQuoteProviderService.wsdl (2)<message name="getLastTradePrices"><part name="parameters" element="tns:getLastTradePrices"/>

</message>

<message name="getLastTradePricesResponse"><part name="parameters" element="tns:getLastTradePricesResponse"/>

</message>

<message name="IncorrectTickerSymbolException"><part name="fault" element="tns:IncorrectTickerSymbolException"/>

</message>

<portType name="StockQuoteProvider"><operation name="getLastTradePrices"><input message="tns:getLastTradePrices"/><output message="tns:getLastTradePricesResponse"/><fault message="tns:IncorrectTickerSymbolException"

name="IncorrectTickerSymbolException"/></operation>/ tT</portType>

Definición de mensajes y puertos – Comentarios

� Definición de mensajes� Especifica los mensajes que se pueden intercambiar clientes� Especifica los mensajes que se pueden intercambiar clientes

y servidores� Cada mensaje consta de “partes”, donde cada parte

áespecifica un parámetro del mensaje, un valor de retorno o una excepción (fault)

� Definición de tipos de puertos� Definición de tipos de puertos� Un tipo de puerto especifica un conjunto de operaciones� Cada operación especifica el orden de los parámetros, el p p p

mensaje de entrada (input), el de salida (output) y los posibles mensajes fault que puede devolver la operación

� Un mensaje fault sólo puede contener una parte� Un mensaje fault sólo puede contener una parte

StockQuoteProviderService.wsdl (y 3)<binding name="StockQuoteProviderPortBinding" type="tns:StockQuoteProvider"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style "document"/>style="document"/><operation name="getLastTradePrices"><soap:operation soapAction=""/><input><soap:body use="literal"/><soap:body use="literal"/>

</input><output><soap:body use="literal"/>

</output></output><fault name="IncorrectTickerSymbolException"><soap:fault name="IncorrectTickerSymbolException" use="literal"/>

</fault></operation></operation>

</binding>

<service name="StockQuoteProviderService"><port name="StockQuoteProviderPort"<port name="StockQuoteProviderPort"binding="tns:StockQuoteProviderPortBinding">

<soap:address location="REPLACE_WITH_ACTUAL_URL"/></port>

</service></service></definitions>

Definición de bindings y servicios – Comentarios

� Definición de bindings� Un binding especifica un protocolo y formato de datos para

un tipo de puerto (e.g. SOAP sobre HTTP)

� Definición de serviciosU i i ifi j t d “ t ” ( d i t )� Un servicio especifica un conjunto de “puertos” (endpoints)

� Cada puerto está asociado a un binding particular y especifica su dirección de contactop

� REPLACE_WITH_ACTUAL_URL. Ahí debe indicarse la URL por defecto de acceso al servicio.

T bié d i di l l t b� También puede indicarse al generar los stubs.

� En J AX-WS� Se usa el término “service endpoint” para referirse al puerto� Se usa el término service endpoint para referirse al puerto

de un servicio Web� Usaremos indistintamente los términos “service endpoint” y

“puerto”

Page 79: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Mapping de J ava a WSDL (1)

� No todos los tipos se pueden emplear en la definición de las operaciones de los Servicios Webde las operaciones de los Servicios Web.� Tipos primitivos y sus contrapartidas objetuales� Clases estándar� Clases que sigan las convenciones de “bean”.� Colecciones de tipos válidos

� Se utilizan los mappings de J AXB (J ava Architecture for XML Binding).

Define nos mappings po defecto� Define unos mappings por defecto.� Pueden adaptarse mediante anotaciones.

Mapping de J ava a WSDL (2)

� Tipos primitivos y sus contrapartidas objetuales

Tipo Java Tipo WSDLboolean xsd:booleanboo ea sd:boo ea

byte xsd:byte

short xsd:short

int xsd:int

long xsd:long

float xsd:float

double xsd:double

� En el caso de las contrapartidas objetuales, el correspondiente elemento lleva el atributo nillable a true

Mapping de J ava a WSDL (3)

� Clases estándar

Tipo Java Tipo WSDL

java.lang.String xsd:string

java.math.BigInteger xsd:integer

java.math.BigDecimal xsd:decimal

java.util.Calendar xsd:dateTime

java.util.Date xsd:dateTime

� Colecciones (e.g. Listas) de tipos válidos� Se mapean a tipos complejos que son secuencias del tipo

base.

Mapping de J ava a WSDL (4)

� Objetos tipo “bean”:� En general estas clases deben tener atributos públicos de� En general, estas clases deben tener atributos públicos de

tipos válidos o usar las convenciones de nombrado de J avaBeans para sus atributos (métodos getXXX y setXXX)

� Pueden heredar de otras clases valor� Se mapean a tipos WSDL complejos con compositor all o sequenceq

� En caso de herencia, el tipo complejo se define por derivación

� Ejemplo: TradePrice

Page 80: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Mapping de J ava a WSDL (5)

� Definición de operaciones remotas� Utilizan las anotaciones @WebService y @WebMethod tal� Utilizan las anotaciones @WebService y @WebMethod tal

y como ya hemos comentado.

� Cada interfaz se mapea a un puerto� Dado que en WSDL no existe herencia entre puertos, si un

interfaz deriva de otro, el puerto hijo incluye todas las operaciones del padreoperaciones del padre

� Ejemplo: StockQuoteProviderImpl

Mapping de J ava a WSDL (y 6)

� Excepciones� Las excepciones se mapean a un wsdl:fault� Las excepciones se mapean a un wsdl:fault

� El objeto que contiene la información de la excepción se mapea a un tipo complejo.Di h bj t d di t l ió� Dicho objeto ser accede mediante la operación getFaultInfo.

� Ejemplo: IncorrectTickerSymbolException

Mapping de WSDL a J ava (1)

� Las reglas del mapping de J ava a WSDL a la inversa� xsd:dateTime se mapea a� xsd:dateTime se mapea ajavax.xml.datatype.XMLGregorianCalendar (y no a java.util.Calendar)L t t XML ( it )� Los structs XML (con compositor all o sequence) se mapean a una clase J ava con métodos getXXX/setXXXpara cada campo del struct

� Además, necesitamos saber como se mapean algunas construcciones no existentes en J AVA (nuevamente, se usan las normas de J AXB):las normas de J AXB):

� ¿Cómo se traducen los parámetros out e inout?� Parámetros de salida y de entrada/salida disponibles en otros

lenguajes de programaciónlenguajes de programación.

Mapping de WSDL a J ava (y 2)

� Parámetros out e inout� Uso de clases Holder� Uso de clases Holder

� Son necesarias porque J ava no tiene soporte directo (palabras reservadas en el lenguaje) para parámetros in/ inout

� Son clases que contienen un valor, accesible mediante el atributo� Son clases que contienen un valor, accesible mediante el atributopúblico value

� Ejemplo � Supongamos un endpoint con la operación� Supongamos un endpoint con la operación

� Nombre: add� Parámetros: increment (in, double), amount (inout, double)� Sin tipo de retornop

� La operación se mapearía a J ava comovoid add(double increment, Holder<Double> amount)

� UsoHolder<Double> amount = new Holder(20);puerto.add(10, amount);System out println(amount value); // 30System.out.println(amount.value); // 30

Page 81: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Modelos de implementación de clientes

� Modelo basado en J ava SE� Es el que usaremos Cliente stand-alone� Es el que usaremos. Cliente stand-alone.

� Modelo basado en J ava EE� El cliente corre dentro de un servidor de aplicaciones J ava� El cliente corre dentro de un servidor de aplicaciones J ava

EE con soporte para J AX-WS.� No veremos los detalles.

es.udc.ws.jaxwstutorial.client.StockQuoteProviderClient (1)

package es.udc.ws.jaxwstutorial.client;

import es udc ws jaxwstutorial wsdl IncorrectTickerSymbolException;import es.udc.ws.jaxwstutorial.wsdl.IncorrectTickerSymbolException;

import es.udc.ws.jaxwstutorial.wsdl.StockQuoteProvider;

import es.udc.ws.jaxwstutorial.wsdl.StockQuoteProviderService;

import es.udc.ws.jaxwstutorial.wsdl.TradePrice;p j

import javax.xml.ws.BindingProvider;

import javax.xml.ws.WebServiceRef;

import java.util.ArrayList;

import java.util.List;

import java.text.MessageFormat;

public class StockQuoteProviderClient {

public static StockQuoteProviderService stockQuoteProviderService = pnew StockQuoteProviderService();

public static void main (String args[]) {

es.udc.ws.jaxwstutorial.client.StockQuoteProviderClient (2)

try {

if (args.length < 2) {

System err println(MessageFormat format("Usage: {0}System.err.println(MessageFormat.format("Usage: {0}stockQuoteProviderURL [tickerSymbol1 tickerSymbol2 ...]",

StockQuoteProviderClient.class.getName()));

System.exit(-1);

}

String stockQuoteProviderURL = args[0];

Li t St i ti k S b l A Li t St i ()List<String> tickerSymbols = new ArrayList<String>();

for (int i=1; i < args.length; i++) {

tickerSymbols.add(args[i]);

}}

StockQuoteProvider stockQuoteProvider = stockQuoteProviderService.getStockQuoteProviderPort();

((BindingProvider)stockQuoteProvider).getRequestContext().put(

BindingProvider.ENDPOINT_ADDRESS_PROPERTY, stockQuoteProviderURL);

es.udc.ws.jaxwstutorial.client.StockQuoteProviderClient (y 3)

List<TradePrice> tradePrices =

stockQuoteProvider.getLastTradePrices(tickerSymbols);

// Show results

for (int i=0; i<tradePrices.size(); i++) {

System.out.println(

MessageFormat format (MessageFormat.format ( …

…,

tradePrices.get(i).getTickerSymbol(),

…));

} catch (IncorrectTickerSymbolException e) {

System.out.println("Unable to get ticker symbol“ +

e.getFaultInfo().getIncorrectTickerSymbol()));

}

}}

}

Page 82: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Comentarios

� StockQuoteProviderService� Interfaz del servicio� Interfaz del servicio� Generada por el compilador de WSDL a J ava� Su nombre coincide con el nombre del servicio declarado en

el fichero WSDLel fichero WSDL� Proporciona métodos get<PortType>

� Devuelven una instancia del stub/proxy del puerto� El proxy implementa el interfaz del puerto

(StockQuoteProvider en el ejemplo, generado por el compilador de WSDL a J ava).El ejemplo recibe la URL de invocación del servicio por línea de� El ejemplo recibe la URL de invocación del servicio por línea decomandos y la fija modificando la propiedad ENDPOINT_ADDRESS_PROPERTY del contexto de la petición.

� Hay otras propiedades (e g autenticación)� Hay otras propiedades (e.g. autenticación).

ws-jaxwstutorialservice.war

� Incluye� WEB-INF/lib� WEB INF/lib

� Incluye las librerías (ficheros .jar) de Metro� WEB-INF/classes

� Contiene las clases requeridas por el servicio (paquete es.udc.ws.jaxwstutorial.wsdl)

WEB INF/web xml� WEB-INF/web.xml

� Fichero de configuración de la aplicación web.� WEB-INF/sun-jaxws.xmlj

� Configuración de los Servicios Web de Metro.

web.xml (1)<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://java sun com/xml/ns/j2ee"xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<listener>

<listener-class>

com sun xml ws transport http servlet WSServletContextListenercom.sun.xml.ws.transport.http.servlet.WSServletContextListener

</listener-class>

</listener>

<display-name>JAXWSTutorial Web Service</display-name>

<servlet>

<servlet-name>WSServlet</servlet-name>

<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet

</servlet-class>

<load-on-startup>1</load-on-startup><load-on-startup>1</load-on-startup>

</servlet>

web.xml (y 2)

<servlet-mapping><servlet-name>WSServlet</servlet-name><servlet name>WSServlet</servlet name><url-pattern>/services/*</url-pattern>

</servlet-mapping><session-config>

i i 30 / i i<session-timeout>30</session-timeout></session-config><welcome-file-list>

<welcome-file>index.html</welcome-file></welcome-file-list>

</web-app>

Page 83: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Comentarios (1)

� Se declara una clase Listener específica de Metro (las clases Listener son llamadas cuando una sesión se crea y se destruye).y y

� Se declara el servlet WSServlet� Forma parte de las librerías de Metro

WSS l t� WSServlet

� El servidor de aplicaciones Web le pasará todas las peticiones (tag servlet-mapping) dirigidas a las URLs

// / / /http://.../NombreAplicacionWeb/services/*

<servlet-mapping>

< l t >WSS l t</ l t ><servlet-name>WSServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

� En este caso, asumiendo que instalemos la aplicación Web con el nombre ws-jaxwstutorial-service, el cliente usará la URL http://.../ws-jaxwstutorial-http://.../ws jaxwstutorialservice/services/StockQuoteProvider para acceder al puerto StockQuoteProvider

Comentarios (y 2)

� WSServlet (cont)� El servlet invocará la operación correspondiente sobre el� El servlet invocará la operación correspondiente sobre el

service endpoint al que va dirigida la petición, y finalmente enviará una respuesta SOAP con el resultado de la operación

sun-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?><endpoints xmlns='http://java sun com/xml/ns/jax-ws/ri/runtime'<endpoints xmlns= http://java.sun.com/xml/ns/jax ws/ri/runtime

version='2.0'><endpoint name='StockQuoteProvider' implementation= 'es.udc.ws.jaxwstutorial.service.StockQuoteProviderImpl'url-pattern='/services/StockQuotesService'/>url pattern= /services/StockQuotesService />

</endpoints>

Comentarios

� name. Nombre del puerto.

� implementation Clase de implementación del puerto� implementation. Clase de implementación del puerto.

� urlpattern. Tiene que concordar con el indicado en el web xmlweb.xml.

Page 84: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

3.5 Caso de estudio: diseño e implementación de un servicio/cliente SOAP p

con J AX-WS

Estructura de paquetes del caso de estudio

es.udc.ws.movies

Subsistema Movies

client

model

service

restrest

jaxws

proxy

wsdl

wsdlutils

xml

Visión de la estructura de paquetes en capas

Implementación del ServicioInterfaz de Usuario

Cliente Servidor

Implementación del ServicioInterfaz de Usuario

es.udc.ws.movies.clientes.udc.ws.movies.xml

es.udc.ws.movies.service.jaxwses.udc.ws.movies.service.jaxws.wsdlutils

Acceso al Servicio

es.udc.ws.movies.servicees udc ws movies service jaxws proxy Lógica de Negocioes.udc.ws.movies.service.jaxws.proxyes.udc.ws.movies.service.jaxws.wsdles.udc.ws.movies.service.jaxws.proxy.wsdlutils

es.udc.ws.movies.model

� De forma similar al ejemplo J AXWSTutorial� es.udc.ws.movies.service.jaxws.wsdl: contiene las clases

e interfaces generadas por el compilador de WSDL a J ava. La implementación del servicio (MovieInformationProviderJaxWSBindingImpl) está en es udc ws movies service jaxwses.udc.ws.movies.service.jaxws

es.udc.ws.movies.service.jaxws[Capas de Implementación del Servicio] (1)

MovieInformationProviderJ AXWSBindingImpl

+ findMoviesByReleaseDate(releaseDate : Calendar) : List<MovieInformationWTO>y ( )+ addMovie(movieInformation : MovieInformationWTO) : Long+ updateMovie(movieInformation : MovieInformationWTO) : void+ removeMovie(identifier : Long) : void

MovieInformationWTO

- identifier : Long- title : String- runtime : short- releaseDate : Calendar- directorNames : List<String>- actorNames : List<String>- genres : List<String>- synopsis : String

+ Constructor+ Métodos get/set

Page 85: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.jaxws.MovieInformationProviderJ AXWSBindingImpl[Capa de Implementación del Servicio] (2)

MovieInformationProviderJ AXWSBindingImplMovieInformationProviderJ AXWSBindingImpl

es.udc.ws.movies.service.jaxws.wsdlutils es.udc.ws.movies.model

CommonWSDLTypeConversor MovieInformationFacade

CommonWSDLTypeConversor proporciona operaciones para facilitarla conversión de “tipos del modelo” (los definidos en es udc ws movies service)la conversión de tipos del modelo (los definidos en es.udc.ws.movies.service)a/desde “tipos de la capa de implementación del servicio” (los definidos en es.udc.ws.movies.service.jaxws)

es.udc.ws.movies.service.jaxws.MovieInformationProviderJ AXWSBindingImpl[Capa de Implementación del Servicio] (3)

package es.udc.ws.movies.service.jaxws;

import es.udc.ws.movies.model.MovieInformationException;import es.udc.ws.movies.model.MovieInformationFacade;import es.udc.ws.movies.service.jaxws.wsdlutils.CommonWSDLTypeConversor;import es.udc.ws.util.exceptions.InstanceNotFoundException;

//…

@WebService(name = "MovieInformationProvider",serviceName = "MovieInformationProviderService",targetNamespace = "http://movies.ws.adoo.udc.es/"

)public class MovieInformationProviderJaxWSBindingImpl {

@WebMethod(operationName = "findMoviesByReleaseDate"

)public List<MovieInformationWTO> findMoviesByReleaseDate(Calendar releaseDate) {

return CommonWSDLTypeConversor.toWSDL( MovieInformationFacade.getInstance().

findMoviesByReleaseDate(releaseDate));findMoviesByReleaseDate(releaseDate));}

es.udc.ws.movies.service.soap.wsdl.MovieInformationProviderJ AXWSBindingImpl[Capa de Implementación del Servicio] (4)

@WebMethod(operationName = "addMovie"

)public long addMovie(MovieInformationWTO movieInformation)

throws MovieException {

try {return MovieInformationFacade.getInstance().addMovie(

CommonWSDLTypeConversor.fromWSDL(movieInformation));} catch (MovieInformationException e) {

throw CommonWSDLTypeConversor.toMovieException(e);}

}

es.udc.ws.movies.service.soap.wsdl.MovieInformationProviderJ AXWSBindingImpl[Capa de Implementación del Servicio] (5)

@WebMethod(operationName = "updateMovie"

)public void updateMovie(MovieInformationWTO movieInformation)

throws MovieNotFoundException, MovieException {

try {MovieInformationFacade.getInstance().updateMovie(

CommonWSDLTypeConversor.fromWSDL(movieInformation));} catch (InstanceNotFoundException e) {

throw CommonWSDLTypeConversor.toMovieNotFoundException(e);} catch (MovieInformationException e) {

throw CommonWSDLTypeConversor.toMovieException(e);}

}

Page 86: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.soap.wsdl.MovieInformationProviderJ AXWSBindingImpl[Capa de Implementación del Servicio] (6)

@WebMethod(operationName = "removeMovie"

)public void removeMovie(Long identifier) throws

MovieNotFoundException {

try {MovieInformationFacade.getInstance().removeMovie(identifier);

} catch (InstanceNotFoundException e) {throw CommonWSDLTypeConversor.toMovieNotFoundException(e);

}}

}

es.udc.ws.movies.service.MovieInformationWTO[Capa de Implementación del Servicio] (7)

package es udc ws movies service jaxws;package es.udc.ws.movies.service.jaxws;

import javax.xml.bind.annotation.XmlElement;

////…

public class MovieInformationWTO {

@XmlElement(nillable = true)@XmlElement(nillable = true)protected List<String> actorNames;

@XmlElement(nillable = true)protected List<String> directorNames;protected List<String> directorNames;

@XmlElement(nillable = true)protected List<String> genres;

protected Long identifier;protected Calendar releaseDate;

//…//…

public List<String> getActorNames() {if (actorNames == null) {

actorNames = new ArrayList<String>();actorNames new ArrayList<String>();}return this.actorNames;

}

es.udc.ws.movies.service.soap.wsdl.MovieInformationWTO[Capa de Implementación del Servicio] (8)

//…

public List<String> getGenres() {if (genres == null) {if (genres == null) {

genres = new ArrayList<String>();}return this.genres;

}}

public Long getIdentifier() {return identifier;

}}

public void setIdentifier(Long value) {this.identifier = value;

}}

public Calendar getReleaseDate() {return releaseDate;

}}

public void setReleaseDate(Calendar value) {this.releaseDate = value;

//…}

es.udc.ws.movies.service.soap.wsdl.MovieNotFoundException[Capa de Implementación del Servicio] (9)

package es.udc.ws.movies.service.jaxws;

import javax.xml.ws.WebFault;

@WebFault(name = "MovieNotFoundException", targetNamespace = "http://movies.ws.adoo.udc.es/")

public class MovieNotFoundException extends Exception {

private MovieNotFoundExceptionInfo faultInfo;

public MovieNotFoundException(MovieNotFoundExceptionInfo faultInfo) {

this.faultInfo = faultInfo;}

public MovieNotFoundExceptionInfo getFaultInfo() {return faultInfo;

}

}

Page 87: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.jaxws[Capas de Implementación del Servicio] (10)

� Nótese que no usamos los tipos del modelo:� MovieWTO. No se utilizan enumerados.� Notar anotación XMLElement para elementos List.

� Las operaciones declaran excepciones cuya información es encapsulada en un objeto xxxExceptionInfoencapsulada en un objeto xxxExceptionInfo.

� De esta forma las clases generadas en el cliente a partir del WSDL tendrán la misma estructura.

es.udc.ws.movies.service.jaxws[Capas de Implementación del Servicio] (y 11)

� Tener en la capa de implementación del servicio tipos independientes de los usados en el modelo:� Permite tener en cuenta las características específicas de la

tecnología utilizada para implementar el servicio:� E.g. Mapping de Excepciones en J AXWS.� E.g. Mapping de Excepciones en J AXWS.� El modelo podría usar tipos no soportados en J AXB (e.g.

HashMap sólo funciona como tipo de una propiedad pero no puede ser devuelto o recibido directamente) o cuyo mappingpuede ser devuelto o recibido directamente) o cuyo mappingsea complejo y prefiramos no usar.

� Permite a ambas capas evolucionar por separado. S l d l ñ d ió� Supongamos que el modelo añade una nueva operación que devuelve un mapa.

� Supongamos que el modelo en el servidor añade un nuevo b l f ó b l lí latributo a la información sobre las películas o representa un

atributo de forma diferente (e.g. separa el nombre y apellido de los actores).

� La capa de implementación puede seguir ofreciendo a los clientes la misma visión del modelo que antes del cambio.

es.udc.ws.movies.service.jaxws.proxy.MovieInformationServiceJ AXWSProxy[Capa de Acceso al Servicio] (1)

es.udc.ws.movies.service

<<interface>>MovieInformationService

MovieInformationServiceJ AXWSProxy

CommonWSDLTypeConversor MovieInformationProvider

es.udc.ws.movies.service.jaxws.proxy.wsdlutils es.udc.ws.movies.service.jaxws.wsdl

yp MovieInformationProvider

CommonWSDLTypeConversor proporciona operaciones para facilitarla conversión de “tipos del modelo” (los definidos en es.udc.ws.movies.service) a/desde los tipos generados desde el WSDL (los definidos ena/desde los tipos generados desde el WSDL (los definidos enes.udc.ws.movies.service.jaxws.wsdl)

es.udc.ws.movies.service.soap.proxy.MovieInformationServiceSOAPProxy[Capa de Acceso al Servicio] (2)

public class MovieInformationServiceJAXWSProxy implements MovieInformationService {

private final static String ENDPOINT_ADDRESS_PARAMETER =_ _"MovieInformationServiceJAXWSProxy/endpointAddress";

private static String endpointAddress;

private MovieInformationProviderService movieInformationProviderService = new MovieInformationProviderService();

private MovieInformationProvider movieInformationProvider =movieInformationProviderService

.getMovieInformationProviderPort();

public MovieInformationServiceJAXWSProxy() throws ServiceException {

try {((BindingProvider)

movieInformationProvider).getRequestContext().put(BindingProvider ENDPOINT ADDRESS PROPERTYBindingProvider.ENDPOINT_ADDRESS_PROPERTY,getEndpointAddress());

} catch (Exception e) {throw new ServiceException(e);

Lee la URL de lathrow new ServiceException(e);

}}

configuración

Page 88: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.soap.proxy.MovieInformationServiceSOAPProxy[Capa de Acceso al Servicio] (3)

public List<MovieInformationTO> findMoviesByReleaseDate(Calendar releaseDate)throws ServiceException {

try {XMLGregorianCalendar xCalendar = DatatypeFactory.newInstance()

.newXMLGregorianCalendar((GregorianCalendar) releaseDate);return CommonWSDLTypeConversor.fromWSDL(

movieInformationProvidermovieInformationProvider.findMoviesByReleaseDate(xCalendar));

} catch (Exception e) {throw new ServiceException(e);

}}}

public Long addMovie(MovieInformationTO movieInformation)throws MovieInformationException ServiceException {throws MovieInformationException, ServiceException {

try {return movieInformationProvider.addMovie(

CommonWSDLTypeConversor toWSDL(movieInformation));CommonWSDLTypeConversor.toWSDL(movieInformation));} catch (MovieException e) {

throw CommonWSDLTypeConversor.toMovieInformationException(e);} catch (Exception e) {

throw new ServiceException(e);throw new ServiceException(e);}

}

[Capas de Acceso al Servicio] (y 4)

� El mapping de J AVA a WSDL transforma un Calendar a un tipo XML dateTime

� El mapping de WSDL a J AVA transforma los tipos dateTime a ja a ml datat pe XMLGregorianCalendarjavax.xml.datatype.XMLGregorianCalendar

� Ejemplo de cómo los tipos generados para el cliente no siempre coinciden con los utilizados en el servidorno siempre coinciden con los utilizados en el servidor.

� El proxy y el CommonWSDLTypeConversor del cliente deben encargarse de transformar del tipocliente deben encargarse de transformar del tipoCalendar del modelo a este otro tipo.

� Con las excepciones nos hubiese pasado algoCon las excepciones nos hubiese pasado algoparecido si no hubiésemos encapsulado su información en los objetos XXXExceptionInfo.

Tema 3.6: El Estilo Arquitectónico RESTREST

Índice

� IntroducciónConceptos básicos de REST� Conceptos básicos de REST� Recursos y Representaciones� Conjunto fijo de operaciones� Conjunto fijo de operaciones� Hypermedia: Cambio de estado� Servicios auto-descriptivos� Intermediarios y caches

� Ejemplo: Movies RPC vs Movies REST� Estilo REST vs Estilo RPC� Valoración y Conclusiones

Page 89: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Introducción

� REpresentational State Transfer. Estilo arquitectónico propuesto por Roy Fielding en 2000propuesto por Roy Fielding en 2000.

� La Web es, sin duda, la aplicación distribuida más exitosa de la historia.exitosa de la historia.

� REST: Estilo arquitectónico para construir aplicaciones distribuidas inspirado en las p pcaracterísticas de la web.

� REST se basa fuertemente en HTTP 1.1:� Realmente es independiente de HTTP� Pero HTTP 1.1 es el único protocolo utilizado masivamente

diseñado para soportar los principios RESTdiseñado para soportar los principios REST.

I ntroducción (y 2)

� El estilo REST pretende que sea posible construir sistemas distribuidos compuestos por miles desistemas distribuidos compuestos por miles deservicios desarrollados y evolucionados independientemente, escalando a niveles pcomparables a la Web.

� Para ello hace énfasis en minimizar el acoplamiento entre servicios.

� A menudo se les denomina servicios web “RESTful”. N t t bié l d i i i bNosotros también los denominaremos servicios webREST “puros”.

Recursos y Representaciones (1)

� Una aplicación REST se compone de recursos. Suelen corresponderse con las entidades de datos decorresponderse con las entidades de datos denuestra aplicación

� Cada recurso es identificado mediante un� Cada recurso es identificado mediante unidentificador único (típicamente URLs):� http://www.movieprovider.com/movies/Amelie

� Amelie en la BD de películas de movieprovider.com.� http://www.acme.com/customers/01235

Un cliente d� Un cliente de acme.com.� http://www.acme.com/orders/078935

� Un pedido en acme.com� Un pedido en acme.com� http://www.acme.com/customers

� Recurso colección (consultable): clientes de Acme.com

Recursos y Representaciones (2)

� Los identificadores (URLs) son globales. Todo recurso tiene un nombre único a nivel inter� Todo recurso tiene un nombre único a nivel inter-aplicación.

� No existen espacios de nombres restringidos a un� No existen espacios de nombres restringidos a unservicio/aplicación.

� Por tanto, cualquier servicio puede referenciar y� Por tanto, cualquier servicio puede referenciar yobtener un recurso de cualquier otro servicio:

� Eso no quiere decir que todos los recursos sean q qaccesibles para todos (mecanismos de autorización).

Page 90: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Recursos y Representaciones (y3)

� Al invocar la URL, el cliente obtiene una representación del recursorepresentación del recurso.

� La representación de un recurso puede variar en el tiempo.tiempo.� El identificador está ligado al recurso, no a la

representación.� Si cambian los datos de un cliente de Acme, cambiará la

representación. La URL apuntará siempre a la representación actual del recurso.p

Conjunto fijo de operaciones(1)� Interfaz uniforme. Las operaciones disponibles sobre

los recursos son siempre las mismas y su semántica d d l l des conocida por todos los clientes e intermediarios.

� El estilo REST no dice cuáles deben ser esas ope ione ólo q e deben e iemp e l mi moperaciones, sólo que deben ser siempre las mismas y ser usadas consistentemente por los servicios.

� Los tipos de error que pueden devolver estas� Los tipos de error que pueden devolver estasoperaciones están también estandarizados.

Conjunto fijo de operaciones(2)� En el caso de HTTP: GET, POST, PUT, DELETE,

PATCH (nuevo).� GET: Acceso a recursos y consultas. Sin efectos secundarios.� PUT: Crear o reemplazar completamente la representación

de un recurso Idempotentede un recurso. Idempotente.� PATCH: updates parciales.� DELETE: Borrar un recurso. Idempotente.� POST: Acciones con efectos secundarios (creación /

modificación de recursos, coste) y pueden no ser idempotentesidempotentes.

� Cabeceras HTTP estándar para diversos propósitos:� Autorización / autenticación/� Formatos aceptados por el cliente para la representación� Manejo de caches: tiempos de expiración, soporte para

ti i di i lpeticiones condicionales,…

Conjunto fijo de operaciones(2)� Códigos de respuesta HTTP

� 400 – Bad Request� 404 – Recurso no existe� 500 – Error interno

403 Forbidden� 403 – Forbidden� …

Page 91: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Conjunto fijo de operaciones(y3)� Analogía con QUERY / UPDATE / INSERT /DELETE en

una Base de datos.� PUT sirve para UPDATEs idempotentes e INSERTS

(cliente decide el identificador).� POST sirve para INSERT si servidor decide URL Sirve� POST sirve para INSERT si servidor decide URL. Sirve

para UPDATES no idempotentes.

� Un servicio web REST debe utilizar sólo estas operaciones para manipular los recursos.� Esto quiere decir que cierta semántica de una invocación

(“lo que hace”) sobre un recurso es conocida sin saber nada( lo que hace ) sobre un recurso es conocida sin saber nadasobre el servicio.

I ntermediarios (1)� Ejemplo cache: en Internet existen múltiples

niveles intermedios de cache.� Las caches funcionan con cualquier sitio web sin

necesidad de ninguna pre-programación ni en el sitio web ni en el sistema cache.

� Semántica conocida de HTTP:� Petición GET no invalida documentos en cache.� Petición POST, PUT, DELETE invalidan.

N h ti i POST ( d id t t ) i� No cachear peticiones POST (puede no ser idempotente) niPUT, DELETE.

� No se deben cachear respuestas que indiquen un código de p q q gerror (salvo errores permanentes).

� Cabeceras de cache proporcionan soporte genérico para expiraciones peticiones condicionalesexpiraciones, peticiones condicionales,…

Intermediarios (y 2)

� En RPC (y en servicios web SOAP) no se sabe nada de la semántica de una operaciónde la semántica de una operación.� Habría que configurar cada servidor cache indicando si cada

operación de cada servicio invalida o no, si debe cachearse o ó óno, cómo identificar respuestas erróneas…

� Otros ejemplos de servicios generales:P i P d i t t t t t ti i� Proxies. Pueden reintentar transparentemente peticiones idempotentes.

� Seguridad: intermediarios pueden comprobar credenciales g p pde acceso.

� Filtrado / traducción de contenidos: traducción transparente a una representación no soportada por el servicio originala una representación no soportada por el servicio original.

Hypermedia: Cambio de Estado (1)

� El servicio no guarda información de estado para cada cliente:cada cliente:� Cada petición del cliente debe incluir todo lo necesario para

que el servidor pueda responderla.� La respuesta no depende de ninguna forma de peticiones

previas del cliente.� Facilita escalabilidad y replicación del servidor� Facilita escalabilidad y replicación del servidor.

Page 92: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Hypermedia: Cambio de Estado (2)

� La representación recibida por el cliente cambia (transfer) su estado (state)(transfer) su estado (state).

� La representación puede contener nuevas URLs hacia otros recursos.otros recursos.� Ejemplo: La representación de un cliente puede incluir un

enlace que permite acceder a sus pedidos:� http://www.acme.com/01235/orders

� Una aplicación REST (web) puede verse como el grafo de transición de estados de un autómatagrafo de transición de estados de un autómata. � Las representaciones de recursos (páginas) son estados del

autómata.� Las URLs (hiperenlaces) son transiciones entre estados.� El estado en el que estamos determina qué otros estados

( ) t ibl(recursos) tenemos accesibles.

Hypermedia: Cambio de Estado (y3)

� HATEOAS (Hypermedia As The Engine Of ApplicationState)

� Idealmente, un cliente de un servicio REST necesitaría conocer a priori una única URL (la de entrada al servicio).

� El resto de sus interacciones serían guiadas por las t i l drepresentaciones por las que va navegando:

� Hiperenlaces para operar sobre otros recursos.Si las operaciones requieren parámetros (e g� Si las operaciones requieren parámetros (e.g.consultas) , plantillas que especifican el formato de petición:p

� Equivalente a formularios en la web.� Hace que los clientes sean independientes de cambios en

los f atos de URLlos formatos de URL.

Uso de Representaciones Autodescriptivas

� Las representaciones devueltas deben intentar expresarse en formatos conocidos a priori por todos los clientes posibles del servicio:� Intentar evitar formatos propietarios de cada servicio. En lo

posible utilizar tipos MIME con semántica conocida (e gposible, utilizar tipos MIME con semántica conocida (e.g. ATOM).

� Si los clientes posibles están dentro de una organización intentar usar estándares de la organización.

� Si hay que añadir información específica, intentar proporcionar también una representación en un formatoproporcionar también una representación en un formatoestándar (e.g. ATOM)

� Así, cualquier cliente podrá al menos obtener parte de la i f ióinformación.

Ejemplo: Movies RPC (1)

� Ejemplo películas al estilo RPC (CORBA, DCOM SOAP )DCOM, SOAP,…)

� Proveedor proporciona una interfaz que consiste en entre otras las siguientesconsiste en, entre otras, las siguientesoperaciones:MovieSummary [] findMovies()MovieSummary [] findMoviesByDate(Calendar date)MovieInformationDetail getMovieInformation (String

movieId)String addMovie(MovieInformationDetail info)void updateMovie (String

movieId,MovieInformationDetail info)void removeMovie (String movieId)void addGross (double amount, movieId, Calendar

week)

� NOTA: usamos notación “a la J AVA”.

Page 93: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Ejemplo: Movies RPC (2)

� Los clientes del proveedor suelen utilizar: � findMovies permite obtener la lista de todas las películas� findMovies permite obtener la lista de todas las películas. � findMoviesByDate permite obtener la cartelera de un día

determinado.� Ambos métodos devuelven la información más importante

de una película (objeto MovieSummary):� Se incluye un identificador numérico para cada película� Se incluye un identificador numérico para cada película.� No se devuelve toda la información porque puede ser bastante

grande y normalmente no se necesita toda.

Si i t d l i f ió d lí l d� Si se quiere toda la información de una película puede llamarse a getMovieInformation pasándole el identificador de la película.

Ejemplo: Movies RPC (y 3)

� Las aplicaciones que editan los contenidos del proveedor (internas o externas) suelen utilizarproveedor (internas o externas) suelen utilizar� addMovie permite añadir una película.� removeMovie permite eliminar una película.� updateMovie. Permite reemplazar la información completa

de una película.addGross Permite especificar la recaudación semanal de� addGross. Permite especificar la recaudación semanal deuna película. Modifica el atributo recaudación total de la misma sumándole la nueva recaudación. No es idempotente.

� Las operaciones pueden lanzar exceptions ad-hoc como las que vimos en temas anteriores.

Ejemplo: Movies REST (1)� Cada película es un recurso con una URL asociada:

� http://www.moviesprovider.com/movies/Ameliehttp://www moviesprovider com/movies/The Godfather Part I I� http://www.moviesprovider.com/movies/The_Godfather_Part_ I I

� Su representación es un documento XML.� Similar al ejemplo utilizado en el tema 2 con elementos de� Similar al ejemplo utilizado en el tema 2 con elementos de

datos adicionales (e.g. recaudación, productora, puntero al trailer, punteros a biografías de los actores, …).P d í tili t ió lt ti ATOM� Podría utilizarse una representación alternativa en ATOM(del estilo de la que vimos en el Tema 3.2) para los clientes que no entiendan nuestro formato:

� A través de cabeceras HTTP es posible para el cliente especificar qué formatos acepta.

� Podría no utilizarse XML:� Podría no utilizarse XML:� Si los datos son sencillos. Ejemplo: CSV.� Si al cliente puede facilitarle su procesamiento. Ejemplo: desde

clientes J avascript es más fácil usar J SONclientes J avascript, es más fácil usar J SON.

Ejemplo: Movies REST (2)

� http://www.moviesprovider.com/movies es un recurso colección que contiene:q� La información resumida de todas las películas.� Una referencia al recurso de cada película.

U “f l i ” i di b f h� Un “formulario” que indica como buscar por fecha.

� Su representación es un documento XML:� Incluye alguna información de resumen de cada película.� Incluye alguna información de resumen de cada película.� Usa el elemento link de atom para especificar referencias a

otros recursos.Usa OpenSearch� Usa OpenSearch(http://www.opensearch.org/Specifications/OpenSearch/1.1) para especificar como consultar la colección.P d í h b t ió lt ti ATOM� Podría haber una representación alternativa en ATOM para los clientes que no entendiesen nuestro formato.

� Análogo a una página web convencional.g p g

Page 94: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Ejemplo: Movies REST (3)<?xml version="1.0"?> <movies xmlns="http://www.movieprovider.com"

xmlns:atom="http://www.w3.org/2005/Atom"> <movie title=“Amelie“>

<director>Jean Pierre Jeunet</director><atom:link rel=“detail”

href=“http://www moviesprovider com/movies/Amelie”/>href= http://www.moviesprovider.com/movies/Amelie /></movie><movie title=“The Godfather Part II“> <director> Francis Ford Coppola</director><atom:link rel=“detail”

href=“http://www.moviesprovider.com/movies/The_Godfather_Part_II”/>

</movie><atom:link rel=“search” href=“http://www.moviesprovider.com/movies/$search” >

</mov:movies>

Ejemplo: Movies REST (4)

http://www.moviesprovider.com/movies/$search

<?xml version="1.0" encoding="UTF-8"?><OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">

<ShortName>Search movies</ShortName><Description>Search movies by MoviesProvider </Description><Url type="application/xml" template="http://www.moviesprovider.com/movies?day={day?}&amp;month={month?}&amp;year={year"/>{ } p;y {y /

</OpenSearchDescription>

Ejemplo: Movies REST (4)

� http://www.movieprovider.com/movies puede recibir parámetros de “consulta”parámetros de consulta .

� http://www.movieprovider.com/movies?day=19&month=3&year=2007

P l li t ti b ál� Pero los clientes no tienen que saber cuál es exactamente el formato de URL utilizado. El patrón de URL especifica estode URL especifica esto.� El cliente sí tiene que saber lo que significan day, year,

month.� También tiene que conocer los tipos de relación usados en

los enlaces (“search”, “detail”).� Algunos (e.g. “search”, “prev”, “next”) están estandarizados:� Algunos (e.g. search , prev , next ) están estandarizados:

http://www.iana.org/assignments/link-relations/link-relations.xml

Ejemplo: Movies REST (5)

� ¿Qué hacen los clientes ahora?� Invocan http://www moviesprovider com/movies� Invocan http://www.moviesprovider.com/movies� Parsean el XML para obtener la información resumida.� Si quieren la información completa de una película, invocan q p p

a su referencia y parsean el XML.� Si quieren la cartelera, interpretan la URI Template y

componen la invocación con parámetroscomponen la invocación con parámetros.� Todas son peticiones GET.

Page 95: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Ejemplo: Movies REST (6)

� ¿Qué hacen las aplicaciones que editan los contenidos ahora?� Se hace una petición POST a un recurso colección� Se hace una petición POST a un recurso colección

(http://www.movieprovider.com/movies) que nos devuelve la nueva URL.Si el cliente puede decidir el identificador otra opción es� Si el cliente puede decidir el identificador, otra opción esrealizar una petición PUT indicando la URL asociada

� Ejemplo: http://www.moviesprovider.com/Movies/Seven j� Los datos de la película van como un documento XML en

el cuerpo del mensaje.Para borrar una película invocan el recurso que representa a� Para borrar una película invocan el recurso que representa ala película con el método DELETE.

� Para reemplazar la información de una película invocan el recurso que representa a la película con el método PUT.

� Los datos de la película van como un documento XML en el cuerpo del mensajeel cuerpo del mensaje.

Ejemplo: Movies REST (7)P l ió ddG h i i� Para la operación addGross hay varias opciones:� El cliente obtiene el recurso (GET), lo modifica y lo

sobreescribe (PUT)sobreescribe (PUT).� Obliga al cliente a descargarse la

representación completarepresentación completa.� Definimos la recaudación como un recurso.

El cliente puede descargarlo y actualizarlo sin� El cliente puede descargarlo y actualizarlo sindescargarse la representación completa de la película.pe u a

� Forzado, ya que la recaudación no parece realmente un recurso con entidad suficiente para ser referenciada por sí misma.

Ejemplo: Movies REST (8)P l ió ddG h i i� Para la operación addGross hay varias opciones:� Método PATCH:

� Nuevo método HTTP para updates parciales.� Nuevo método HTTP para updates parciales.� No especifica una sintaxis concreta para hacerlo.� No es idempotente y tiene efectos secundarios.

� Definimos un recurso http://www.moviesprovider.com/movies/XXXX/ al que accedemos vía POST:accedemos vía POST:

� Recibe como parámetro la cantidad a incrementar y un indicador de la operación a realizar (e.g. addGross).Los intermediarios sabrán que es una operación no� Los intermediarios sabrán que es una operación noidempotente y con posibles efectos secundarios sobre el recurso, aunque no entiendan toda su semántica.Quizás la opción más popular aunque menos RESTful� Quizás la opción más popular, aunque menos RESTful.

Ejemplo: Movies REST (9)E l d ti d h tili l� En lugar de usar exceptions ad-hoc se utilizan los códigos de error de HTTP:

Parámetros erróneos > 400 Bad Request� Parámetros erróneos -> 400 Bad Request� Película no existe -> 404 Not Found� Error de ejecución -> 500 Internal Errorj� …

� De esta forma, clientes genéricos pueden g pinterpretar los mensajes de error sin saber nada a priori sobre el servicio.

� El servicio podría incluir representaciones en XML con información más detallada con el error para clientes no genéricos, pero los genéricos sólo necesitan conocer los códigos HTTP.

Page 96: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Ejemplo: Movies REST (y 10)El i i d tili l f i lid d d HTTP� El servicio puede utilizar las funcionalidades de HTTPpara proporcionar información a los clientes sobre representaciones cacheables:representaciones cacheables:� I f-Modified-Since, ETags

REST: Ventajas

� Identificadores globales:� Proporcionan una manera de expresar relaciones entre p p

servicios creados independientemente.� Cada recurso tiene un localizador global, independiente

d l li ió l i dde la aplicación que cualquiera puede usar.

� Intermediarios pueden proporcionar valor añadido a cualquier serviciocualquier servicio.

� Se maximiza el desacoplamiento entre servicios y clientes:clientes:� HATEOAS: Cliente no necesita conocer formatos de URL.� Uso de operaciones estándar, códigos de error estándar y de p , g y

formatos estándar hace que cualquier cliente pueda procesar (hasta cierto punto) la salida de cualquier servicio.

� E g crawler de información de películas� E.g. crawler de información de películas

REST: Inconvenientes

� La interfaz uniforme puede ser restrictiva.� No siempre es fácil modelar las operaciones de un servicio

en términos de las operaciones de HTTP� Hay guías de buenas prácticas para representar operaciones

que no encajan directamente con las de HTTPque no encajan directamente con las de HTTP

� HATEOAS puede ser ineficiente:� En nuestro ejemplo, si el cliente se sabe el formato de URL ,j p , ,

precisa sólo 1 petición HTTP para buscar por fecha. Si no, precisa tres.

Normalmente para el programador es un enfoque de más� Normalmente para el programador es un enfoque de másbajo nivel: se huye el código autogenerado porque aumenta el acoplamiento entre cliente y servicio.� APIs como J AX-RS disminuyen el esfuerzo necesario.

Tema 3.7: Introducción a J AX-RS

Page 97: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Índice

� Introducción a J AX-RSUn ejemplo simple con J AX RS: otra implementación� Un ejemplo simple con J AX-RS: otra implementaciónmás del servicio de películas

Introducción (1)

� J AX-RS: J ava API for RESTful Web Services.Es el API estándar para la creación de servicios web� Es el API estándar para la creación de servicios webRESTful (o casi) en J AVA.

� Es parte de J ava EE 6� Es parte de J ava EE 6� La versión actual es la 1.1. � La versión 2 0 está prevista para 2012� La versión 2.0 está prevista para 2012.

� Incorpora soporte mejorado para HATEOASMejoras para la creación de clientes� Mejoras para la creación de clientes

Introducción (2)

� Típicamente, el programador crea un POJ O (Plain Old J ava Object) para cada tipo de recursoJ ava Object) para cada tipo de recurso.

� Se usan anotaciones para especificar como deben procesarse las peticiones sobre dicho recurso.procesarse las peticiones sobre dicho recurso.

� Abstrae al programador del servicio de complejidades como:� Recepción y devolución de cabeceras HTTP� Creación de servlets� Parsing de URLs� Etc.

I ntroducción (y 3)

� Existen múltiples implementaciones:� J ersey http:// jersey java net/� J ersey. http:// jersey.java.net/

� Implementación de referencia, apta para producción.� RESTlet. http://www.restlet.org/p g� Apache CXF. http://cxf.apache.org/� RESTEasy. http://www.jboss.org/resteasy

Page 98: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Servicio Movies RESTful (1)

� Recursos:/movies� /movies

� GET: Lista completa de películas� Admite parámetros day month year en la URL� Admite parámetros day, month, year en la URL

� POST: Añadir una nueva película (XML en el cuerpo).p )

� Devuelve código 201 Created y la URL al nuevo recurso en la cabecera Location.

� /movies/<<id>>� GET: Acceso a los datos de una película.� PUT: Reemplazar película.� DELETE: Borrar película.

Servicio Movies RESTful (2)

� Errores:Uso de códigos HTTP� Uso de códigos HTTP.

� Parámetros incorrectos o fallo de parsing: 400 BadRequestRequest

� Película inexistente: 404 Not Found� Error interno: 500 Internal Error

� Información adicional en el cuerpo del mensajeusando el mismo formato que en el servicio REST comentado en el tema 3.3.

Servicio Movies RESTful (y 3)

� ¿Es totalmente RESTful?No se siguen los principios HATEOAS� No se siguen los principios HATEOAS.

� E.g. Para buscar películas es necesario saber el formato de URL.formato de URL.

� No se dispone de una representación en un formato más estándar (e.g. ATOM).( g )

� Sí son características RESTful:� Cada película tiene su propio id global.Cada pe cu a t e e su p op o d g oba� Uso consistente de las operaciones HTTP: GET, POST, PUT,

DELETE y de los códigos de respuesta HTTP.P it f i l i t di i ( C h )� Permite funcionar a los intermediarios (e.g. Cache)

Ejemplo Movies

� La versión RESTful del servicio podría implementarsedirectamente con servlets y J DOMdirectamente con servlets y J DOM.

� Sin embargo, lo haremos con J AX-RS paraejemplificar su uso.ejemplificar su uso.

� Cambios en la implementación de la lógica de negocio:g� Añadimos una operación findByID.� Cuando la operación findByDate recibe ‘null’ como

á t d l t d l lí lparámetro, devuelve todas las películas.

� Veremos sólo el lado servidor.El lado cliente apenas cambia con respecto al� El lado cliente apenas cambia con respecto alapartado 3.3

Page 99: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.restful.MovieResource (1)

package es.udc.ws.movies.service.restful;<<imports>> … @Path("/movies")public class MovieResource extends Application {public class MovieResource extends Application {

@GET@Produces("application/xml")public ServiceResponse findMovies(public ServiceResponse findMovies(@QueryParam("year") String year,@QueryParam("month") String month,@QueryParam("day") String day) {

try {Calendar releaseDate = DateOperations.getDate(day, month,

year);List<MovieInformationTO> movieInformationList =

MovieInformationFacade.getInstance().findMoviesByReleaseDate(releaseDate);

return new ServiceResponse(MovieXMLConversor.toXML(movieInformationList));

es.udc.ws.movies.service.restful.MovieResource (2)

} catch (Exception e) {ServiceResponse response = new ServiceResponse(

new ExceptionInServiceResponse(new ExceptionInServiceResponse(ExceptionCodes.INCORRECT_PARAMETERS,e.getMessage()));

throw new WebApplicationException(Response.status(Responses.CLIENT ERROR).Response.status(Responses.CLIENT_ERROR).entity(response).type("application/xml").build());

}}

es.udc.ws.movies.service.restful.MovieResource (3)

@GET@Path("/{id}")@Produces("application/xml")public ServiceResponse findById(@PathParam("id") String id) {public ServiceResponse findById(@PathParam( id ) String id) {

try {MovieInformationTO instance =

MovieInformationFacade.getInstance().findMovie(Long.valueOf(id));

return new ServiceResponse(MovieXMLConversor.toXML(instance));

} catch (Exception e) {ServiceResponse response = new ServiceResponse(

new ExceptionInServiceResponse(ExceptionCodes.INSTANCE_NOT_FOUND,e.getMessage()));

throw new WebApplicationException(Response.status(Responses.NOT_FOUND).entity(response).type("application/xml").build());

}}

es.udc.ws.movies.service.restful.MovieResource (4)@POST@POST@Consumes("application/xml")@Produces("application/xml")public Response addMovie(MovieInformationTO movieInformation,

@Context UriInfo ui) {@Context UriInfo ui) {Long identifier;try {

identifier = MovieInformationFacade getInstance() addMovie(movieInformation);MovieInformationFacade.getInstance().addMovie(movieInformation);} catch (MovieInformationException e) {

ServiceResponse response = new ServiceResponse(new ExceptionInServiceResponse(ExceptionCodes INCORRECT MOVIE INFORMATIONExceptionCodes.INCORRECT_MOVIE_INFORMATION,e.getMessage()));

throw new WebApplicationException(Response.status(Responses.CLIENT_ERROR).entity(response).type("application/xml").build());entity(response).type( application/xml ).build());

}Element identifierElement = new Element("identifier",

MovieXMLConversor.XML_NS);identifierElement.setText(identifier.toString());identifierElement.setText(identifier.toString());ServiceResponse response = new ServiceResponse(identifierElement);return Response.created(URI.create(ui.getRequestUri().toString() +

"/" + identifier)).entity(response).type("application/xml").build();.type( application/xml ).build();

}

Page 100: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.restful.MovieResource (5)

@PUT@Consumes("application/xml")@Produces("application/xml")@Path("/{id}")@Path( /{id} )public ServiceResponse updateMovie(@PathParam("id") String id,

MovieInformationTO movieInformation){try {

movieInformation.setIdentifier(Long.valueOf(id));movieInformation.setIdentifier(Long.valueOf(id)); MovieInformationFacade.getInstance().updateMovie(movieInformation);

} catch (InstanceNotFoundException e) {ServiceResponse response = new ServiceResponse(

new ExceptionInServiceResponse(ExceptionCodes.INSTANCE_NOT_FOUND,e.getMessage()));

throw new WebApplicationException(Response.status(Responses.NOT_FOUND).entity(response).type("application/xml").build());

} catch (MovieInformationException e) {ServiceResponse response = new ServiceResponse(

new ExceptionInServiceResponse(ExceptionCodes.INCORRECT_MOVIE_INFORMATION,e.getMessage()));

throw new WebApplicationException(Response.status(Responses.CLIENT_ERROR).entity(response).type("application/xml").build());

}return new ServiceResponse();

}

es.udc.ws.movies.service.restful.MovieResource (6)

@DELETE@Consumes("application/xml")@Path("/{id}")public void deleteMovie(@PathParam("id") String id) {public void deleteMovie(@PathParam( id ) String id) {

Long identifier;try {

identifier = Long.valueOf(id);identifier Long.valueOf(id);} catch (Exception e) {

ServiceResponse response = new ServiceResponse(new ExceptionInServiceResponse(ExceptionCodes.INCORRECT PARAMETERS,p _ ,e.getMessage()));

throw new WebApplicationException(Response.status(Responses.CLIENT_ERROR).entity(response).type("application/xml").build()); y( p ) yp ( pp / ) ());

}

es.udc.ws.movies.service.restful.MovieResource (7)

try {

MovieInformationFacade.getInstance().removeMovie(identifier);} catch (InstanceNotFoundException e) {

ServiceResponse response = new ServiceResponse(new ExceptionInServiceResponse(ExceptionCodes.INSTANCE_NOT_FOUND,e.getMessage()));

throw new WebApplicationException(Response.status(Responses.NOT_FOUND).entity(response).type("application/xml").build());

}}

}

Comentarios (1)

� Creamos una clase para cada tipo de recurso.� La anotación @Path permite especificar patrones de� La anotación @Path permite especificar patrones de

URL a los que se asociará nuestro recurso:� Nuestra clase está asociada a la URL /moviesNuestra clase está asociada a la URL /movies

� Algunas operaciones extienden esta ruta con @Path("/{id}"), por lo que están asociados a URLs de la forma / i /1forma /movies/1

� Las anotaciones @GET, @POST, @PUT, @DELETEidentifican con qué método HTTP se asocia cadaidentifican con qué método HTTP se asocia cadaoperación.

Page 101: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Comentarios (2)� La anotación @PathParam permite mapear un parámetro

en la URI con un parámetro de una operación:public ServiceResponse findById(@PathParam("id")public ServiceResponse findById(@PathParam("id")String id)

� La anotación @QueryParam permite mapear de parámetros en la URL a parámetros en las operaciones:

public ServiceResponse findMovies(@QueryParam("year") String year,…

� Otras anotaciones relacionadas con parámetros: F P P á t difi d l d l� FormParam. Parámetros codificados en el cuerpo de la petición (POST).

� HeaderParam Mapea valores de la cabecera de la� HeaderParam. Mapea valores de la cabecera de lapetición.

� CookieParam. Mapea valores de las cookies.� MatrixParam. Parámetros de la forma /field;value/

Comentarios (3)� La anotación @Produces indica que tipo de

respuesta va a generar la operación (irá en la b t t t )cabecera content-type).

� La anotación @Consumes indica qué tipo de contenidoacepta la operación en el cuerpo de la peticiónacepta la operación en el cuerpo de la petición.

� Es posible que un método pueda producir o consumirvarias formatos (e g xml json)varias formatos (e.g. xml, json).

� También es posible tener distintos métodos paraconsumir/producir cada formato (J AX-RS usará lasconsumir/producir cada formato (J AX RS usará lasanotaciones para saber a cuál llamar en cada caso).

� J AX-RS maneja transparentemente las cabecerasj pHTTP involucradas.

Comentarios (y 4)� Para traducir de los contenidos del cuerpo de la

petición a parámetros es necesario proporcionari l t i d l i t fimplementaciones de la interfazMessageBodyReader.

Para traducir de los contenidos del valor de retorno� Para traducir de los contenidos del valor de retornode la operación al cuerpo de la respuesta esnecesario proporcionar implementaciones de lanecesario proporcionar implementaciones de lainterfaz MessageBodyWriter.

es.udc.ws.movies.service.restful.MovieInformationTOReader

<<imports>@Consumes("application/xml")@Providerpublic class MovieInformationTOReader implementspublic class MovieInformationTOReader implements

MessageBodyReader<MovieInformationTO>{

public boolean isReadable(Class<?> type, Type type1, Annotation[] antns, MediaType mt) {

return type == MovieInformationTO.class;}

public MovieInformationTO readFrom(Class<MovieInformationTO> type, Type type1, Annotation[] antns, MediaType mt,MultivaluedMap<String, String> mm, InputStream in)

throws IOException, WebApplicationException {return MovieXMLConversor.toMovieInformation(in);

}

}

Page 102: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

es.udc.ws.movies.service.restful.ServiceResponseWriter

@Produces("application/xml")@Providerpublic class ServiceResponseWriter implements

MessageBodyWriter<ServiceResponse>{public boolean isWriteable(Class<?> type,Type type1,

Annotation[] antns,MediaType mt) {

return type == ServiceResponse.class;}

public long getSize(ServiceResponse t,Class<?> type,Type type1,Annotation[] antns,MediaType mt) {

return -1;}public void writeTo(ServiceResponse t,

Class<?> type,Type type1,Annotation[] antns,MediaType mt,MultivaluedMap<String, Object> mm,OutputStream out)

throws IOException, WebApplicationException {ServiceResponseXMLConversor.toXML(t, out, true);

}}

Comentarios (1)� Las implementaciones de MessageBodyReader y

MessageBodyWriter deben usar la anotación@Provider.

� Las implementaciones de MessageBodyReaderpueden usar la anotación @C para restringirpueden usar la anotación @Consumes para restringira que formato de representación deben aplicarse.

� Las implementaciones de MessageBodyWriter pueden� Las implementaciones de MessageBodyWriter puedenusar la anotación @Produces para restringir a queformato de representación deben aplicarse.p p

Comentarios (2)� Los métodos isReadable y isWriteable permiten

determinar a qué objetos puede aplicarse estai l t ióimplementación.� MovieInformationTOReader puede aplicarse para

construir parámetros de tipo MovieInformationTOconstruir parámetros de tipo MovieInformationTOpartiendo del cuerpo de una petición HTTP.

� Necesario en addMovie y updateMovie

d li t i� ServiceResponseWriter puede aplicarse para construirla respuesta a una petición partiendo de un objetoServiceResponse.p

� Usado en findMovies, findByID, addMovie y en respuestas de error de todos los métodos.

Comentarios (3)� Los métodos readFrom y writeTo deserializan /

serializan el cuerpo de la entidad.� getSize se usa para fijar la cabecera content-length.

Devuelve -1 cuando no es posible saber longitud poranticipado:anticipado:� Para respuestas generadas dinámicamente, calcular el

tamaño puede obligar a leerla completa y guardarla enterap g p y gen memoria antes de empezar a devolverla (poco eficiente y escalable si las respuestas son grandes).

Cuando un método de una clase recurso recibe /� Cuando un método de una clase recurso recibe /devuelve un objeto en el cuerpo de la petición, J AX-RS busca un Reader / Writer apropiado.RS busca un Reader / Writer apropiado.

Page 103: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Comentarios (4)� Existen algunos formatos soportados directamente

para los que no es necesario proporcionar un Reader W ito un Writer:

� FormParameter. Capaz de interpretar parámetrospasados en el cuerpo de la petición (peticiones POST)pasados en el cuerpo de la petición (peticiones POST).

� J AXB. Serialización / Deserialización de J ava a XML y de XML a J ava.� Si un método devuelve directamente un objeto de una

clase anotada mediante J AXB, se traduce automáticamente a XMLautomáticamente a XML.

Comentarios (5)� Las respuestas pueden involucrar no sólo el cuerpo

de la entidad sino también metadatos (cabeceras).� En esos casos, el objeto Response permite construir

una respuesta:Ti ét d t d l ti á� Tiene métodos para crear respuestas de los tipos máscomunes en HTTP. Ejemplo:� created. Crea una respuesta con código 201 e incluye� created. Crea una respuesta con código 201 e incluye

el parámetro recibido como valor para Location.� Otros: notmodified, nocontent, ok (recibe entidad),

servererror,...

� También permite especificar el código de respuestaHTTP que se quieraq q

Comentarios (6)� Los métodos de Response devuelven un objeto

Response.ResponseBuilder.

� Este objeto ofrece métodos para modificar la respuesta:� Añadir o sustituir una entidad (cuerpo del

mensaje)� Fijar el valor de cabeceras como:

� Content-typeL� Language

� Cache (cache-control, max-age,...)

Finalmente el método c ea la esp esta� Finalmente el método build crea la respuesta.

� Si respuesta incluye una entidad (entity), se li i l t b ll l W itaplica igualmente sobre ella el Writer que

proceda.

Comentarios (7)� Ejemplos de uso:Response.created(URI.create(ui.getRequestUri().toString() +

"/" + identifier)) entity(response)"/" + identifier)).entity(response)

.type("application/xml").build();

� El método created se usa para crear unaprespuesta con código 201 y especificar el valorpara la cabecera Location. Devuelve un Response.ResponseBuilder.

� Los métodos entity y type de ResponseBuilder se usan para fijar unaentidad en la respuesta y para especificar el tipode contenido.

� El método build crea la respuesta.� Se usará el Writer adecuado para serializar el objeto

response.

Page 104: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Comentarios (y 8)� WebApplicationException:

� Excepción de Runtime para interrumpir la ejecuciónd dgenerando una respuesta de error.

Tema 4: Diseño de flujos inter-li ióaplicación

4.1 Introducción a los Sistemas de FlujosFlujos

Arquitectura de Referencia

App1 App2 App3 App4Aplicacionesfinales de usuariousuario

Gobernanza

Seguridad

Componentes reusables de Lógica de negocio: JEE/ .NET/ ESB / EAI

Capa de Acceso e Integración de DatosGestión

Integración de PlataformaIntegración de Plataforma

SRMCRM ERPWeb Docum

entosFicher

osWeb

Services

AplicacionesProveedoras de

Servicios

Page 105: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Arquitectura de referencia (2)� Aplicaciones proveedoras de servicios:

� Gestión de clientes (CRM), Gestión de recursos (ERP), Gestión de proveedores (SRM), Facturación, Almacén,…

� Aplicaciones externas: socios, proveedores, clientes.

I t ió d Pl t f� Integración de Plataforma� Comunicación de aplicaciones en diferentes máquinas.� Acceso a aplicaciones independientemente de localización� Acceso a aplicaciones independientemente de localización,

hardware, SO y lenguaje de programación.� Paradigma dominante: RPC.

� Para el programador invocar una aplicación remota es muy similar a invocar una aplicación local.

� Paradigma emergente: REST� Paradigma emergente: REST.� Basado en los principios de la Web.

� Tecnología dominante: Servicios Web.

Arquitectura de referencia (3)� Capa de Acceso e Integración de Datos

� Punto único de acceso a datos. Generalización del patrón DAO (Data Access Object).

� Ofrece API única de acceso a datos, independiente de arquitectura de almacenamientoarquitectura de almacenamiento.

� Proporciona componentes de acceso a datos reusables. Ejemplo:

� Obtener los datos de un cliente junto con sus incidencias graves abiertas y nuestro nivel de facturación con él.

� Independencia Física y Lógica. Si hay cambios en la p y g ylocalización/esquemas de las fuentes de datos, sólo hay que tocar esta capa, no las aplicaciones. Ejemplos

� Una fuente cambia su esquema de datos� Una fuente cambia su esquema de datos.� Una fuente (e.g. Mainframe) es sustituida por otra.� Los datos que antes venían de una fuente ahora vienen de dos

(f i )(fusiones).� Los datos que antes venían de dos fuentes ahora vienen de

una (reingeniería).

Arquitectura de referencia (4)� Componentes de Lógica de Negocio

� Lógica de negocio que puede ser usada por una o l f l lvarias aplicaciones finales. Ejemplos:

� Procesar un pago de un cliente.P did d li t� Procesar un pedido de un cliente.

� Gestionar una incidencia de un cliente.� ...

� Pueden programarse con tecnologías convencionales como J EE o NETconvencionales como J EE o .NET.

� Sin embargo, existen tecnologías específicas que facilitan la programación de ciertos tipos defacilitan la programación de ciertos tipos deprocesos de negocio:

� EAI (Enterprise Application Integration), ESB (Enterprise Service Bus), BPM (Business Process Management)...

Arquitectura de referencia (5)� Componentes de Lógica de Negocio (cont.)

� Tecnologías como J AVA están más orientadas a la l ó d írealización de procesos síncronos que:

� Reciben su entrada de un proceso llamante.R li l ló i i á i d ll� Realizan alguna lógica, quizás invocando para ello a aplicaciones externas.

� Devuelven un resultado al llamante� Devuelven un resultado al llamante.� Todo el proceso dura milisegundos o segundos.� Si es necesario, pueden usarse transacciones.Si es necesario, pueden usarse transacciones.� Ejemplo. Procesar un pago.

Page 106: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Arquitectura de referencia (6)� Componentes de Lógica de Negocio (cont.)

� Ejecución de algunos procesos puede durar días:E i t d i id i d li t� E.g. procesamiento de una incidencia de cliente.

� Estos procesos plantean una serie de necesidades:Invocaciones asíncronas a aplicaciones externas� Invocaciones asíncronas a aplicaciones externas.

� E.g. esperar por resultado acción correctora.� Entradas pueden venir desde múltiples aplicaciones� Entradas pueden venir desde múltiples aplicaciones

(no sólo el llamante) y en diferentes puntos de ejecución del proceso:

� E.g. el cliente pasa a estado VIP durante el procesamiento de la incidencia.

Arquitectura de referencia (8)� Componentes de Lógica de Negocio (cont.)

� Los “resultados” puede haber que notificárselos aúl l l ól l llmúltiples aplicaciones, no sólo al llamante.

� E.g. Actualizar saldo con empresa instaladora.� No es posible usar transacciones basadas en

bloqueo.N d bl i t BD� No se puede bloquear un registro en BDdurante tres días !!Acciones de compensación: deshacer los� Acciones de compensación: deshacer losefectos de una acción (e.g. anular un pago).

Arquitectura de referencia (y 9)� Existen lenguajes específicos que ayudan a

programar este tipo de aplicaciones:d l d fl� Modelan un proceso de negocio como un flujo que

coordina a múltiples aplicaciones.A d l fl j d d f� A menudo, los flujos pueden crearse de forma gráfica.Existen múltiples lenguajes propietarios de cada� Existen múltiples lenguajes propietarios de cadafabricante.

� Estándar emergente: BPEL (Business Process� Estándar emergente: BPEL (Business ProcessExecution Language).

Entorno actual de Negocio

� Una organización mediana/grande depende para su funcionamiento de gran cantidad depara su funcionamiento de gran cantidad deaplicaciones informáticas:

CRM (C t R l ti hi M t) ERP� CRM (Customer Relationship Management), ERP(Enterprise Resource Planning), Call Center, Facturación Pagos Portal web etcFacturación, Pagos, Portal web, etc.

� Necesidad de automatización de procesos:Ahorro de costes� Ahorro de costes.

� Evitar errores.I t d ti id d� Incrementar productividad.

� Rápido tiempo de reacción (real-time enterprise).Et� Etc.

Page 107: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Procesos de Negocio

� Los procesos básicos de una organización involucran la interacción entre múltiples aplicacionesla interacción entre múltiples aplicacionespreexistentes y/o personas.

� Normalmente, estos procesos pueden modelarse� Normalmente, estos procesos pueden modelarsecomo flujos (workflows) que especifican cómo deben colaborar entre sí las distintas entidades para llevar a cabo el proceso.

� Un flujo especifica aspectos tales como:� La secuencia de acciones a realizar por cada entidad.� Los datos intercambiados entre las entidades y la manera en

que deben ser transformados.que deben ser transformados.� Reglas para la toma de decisiones.� Restricciones a satisfacer.� Etc.

Ejemplo (1) � Procesamiento de una incidencia en una operadora

de telecomunicaciones.1. Incidencia recibida desde aplicación de CallCenter o ayuda

Web.2 Sistema clasifica la incidencia de acuerdo a su urgencia y al2. Sistema clasifica la incidencia de acuerdo a su urgencia y al

tipo de producto al que afecta. 3. Se consulta a la aplicación de CRM (Customer Relationship

Management) para determinar si el cliente tiene contrato de mantenimiento (si no, la incidencia no se atenderá).

4 Se emite una petición a la aplicación de ERP (Enterprise4. Se emite una petición a la aplicación de ERP (EnterpriseResource Planning) para que la incidencia se asigne a algún miembro del servicio técnico para que realice un diagnóstico preliminar y sugiera una acción correctora Endiagnóstico preliminar y sugiera una acción correctora. Enfunción de la clasificación de la incidencia, se solicitará personal de un grupo u otro (e.g. teléfono, Internet,..).

Ejemplo (2)

5. Cuando el servicio técnico responde con el diagnóstico preliminar (usa para ello una aplicación web desarrollada p ( p ppor la operadora), se procesa su respuesta. Se chequea que la respuesta llegue en plazo y se comunica a la aplicación ERP (control de productividad).ERP (control de productividad).

6. Si la acción correctora requiere de un desplazamiento al cliente, se emite una petición a la aplicación ERP de instaladores para que en función de las características deinstaladores para que, en función de las características dela incidencia y la acción correctora (localización geográfica, historial con ese tipo de actuaciones, etc.), se escoja un instalador.

Ejemplo (3)

6. Cuando el instalador realiza la acción correctora planificada, informa del resultado.

7. Si el resultado es positivo, la incidencia se cierra. Se informa al ERP de instaladores, a la aplicación de pagos y al CRM.

8. Si el resultado es negativo, vuelve a asignarse al servicio técnico (a través de la aplicación ERP) para que recomiende una nueva acción correctora. Se adjunta el jinforme entregado por el instalador.

9. El servicio técnico puede determinar que la acción correctora fue mal realizada por el instalador. En ese caso,p ,se informa al ERP de instaladores y a la aplicación de pagos para deshacer el pago.

10. Si el cliente se da de baja durante el proceso, el CRM10. Si el cliente se da de baja durante el proceso, el CRMcancela el proceso.

Page 108: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Ejemplo (4)

� En todo este proceso se necesita:� Comunicación de todas las aplicaciones involucradas (e g� Comunicación de todas las aplicaciones involucradas (e.g.

Web Services).� Los mensajes intercambiados deben ajustarse a normas de

óformato establecidas y debe poder validarse su corrección sintáctica (XML).

� Deben existir mecanismos para transformar documentos.Deben existir mecanismos para transformar documentos.

Ejemplo (y 5)

� Lógica de control inter-aplicación para estructuras condicionales (e.g. si incidencia se cierra o no con éxito) y( g yrepetitivas.

� Proceso de muy larga duración: puede durar días.Se reciben datos no sólo del llamante (e g cancelación de� Se reciben datos no sólo del llamante (e.g. cancelación deproceso si cliente se da de baja).

� Es preciso soportar interacciones asíncronas (e.g. grespuestas del servicio técnico, respuestas de instaladores).

� Acciones de compensación (e.g. deshacer el pago previsto a un instalador que involucra a la aplicación de pagos y ala un instalador, que involucra a la aplicación de pagos y alERP de instaladores) o métodos de compensación.

Sistemas de Gestión de Flujos (1)

� Muchos procesos de negocio pueden modelarse como flujoscomo flujos.

� Metodología:� Se escribe un “envoltorio” o “adaptador” para cada� Se escribe un envoltorio o adaptador para cada

aplicación � Se define una interfaz remota estándar (e.g. Web Service)

para el adaptador que permite acceder a las funcionalidadespara el adaptador, que permite acceder a las funcionalidadessoportadas por aplicación.

� El adaptador debe ser genérico, válido para soportar las necesidades de todos los procesosnecesidades de todos los procesos.

� La información de entrada y salida a cada aplicación se modela de acuerdo a algún formato de intercambio (e.g. XML, SOAP )SOAP,…).

Sistemas de Gestión de Flujos (2)

� Disponemos de una Plataforma que da soporte a la definición de procesos de negocio expresados comodefinición de procesos de negocio expresados comoflujos que coordinan a las distintas aplicaciones:� El enrutamiento de mensajes entre aplicaciones, las j p

condiciones que deben cumplirse y las transformaciones a realizar en ellos pueden especificarse en un lenguaje específico pensado para este tipo de aplicaciones.específico pensado para este tipo de aplicaciones.

� Este lenguaje permite que, en gran medida, la creación del flujo pueda realizarse de manera gráfica.

� La Plataforma da soporte para problemas comunes y difíciles: asincronismo, mensajería, mecanismos de compensación, transacciones distribuidas, trazabilidad y gestión de informes…

Page 109: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Sistemas de Gestión de Flujos (3)

� Ventajas potenciales:� Debido al uso de “envoltorios” genéricos para cada� Debido al uso de envoltorios genéricos para cada

aplicación:� Mejor desacoplamiento entre aplicaciones.� No es necesario escribir cada vez código ad-hoc para las

aplicaciones (esto no siempre es cierto, pero al menos, una vez añadida una funcionalidad, queda disponible para todos l d i )los procesos de negocio).

� Debido a la Plataforma de Gestión de Flujos:� Lenguaje de programación gráfico y orientado a este tipo g j p g g y p

específico de problema.� El soporte para el intercambio de mensajes, el asincronismo,

las transacciones y otros mecanismos genéricos de diseño eslas transacciones y otros mecanismos genéricos de diseño esproporcionado para todos los procesos de negocio por la plataforma de gestión de flujos.

Sistemas de Gestión de Flujos (y 4)

� Ventajas potenciales:� Todos los procesos de negocio son gestionados de la misma� Todos los procesos de negocio son gestionados de la misma

forma y desde un único punto:� Facilidad de administración y obtención de informes (cuadros

d d áli i d t d i t )de mando, análisis de tendencias, etc.).� Facilita la implantación de políticas globales: autenticación,

seguridad, etc.

� Algunas herramientas traen ya implementados:� Adaptadores típicos.� Flujos típicos (normalmente sirven sólo como plantilla de� Flujos típicos (normalmente sirven sólo como plantilla de

desarrollo):� Incidencias.� Pedidos� Pedidos� Etc.

Evolución (1)

� 1ª Generación: WMS (Workflow Management Systems)Systems).� Orientado a que las entidades involucradas en los procesos

de negocio sean personas:� Las acciones a realizar dentro de un flujo consisten

fundamentalmente en el rellenado o la interpretación de formularios por parte de los usuarios.

� Dificultades de integración con aplicaciones existentes.� Falta de funcionalidad para integrar aplicaciones. Por

ejemplo:ejemplo:� Sin soporte para mecanismos típicos de integración de

plataforma. / d� Sin soporte para transacciones y/o mecanismos de

compensación.� Poca escalabilidad.� Etc.

Evolución (2)� 2ª Generación: Sistemas EAI (Enterprise Application

Integration).� Centrados en coordinar aplicaciones, en lugar de personas:

� Conectores (o Adaptadores) pre-construidos para tecnologías habituales Opción: JCA J2EE Connector Architecturehabituales. Opción: JCA. J2EE Connector Architecture.

� XML como lenguaje de comunicación inter-aplicación. � Reglas de transformación de documentos XML para definir

“t d i ” t l l j d d li ió“traducciones” entre los lenguajes de cada aplicación.� Soporte para asincronismo� Soporte transaccional.� ...

� Escalabilidad y tolerancia a fallos:Basados en arquitecturas distribuidas� Basados en arquitecturas distribuidas.

� Trazabilidad.

� Centrado fundamentalmente en Intranets (perspectiva intra-organización).

� Lenguajes propietarios.

Page 110: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Evolución (y 3)

� 3ª Generación: Salto al B2B. Orquestación de Servicios WebServicios Web� Perspectiva inter-organización.

� Aumentan las preocupaciones de seguridad.� Aumentan los requisitos de autonomía y asincronismo de las

aplicaciones.� Surgen nuevas posibilidades. Ejemplo: descubrimiento de g p j p

servicios relevantes (UDDI ).� Etc.

WS BPEL: Web Service Business Process Execution� WS-BPEL: Web Service Business Process ExecutionLanguage

����� ������������ � ����

������������ ���

� ������������ �� ��������� ����� �������� ��������� ��� ����� �� ���� ����� �������� ��������� �� ���� ������

� �� ����� �� �������� �� ������������� ������ ��� ��� �������� �� ����� ������ ������� ���� ������������ �������� ���������� ������

� ������ ������������ �� �������� �����������

� ������ ��������� ��� ��������� ������ �� �� �������� ��������������

� ����� ��������� ��� ����� ������� ������ ��������� ������� � ����� � �������������� ��� ���� ��������� � ����

� ������������� ������� ������� �� ����� ��� ������� ����������������� ���� ���������� � �� ��� ��� �������� �� ����������� ����� �� �������� ��������� ��� ����������

������������ �� ��

� ������� ���� ������������� ��� ����� ����� ��������� ����

� ������� ������ ��������� ���� ����� ��� �������

Page 111: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������������ � ������� ���

� �� ������� �� �������� ��� � ��� �������� �������������� � �������� ������� ������ ������������� ��������������

� ������� ��� ��� �������� ��� ���� ��� �� ����������� �� �������� ��� ���������

� ��� �������� ��� ����������� ���������� ��� ���� � � � ����� ��� ��������� � ��� �� ����� ��������� ��� �� ������ �������� ������� ���� �������� ��� �������������������

� ������� ����� �� ��������� ���� ����������� �� ���������� ���� ���� ���� �� ���������

������������ � ������� ���

� �� �� ���������� ������� ����� ������� ���������������� ������������� �������� ������� ������ �� ��� ���������

� �� ����� �� ����� ������ ��� ��������� ���� ���������������

� ��� �� �� �� �������� ������ ���� �������� ������ ������� � �� ��� �������� �������� �� ������� ������������ � �� ��� �������� �������� �� ������� ���������

� ������� ��������� �� ����� ��������� ������ ���� �� ��������� ����� ����� ��� ���� ���� ��������� � �� ��������������� �� ��� �������� �� ���������

� ��� ��������� �� ������������������� ��� ����������� �������� ��� ������ �� �� �������������� ��������� ��� ���������� ������������� �� ��� ������� ��������������������

������������ � ������� �� ��

� ����������� ��������� �� ��������� ������ ����������������� ��������� ��� ���������� �� �� ������� ����������� ������������� ������������

� ����������� �� ������������������� �� ������ �������������� ����������� �� ������ ��������������

� ����������� �� ������������ ������������ ����������

� ��������� �� ������������

� �� ����� ������� ������ � �� ��� ��� �������� ���������� ����� �� ���������

� ����������� �� ������� ������� �� ������� ���� �� ������� ��� �� ������� � �������� �������� ��� ����� �� �������� ���� �� ����� ���������������

������

� ��� ������ ����������� � ��� ��������� ��� ������������ �� �������� �� ����� �� ��� ����������� ���� �� ������ ��� ����� �������� ���� ������

� ������ �� ������ �������� ���� ��� ��������� �� ��������� ����� ������� � �� ���������� �� ��� �������� �� ��������� ���� �������� ��������� �� ���������� �������� �� ������� �������� ��������� �������

� ������ ��� ����� �������� ������� ������ �� �������� ��� ��� ��������� �� ���������� ������� � ��� �������������� �� ��� �������� �� ��������� ���� ������������� ������� ��� ���� ��������� �� ������������������������ ������� ��� ���� ������� �� ������������������������ ������� ��� ���� �������� ������������

Page 112: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����� �� ������� ����� ������ ���

� �������� ���� �������� �� ����� �� ������� �� �������� ����� ��� ��������� ����� �������� �� ��������� � ��������� �������� ���������� �� ����� �� ����� ��� �������� ����������� �������� �� ����� �������

� ������ ��� ��������� �� ������� ���� ��� ������ ��� ����� �� ����� �� ������������������ �� �������� ��� ����� ����� ��� ��� ������������ ���� ����� �� �������

� �� ������ �� ����� �������� ����� �� ������������������� �� ������� ��������� �� �������� ���� ������ ������������� �� ��� ������ ��� �� ������� �� ����������� ���� ������

����� �� ������� ����� ������ ���

� ���������� �� �� ����������������� �� ������� �� �������� ���� ���������� ��� �� ������� ������ �� ������������ �� �� ������� �����

� ���������� ���� �� ������ ����� ������������������ ��������������������

���������� ������������������

������ ���������������������������������������

������� ��������������������������������������

������������

�����������

� ���������� ��������������� ����� ����������������������������� ��������������������������

���������� ������������������������

�������������� ��������������������������

������������

�����������������������

����� �� ������� ����� ������ ���

� ������������� �� ���������� ��� ���� �� ������ �� �� �������� �� �����

� ��� ��������� ���������� ������ ���� ������� �� ��������� ���� ����������������� � �������� �� ������� �� ���������������������

� �� ���������� ��� ���� �� ������ ���������� �� ����� ��������������������� ��� ���� ������ �� ���� �� ���������������

� �� �� ������� �� ������� ���� ��� ���� �������� �� ��������������� �������� ��������� ��� ������������������������� ���������� � �����������������������������

� ���� ������� �������� � ��� ��� �� �� �������������� �������

� ���� ������� �������� � �� ��� ��� ������� ���� ����� ���� �������� �� ���� �� �������

����� �� ������� ����� ������ �� ��

� ������������� ���� ���� �� ������ ������ ���������� ���� ��������� ���������� �������� �� ������ ���� �������� ����� ��������� ��� ������ �� ������ ������������ ����� ��������������������������������

� �������� ���������� �������������������� �������� �� �������� � ����� �� ���������� �������� ��� ������ � ���� ������ �������� �� ����� ��� ��������� �� ���������

� �� ��������� �� �������� ������� ��� ����� ������� �� ��������������

� ��� ��������� �������� �� ������������ ��� ����������������� �� ���������� ������

� �������� ����� ������������������������ �� ���� ������ �� ������� �� �������� �� ������

Page 113: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� ����� ������

� ���������� �� ������� �������������� ���������� ������� �� ������� �� �� ������� �������������������

������������ �������������������

����������������������������������������

��������������������������������

���������������

� ������������� � �� � � � � � �� � � �� �� ������ ��� ��������� ��� ���� �� ������ �������������������

� �� ���������� �� ������ �� �� ��������� ���������������� �� �������� ��� ��������� ����������� ��� ������ ���� ������� ���������� ���� ��� ��� ���� �� ������ ��� ������� � �� ������� �� ���� ������ ������ ��� �� ���� ���������� �� ������� �� ��������� �� ���� ������� ���������� �� �� �������� ��������� �� ����������������������������������� � �� �� ���������� ������������

� �� �� ���������� �� ��������� ����������� ������� �� ����� ��� ���� ������� � �� ��� ��� ������� ���� ����������� ������������ ��� ���� �� ������ �������������������

���������� ��� ��������� �� �������� ���� ������� ��� ����� ���������� ��������� ��������

� ��������� ������ ����� �������� ��������� ��������� �� ��� �������������� ������ �� ����� �� �� ���� ��� ������ ��������� ���������� ����� ���������� ���� ��������

� ��������� ����� �� ���� �� ��� ��������� �� ������ �� �� �������������� ���� ���� �� ���� �� ��� ��������� �� ������ �� �� �������������� ���� ����������� �� �� ����� ���� ����������

� ������������������ ��������������������

�������������������������������������������

��������� ���������������������

������������������������������������������

��������� �����������������

����������������

��������� �������������������

����������������������������������

����������� ����������

� ����������� ������������ ������� ������� ��� ��������� �� �� �������� ����� �������� ������� � �� ��������� �� ��� ���������� ����� ������������ ��� ����� ����

� ������ ������� �� ��������� �� ��� ������������������������

� ����� ������� �� �������� � � � � � ��� ������� ������� ������� � ����������

� ������ ������ ������������� �������� �������� ����������� ����� ������ ������������� �� ������

� ����� �������� �� ����������� ������ �� ����� ������ ������������������ ���� ������ ����������� �������������� ��������� ������� ������� �� ������� �� ��������� ����

����������� ����������� ������

� ����������� ����������� ������

������� ����������������������� ��������������������������

����������������������������

����������������������

�����������������������������

��������������������������������

���������

� ������������ �� ���������� �� ������ �� ������ �� ���� �� ������� �� ���������� ���������� ��� �������� �� ������� �� �������� � �� �������� ����� ������������ �� ��������� �� �� ������

Page 114: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� ����������� �������

� ����������� ����������� �������

�������� ���������������������� ��������������������������

����������������������������

���������������������� ������������������������

���������������������

� ������������ �� ���������� �� ������ �� ������ �� ���� �� ������� �� ��������� � ���������� ���� ������� �� ������� ��� ������

� �������������������� �� ������� ���� �������� ��� ����� ����������� �� ������� ���� ��� ������� ���� �� ������ ����������� ��������� �� ��������� �� �� ������� �� �� ����������� ��� ��������� ������� ��� ������� �� ������ �� ������� ���� ���������

����������� ����������� �����

� ����������� ����������� �����

������ �������������������� ������������������������������������������������������

���������������������� ��������������������������

��������

� ������������ �� ���������� �� ������ �� ������ �� ���� �� ������� �� ��������� � ���������� ��� �������� �� ������� �� ����������

� �� �� ������� ���� �������� �� ������ �������� �� ������� �� ������������������

����������� ����������� ������

� ����������� ����������� ������� ������� �������������� �� ����� �� ��� �������������������������

� �� ���� ����������� �� ����� � �� ��� ����� �� ����������������������

� ������ ���������� ����� ��������� �� �������� � ����������������� ��������� ���� ��������� ������� ��� ������� � � �� � ���� ������ �� ������� ��� ������� �������������� ���� ��������������������� �����

� ����� ���������������������������� �� �� �������� ��� ��������� ����������� ������ ��������� �� �� ��������� ��� ������ ���� ���������� �� �������� ������ ����� ���������� �����

� ������� ������� ������� ��������� �� ������������ �� ������� �� �� ���������� ������ ��������� ���� ����������� ��������� ����������������� ����� ���������� ���� �� ������� �� ����� �����������

� ������� ���� ��� ���� ��������� �� �� ���������������

����������� ����������� ������ ���

� ��������� ������ ����������� ��������� ����������� ������ ������������ ��� ���������� ��������

����������������

��������������� �� ���������������

���������������

��������������

������� ������ ���� ������� ��������

�������� ��������� ����� ���������

������ ���������������� �� ��������

������������������������������

��������������

������� ����� �� �� ����� ��������

�������� ����� ���������� ���������

������ ���������������� �� ��������

���������������

����������������

�����������������

� ��������������������������������������������������� ���������� �� ������ ��� ������ ����� �� �� ������

Page 115: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� ����������� ������ ���

� ��������� ������ ������� ���������� ���������� ������������������� ������ ����� ������������ ����� �� ���������������

� ����� ���������� ���������������������� ������ ����� �����������

� ������������������������������������������ ����������� ��� ������� �� ������ ���� ������ ������ �� ����� ��������� � ����������� ������ � ���������������������������������������������������������� ����� ��� ������� �� ���������� �� �������� ���������� �� �� �����

� ��������� � ����������� ���������� ������������ ���������� ����������� �������������

� ��� ����� ������ �������� ���������� ���������� �� ������������� ������ ����� ���� ��������� ������� ��������� ������������

� � ������ ��������������� ������

����������� ����������� ������ ���

� �������� �� ����������� ������ �����������

� ���� �������� ������� �������

� ����

� ����������� ������ �������� �������������� ������������� ����������

� ���������� ����������������������� ���� ��������� ������������ �� �������

� ����

����������� ����������� ������ ���

� ����������� ����������� ������� ��� ��������� ������ �������� ��� � ��� ��������� ��������� ��� �� ����� ��� �� �������� ���� � �� �������� ��

� ��� ����� ����� ��� ������������� �� �������� �������� ������� ������� ����������� ����������� ��� ��� ���� � �� ���

����������� ����������� ������ ���

� �� �������� ���� ����� ������������� ��� �������� ����������� �� ������� ���������� ��� ����� ������ ��� ������� ��������� �� ��� ������������������� ��� �� ������� ����� �������� ������ ������������ ������������� ��� ����� ���������� � �� ��������������� �� �� ������� �� ������� � �� ������ �������� � ��������������

� ��� ����� ����� ��� ��������� �������� ���������� �������� ����� �� ������� ��������� �� ��� ���������������� ����������� � ��������� ������

� ��� ��������� ����� ��� �� �������� ������ ��� �������� � �������� �� ��� �������� ��������������� ������ �� ��������

Page 116: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� ����������� ������ ���� �������� �� ��� �� �������

� ����� �� �� ����� ��������� � ��� ��������������� ��������������

������������������������ ������������������������� ����������������������

����������������

� ����� �� ��� ��������� � ��� ���������������� ��������������

�������� ������������������������������ � ����������������������������� � ���������������

�������������������� ������������������������� ����������������������

����������������

� ����������� ����� �������� ��� �� ������� ���������������� ����� ��� ������� ������������� �������������� ��������� ��� ����� �� �� ������� �� ��������������� ����� ���� ������ �� ��� ���� �������

����������� ����������� ������ ���

� �������� �� ��� �� �������� ������ ��������� �������� ������� ��������������������� ��������������

������

����� ���������������������� ��������� ���� ��

��� ���������������������������

�������

���������

� ������� ������� � ��� ���������� �� ��� ������������������ �� �������� ��������������������

���������������������������

����������� ����������� ������ ���

� �������� �� ��� �� �������� ����������� ������������

������� ��������������

������

������ ��������������������������� ���������

��� ������������������������� ����������������������

�������

���������

� ����� �� ������ ��� ��� ��������� ���������� ������� ��������� ��� ��� ����� ����������

����������� ����������� ������ �� ���

� �������� �� ��� �� �������� ������������ ��������

������� ��������������

������

������ ������������������������������������������������������

�������

��� ��������������� ���� ������������������

�������

���������

� ����� �� ������ ��� ��� ��������� ���������� ������� ��������� ��� ��� ����� ����������

Page 117: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� �������������

� ��� ����������� ���������� ������ ��� �������������������� ��� ���������� ����������� �� ��������� ��������� ��������� �� ������������� ����� �������� ����������� �� ��������� ��� ������������� ������� ������ ������������� �������� ������� ����������

� ��� ���������� ����������� ���� ������� ����� �� �������� �������������������������

� ������ ������� �������� �������� �� �������� ����� �������� ��� �� ������ ������� ������������� �� ��������� ��� �� �������� �� ������ � �����

� ������ ������ �� ������ �� ����������� ���������� ���������� �� ������������� ������� �� �������� ������� ��������� ���

� ����������� ������ ��� ����������� �� �� ������ ���������������

����������� �������������� ��������

� ����������� �������������� ��������� ������� ��������������� ��� ����� �� ��������������������

����������

��������� � ����������

�������� ����������

�������� ����������������� ����������

������� ���������

�����������

����������� �������������� ����

� ����������� �������������� ����� ������� �� �������� ��� ����� �� ��������������������

������

������� ���������

������� ���� ������������������ � ���������

������� ���� ������������������ ���������������� ���� ������������������ ����������

�������

� ������ ������������ ������������ ����� ������������� ���������� ����� ���� ������� ��� �������������������� �������������� ������� ����� ������ ��� ����������� �� ������� ������ ������ ���� ����������� ������������������������� � ����

������������ ����� ���� ��� ����������� �� ���� ������ ����� ���� ����� �� �� ����������� ��� ������� ����� ����� ���������� �� ����� �� ������������ ������������

� ��� ����������� ������ ��� ��������� ���������� ���� ���������������������� ����� ��� ����� ��� ������� ������� �� ��������� �� ������� ��� ������ ������������� ���� ����������� ��� �� ��������� �� ��������� ����� ��� ����� ������ �������� ������������� �� ��������� ���� ����������� �� ��� ��������� ��������� �� ������ ������� ����� ������������ ��� ����������������� ��� ���� ������ ���� ��������� ����������������

� ������� �� ��������� �� ������ ��� ������ ������������� ������ ����������� �������� �������� �� ������� �������������������������� �� ��������� �� ����� ����������� ��� ������ ��������� ���� �������

� ��������� ����� ������������� �� ������� ��������� ������������������������� � ���������� ������������ ��� ��������� ���������������� ��� �� �������� �� ���������

Page 118: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������������ ����� �� ��� �������� �� ������������ ��� ������

� ��� ��������� �� ����� ������� ����� ��� ����� �����������

� ��� ��������� ������� ������ ��� ���������� �� ����� ��������� �� ��������� ����������� �� �������

� �� �������� �� �������� ��� ����� �� ������ ����������� ������� ��� ��������� �������� �� ������� �� �������� � ����������� ������� ���� �� �� ���� ������� ����� ����� � � ����� ��������� ��

� �

����������� �������������� ��

� ����������� �������������� ������� ���������� �� ������������

����

���������������������������� � ���

������������

������

�������

��������

���������������������������� �� �

������������

����������

�����������

���������

������

������ ������������������������������

�������

�����

����������� �������������� �����

� ����������� �������������� ������ ���������������������

��������� ������������������� ��������������������

���

�������

������������������������ � ���������������

����������

�����������

��������

����������� �������������� ����� ����������� �������������� �����

���������������� �������������������

������������������������������������������������������������������

���� �������� �� ��� ���� ���� �� ����� ������������� ������������

���������������������� �������������������

������������������������������ ���������������������������������������������������������������

���� �������� �� ������� ����� ���������� ������������� ������������

�������������

�������

� �� ��������� �� ������ ���� ������ �������� ������������

Page 119: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����������� ���

� ����������� �� ������ ������ ���������� �� �������������� �� ����� ��� ����������� ������� �� ������ �� ����������� �� ��������� ���������������

� ����������� �� ������������ ����������������������� �� �������� ���� �������� ��� ����������� ������������ ��� �� ����������� �� ��������������

� ����������� �� �������� �� �������� ������ �������� �� ������� ���������� � �� ������� �������������� �������� ��� ��������� ����� �� ������� �� ������������

����������� �� ��

� ��� ����������� ����� ��������� � �� ���������������� �������� ��� ������� �� �� ������� ��������� �� ��� ��������� �� �������������� �� ����� ��� ��������� ������ �� �� ����� ������������ �������� �� ��������������� ��������� �� ������

� �� ��� ��� �������� ��� ������� �� �� ����� ����������������� �� ����� �� ��������� �� ������������ ���������������� �� ����� �� ��������� �� ������������ ���������� �� ��� ������� ��������� �� ����� � �������������� �� ������������ �� ����� ������� ������������

� ��� ����������� �� ������� ����� ������� �������� �� ������� ������� ��������� ������ ��� ������� �� �������� �� ������� ����������� ������� � �� �� ��� ������ ����������

��������� �� ����������� ���

� ���� ���������� �������� ���������� ����� ����������� ����� �� ������ � �� ����������� �� ���������������

� ����� �� �������� �� ���� ����� ����������� ������������� ��� �������� ��������� ��� �� �������� ����� ����� ��� �������� ������������ �� ��������������� �� ��� ����� �� ������ ����������������������� �� ��� ����� �� ������ ����������

� �� ���� ������ �� ������� �� ������ � ��� ����� ���������� ���� ���� ����������� ��� ��������� ������������� ������ �� ����� �� �������� ��������� ��������� �������� � ���� ��������� �� ������� �������� �� ����� �������� � ���� ����� �������� ����������� ��������� � �� ������ �� ����� �������� � �� ��������� ��������� �� �������� ������������

��������� �� ����������� �� ��

� �� ��� ������� ������������ ��������� ���� ���������� �������� �� �������� ������� �������� �� �������������� � ��� ���������

� �� ��������� �� �������� ��� ������ ��������������� ��������� ����� �� ���� �� ��������� ���� ������� ������ ��� ������

� ���� ��� �� ���� ���������� �� �������� ��������������� ��������� �� ��� ���� ������ �������� � ����������� �� �� ���������� ����������

� �� ���� ��������������� �� �������� ���� ��������� ������������� ����� ����� ���� ����� �� ����������������� �� ������� �� ��� �� �� �� ��������� ���� ������� �� �� �� ���� � ���������� �� ����� ������� ���������� �� �� ��������

Page 120: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������������ ���

� ���� ����� ��� ����� ������� �� ��� �������� ��������� �� ������� � ��� ������ ���� �� ������������ ����������� ����

� ����� ��� �������������� �������� ���� �������� ������� ���������� ������������ ���������� � ����� ����������� �� ��������

���������� �� �������������� ��������� �� �������� �� ��������� ��������� �� �������� �� �� ��� �� ����� �������� ������������ �������� ���������������� �� �������� ��������� �� �������������

� �������� �� �������������� ������� ���� ����������� ��� ������� �������������������� ��� ����������

������������ �� ��

� ���� ���� ������� ���� ��� ��� �������� ����������� ������������ �� ��� �������� �������������� ��� �� �� �������� ���� �������� ����������

� ���������������� ������� ���� ������������������������������������������������������

��� �� �� ������� ���� �����������������������������������������������������������������

����� ������� ���� ��������

������� ���

� �� �������� �� ����������� ������� ������� ����������� ������� ���� ��������� �� ����� ������ ����������� ������ ��� �������� �� �� ������� �������� ������ ��� ��

����������� �� ��������� �� �� ������� ���� �� ��� �� ��� ����� � �����

������� �� �� ������� �� �������������� �� ��� ������� �� ��������� �������� � �� ���������� �� ������� ���� ����� �� �������

�� ������������ �� ���������� �� ������� ������ ������� �������� ��� ������ ��� ���������

�� �� ��� ������������ �������� ������������ �� ���������� ����������

�� �� �� ��� ����������� �� �������� �� ����� �� ������ � �������������� � �� ������ �� ������ �� ����� �������

Page 121: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� ���

� ��� ������������ ��� ���������� �������� ��������

� ����� �� ������ �� ������� � �� ������� �������� ����������� ��� ��� ������������ �� ���������� ����� ��� �����������

� ������ ��� ���������� ���������

� � � � �� �� ������ ��� ��������

� ������ ���� ��������� �� ������� ��������� �� ���������� ����������� ��� ������ � �� ������ ���� �� ����� ��� ���� ����� ����������

������� ���

� ��� ������������ ��� ���������� �������� ���������� �� ��������

� ����� ��� ��������� ��� ������� ����� �� �� ������� ���� � ���� ��� �� ��� ������

� ������ ���� ��������� �� ������ ��� ��������� �������� �� ������� ��������� �� �� ������� ���� � �� �� ����

� ���������� �� ��������� ���������� �� ��������� ������ ��� ��������� ��� ������� ������� �� ��� � ��

����������� �� �� �������� ������������� ������ ���� �����������

� �� ������ ��� ���������� �� �������� �� ����� ��������

� �������� �� ���������� � ������� �� �� �������� � �� ������ ��������� ��� �������� �����������

������� �� ��

� ��� ������������ ��� ���������� ������ �������� ������������

� ������� �� ����� �������� ���� ������ ������� ��� �� ���������� ������� ������ � ��� ���������

� ������ �� ������� ������ �� �������� ������ �� �������� ����������

� �������� �� ���������� � �� ��� ����� � �� �������

���������� �� �������� ���

� ���������� �� ��������� ����������� �������� ���� ���� ������� �� ����� ��������� ���

����������� � �������� �� ���� ��� �� ��� ���� ����� ��������� ��� �������� ����������� �� �������� ��������� ��������� � ��������� �� ������� ����� �������� ������ ������������� �� ��������� ������������ �

��� ��������� ��������� ���� ������� ��� ���� ��������� �� � � ����� ���������

� �� ��� �������������� ��� ����� ���������� ����������������������� ����� �� ����� ����� ���� ������ ��� ����������������� ����� �������������� � ����� ��� ������������ � ��������������� ����������� ������ ����� �������������� ������������� �� ����� ���������

Page 122: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���������� �� �������� �� ��

� ���������� �� �������� �������� �������� ���� ���� ��� ��������� ��� ����������

� �������� ��� ��������� �� ��������� � ���������� ����������� ��� ��������� ����� �� ���� ������ � ��������������

� ����� �������� ���� ��� ������������ ������ ���� �� ����������� ��� ������� �������� �� ��������� ��� ������� �������� �� �����

� �� ������� ���� �� �� ������

� ������ ��� ��������� �� ���� ����� ����������� �� ����������� ��

��������

���� ��������� �� ������� ���

� ������ � ����������� � � ������� ������������������������������������������������������������������������������������

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ������������������������������������ ������������� ������������������������ ������������� ������������������������ ������������������ ������������������������ ������������� ����������������

������������������ ���������������������������� ������������� ������������������������ ������������ ����������������

����������

���� ��������� �� ������� �� ��

��������� ��������������������������������� ��������������������� ��������������������������������������������������� ������������������������������������

�����������������������

��������������������� ��������������������������������������� ����������������� ���������������� ���������������������������������

�����������������������������������

��������������

� ������� ������ ��� �� �� ������� �������� ����� �� ��� ���

���������������� �� ������� � �� �������� ���������� ������� �� ��������� ����� ��� ������ �������� �� ��������

�������� ������������� �� ���� ���� �� �� ����� �����������

���� �������� �� ������� ���

� ������ � �� ���������� �� ���������������� ��������������������������������

����� �������������������� �������������������

����������

�������� �����������������������������

����� ������������� �������������������

��������������������

��������� ������������������������

���������� �������������������

������ �������� ��������������������������������������

������� �������������������������������������������

������������

�����������

Page 123: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���� �������� �� ������� �� ��

��������������������� ������������������������������

���������� ����������������

�������������� �����������������������������������

������������

�����������������������

� ������� �� ������� �� ���� �� ���������� �� ��������� ����������� �

����� �� �������� ������ ��� �� �� ������� �������� ����� �� ��� ���

���������������� �� ������� � �� �������� ���������

���� ������� ���

� ������ � �� ���������� �� ��������

�������� �������������������������������� ������������������ ������������������������ ������������� ����������������

����������

�������� ������������������������������������ ����� �������������������� ������ ������������� ������������������������ ���������������� ����������������

����������

��������� ��������������������������������� ������������������

������ ����������������������������������������������� �����������������������������������������

�����������������������

���� ������� �� ��

��������������������� �����������������������������

���������� ���������������������

�������������� ���������������������������������

������������

�����������������������

� ������� �� ������� �� ���� �� ���������� �� ��������� ����������� �

����� �� �������� ������ ��� �� �� ������� �������� ����� �� ��� ���

���������������� �� ������� � �� �������� ���������� ������� �� ��������� ����� ��� ������ �������� �� ��������

�������� ������������� �� ���� ���� �� �� ����� �����������

���� �� ��������� ��� ���������

� ���������� �� ���� �������� ���� ������ �� ������ ��� ����������� ��������� �� ����������� �� ������� � ������������ ��� ���������

Page 124: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� ����� ������� ��������

� ����������� ������� � �������� ������ � �� ������������� ��� �� ���������� ����� �� ������������

� ����� ��� ������������ ����� �� ������ �� ���������� ��������

� � � � �� ��������� ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

����������

��

����������

������� �� ���� ��������

� ������� ������� �������������� �������������� �� ��� �������� �� �������������

� ���� ���� ���������� �� ������ �� ��������������� ���������������������������������������������

����������������������������������������������������������������������������������������������������

� ���� ���� ��������� �� ������ �� ��� � ��� ���� ���� ���������� �� ������ �� ��� � ��������� ������ ����� �� �������� �� �� ������� ��� ���� ������

��� ������ ����� ��������� ��� ��� ��� ������ � ��

�������������� ������ ���������� ��������� �� ������� � ���

������ � ���� ����

������� � ������ ���

� ������� � ������� ����������� ������� ������ �������� ������� �� ���� �� ������ ���� ������� � �������

������� ������ �� ��� �� ������������ ���������� �� �������� ������� �� ���� �� ������ ����

�������� �� ������� � ���� �� ���������� ������� �� ��������� �� ��� �� �����������

� ���������� �� �������� ������� �� ���� �� ������ ����� ���������� �� �������� ������� �� ���� �� ������ ������������ �� ������� � ���� �� ���������� ������� �� ��������� �� ��� �� ����������������

� ��������� �� ������� �� ���� �� ������ ���� ������� � ������ ���������� ������� �� ��� ������ �� ��� �� �����������

� ��������� �� ������� �� ���� �� ������ ���� ������� � ������ ���������� ������� �� ��� ������ �� ��� �� �����������

������� � ������ ���

� ������� � ���������������������

������������ ���������������

������������������������������������������������

�������������������

������������ ���������������������

��������������������������������������������������

������������������������

������������ ������������������������ ����� �����

������������������������������������������������

�����������������������������

������������ ����������������

������������������������������������������������

������������������������

������������ ����������������

������������������������������������������������

������������������������

���������������

Page 125: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� � ������ �� ��

� ������ �� ���������� ����� ��� �� ������� ��� ������� � ������ ��

�� ���������� ��� �������� �������� ���������� ���� ������� ����� ��� �� ���� �� ���������� �� ������ ������� �������������� �� ������� �� ����������� ��� ���� ���������

� �� ��������� ���� �� ��������� ������� �� ����� ���� � ��������� �� ������ �� �������� �� �� ���������� �����

� �������������� �� ������� �� ���������� ���� ���� ������������������ ��� ��� �������� �������� ���� ��������� ���������� � ����� �������� ��� �������� ���� �� ���� ����������������

��������� ���

� ���������� �� ���������� ������������� ��������� ���� ��������� �� ������ �������� ��� �������

��������� � ������� ��������� �� ����� ����������������� ��������� ���� �� �������� � �� ���������� �� �������

��������������� � ���� ��������� �� ��������������������������

� ��������� ���� �� �������� � �� ���������� �� �������� ��������� ���� �� �������� � �� ���������� �� ��������������������� � ���� ��������� �� �������������������������

� ��������� ���� ��������� �� �������� � ��� ����������������� ��� ���� ������ ����������������� � ���� ����������� ��������� ������������������� �������������������

��������� �� ��

� ���������� �� ������������������������������ ��������������

��������������������������������������������������������� ��������������������

������������������������������������������������� ��������������������

����������������������������������������������������������� ���������������������

����������������������������������������������������������� ������������������������������� ����������� �������������������

����������������������������������������������������� ��������������������

������������������������������������������������������ �����������������������

��������������������������������������������������������� ������������������������

������������������������������������������������� ������������������������

����������������������������������������������������

����� �� ������

� ������������� �� ����� ��� �� ��������� ���������������� ���������� �� ��������� � ������������ ����� �������������� ������������ ����� ��� �������

������������������ ������������������������������������������� ������������������������������������� �������������������������������������� ������������������������������������ ������������������������� ���� ����������� ������� ���������������������������������� ����������������������������������������� ����������������������������� ����������������������������������������� ����������������������������������������� ��������������������������

���������

�������

� ������� �������������� ��������� �� ��������� ��� ��������� �� �������� ��� ����������� ���� �� ���������� � ��� ������������

Page 126: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

��������������� ��� �������

� ��������� �� ������� � ��������� � �������������� ��� �������� ��� �������������������������������������� ������� ����� ���

�������� ������������������� ����������������������

�����������������������������������

������������������� ������������������

���������������������

���������

������� ������������������������������������������

����������

����������

� ��� � ���� �� ������ ��� ���� ������� �� ��������� ���������� �� ������� ���� ������� � �� ���������� ����������

��������� � �� ���������� �� ������� ���� ���������� �� ��������

���� ������� ������ ������� ���������� ��������������������������������������������� ������������������ ������������������ ������������������������ ����������������������

����������������

������� �������������������������������������������������������������

������� �������������������������������������������������������

� �� ����� �� ������ ��� ������� ����� �� ������ ��� �������� �� �������� � �� ���������� �� ��������

� �� ��������� �� ������� ���� �� ��������� �� ��������������������������������� ��������� �� ���������� �� ��������� �����������

� �� ��������� ������ �� ���� ������������������������

��������� � �� ���������� �� ������� ���

� ��������� � �� ���������� �� ������������ ������ ����������������� �� ������ ������ ��� ������ ���������� ������������������������������ ����������������������������

�������������������������������������������������������������������������������������������������������������������������

���������������� ������������������������������������

������������������������������������ ������������������������������������� ����������������������������������������������������������������������

���������������� ����������������������������������������������������������������������������������������������������������

�������������������

���������

��������� � �� ���������� �� ������� �� ��

� �� ��������� ���� �� ������� �� ��������� �� ������������������������������ ��� ��� ����������� ��� ��������� �� ������� ��������� ���� �������������

� �� �������� ������������ �� ����������� �� ��� ������������� ���� ����������� ��� ���������� ������������� �� �� ��������� �� ������ �� ������

������������������������ ������� ��� �� �������

� �� �� ��������� �� ��������� �� ���������������������������� ����������� ���� ������� ����������

Page 127: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� ��� ����� �� �������� �� �� ������� �� ����� �������� ���� ���������� ��

������� �� ��������

���� �������� ������ �������� ������� ���������� �������������������������������

������� ������������������������������������������������������

������� ������������������������������������� �������� ����������������� ��������������������������� ����������������� ������������������������ ���������������

����������������

� �� �� ������ �� ������ ������������������������� ������� ��� ��������� ��� ������� � �� ������ �������� ����������������� ���� �������� �� ������� �� ��������� �� ���������

���������� �� ������� ���� �� ������� �� ������� ���� �� �����������

���� �������� ������� ��� ����� ���������� ���������� �����������������������������������

������� ��������������������������������������������������������

������� ��������������������������������������������� ������������������ ������������������������� ������������������ ����������������������� ����������������������� ��������������������

������������������ ������������������ ������������������ ����������������������� ���������������

����������������

� ������ ��� �� �� ����� ���� ������������������� ���� �������� ���� �� ����� ������ �� ������ ����� �����

� ��� ����� ������ �� ����� ��������

���������� �� ������� �� ��

� �� ������� �� �����������

������� ������������������������������������� ��������������������������������������������������������������������������������������������������������������������

���������������� ������������������������

�������������������������� ���������������������������������������������������������������������������������������������������������������������� �����������������������������������������������������������������������������������������������������������������������

�������������������

� �� ��� ������������ ������������� ��������������� �� �������� �� ��� ���������� ������ � ������������

�������� ��������� ��� ���� �������

���� �������� ������ ������� ���� ����� ����������� ���������� ���������������������������������������������� ������������������������ ���������������

������������������� ���������������������������������������� ���������� ������������������������ ��������������

�������������������������

������� ����������������������������������������������������

������� ����������������������������������������

���������

� �� ������ �� ������� ������������� �� ������ ����������� �� ���������

� �� ������ �� ������ ������������������ ���������������� �� ����������

Page 128: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

���������� � ����������� ������� �������� ������� ��� �������� ��������� ���������� ���������������������������������� ����������������������� �����������������������������

������������������������������������������������� ��������������������������� ���������������

����������������

������� �����������������������������������������������������������

������� ��������������������������������������

���������

� �� ������� ���� �� �� �� �������� �� ��������������������������������� ��� ��� �������

� �� ����� �� ������ ������� � �� �������� ���� ������������ � �� ������ �� ������ ��� ������� �������� �� ������ �� �� ������ ��������������

���������� � ����������� ���� �� ������ � ����� ������������

���� ������ ��������� ���������� ����������������������

����������������������� �������������������������������������������������������������������������������������������������������������������������

���������������� ����������������������������

�������������������

�������� ��������������������������������������������������

���������������� ����������������������

����������������������� �������������������������������������������������������������������������������������������������������������������������

���������������� ����������������������������

�������������������������� ����������������������������������������

�������������������

���������� � ����������� �� ��

� �� ���������� � ����� ����������� ���������� ���� ���������������� ��� ������ ����������� ����� ����� ����� ������ ���������� �� ���������

� �� ��������� ���� ���������� ������ �� ������� ����������� ��������������������������� �����������������������������

� �� ��������� ��������� ���� ��������� ���� ����������� ����� ����� ��� ������ ��� ������������� ����� ��������������

������� �� ������ ������ ���

�������������������

���������������������������� �������������������������������

��������������������������� ������������������������� �������������������������� ����������������������������������

��������������������������

����������� ��������������������������������� ��������������������������

����������������

Page 129: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� �� ������ ������ ���

��������������������

����� ��������������������������������� ��������������������������

����������������

������������������������������ ����������������������������������������������� ����������������������������������������

�������������������������� ������������������������������

����������

�����

������� �� ������ ������ ���

� ���� ��������� ���� ���������� ���� �� ���������� ����� ��� ����� �� ������ ����� ��� ������������ � ���������������

� ���� ���� �� ��� ��� ������������� �� ������������ �� �� ����������� �� �������� ���������� ������� ������� �� ������ �� ��

������ �� ���������� ��� �� ��������� ���� ������� ���� �� �����

����� ����� ������� ���� �������� ������� ������� ��� ��� ���������

������� �� ������ ������ �� ��

� �� ������� �� �� ���� ������� �� �� ����� ������� �� �������� ��� ���������� �� ����� ��� �� ������������� � ������ �� ���������� ������ ��������� �� ����� ���� ��������� �� ������� ����������� ��� ���������� �� �� ���� ���������� �� ������������ ��

� �� ����� ��� �� �� ��������� �� ������ �� ��������������� ����������� � ���������� �� ���� ������ �� �������������� �� �������� ������� ��

������� �� ��� ��� ����������� ������ �� ���������

��������� �� �������

� ����������� �� �������� �� ������������ ������� �� ������ ��������� ������������ ���������������������������������������������������������

������������������� ����������������������������������������� ������������������������������

������������������������

� � ���� ��������� ����� ������� ��������� �� �� ���������� �� �������� ������ �� �������� �� ����� ����������� �� ������� �� �� ��� ����� � ���� ��� ������� � ��� ������������

� �� ����� ��� ������ �� �������� ��������������������� �� ����� ���������

Page 130: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

����� �� ����������� ������������� ���

� ����� ��������� �� ������� ���������� ��������� ��������� �� ����� �� ��������� �� ���������������� ������ ����� �� ������ �� ���� ������

� ��� ���� ������� ��������� ����������� �������������� ����� �� ������ ��

����� ������������

� ������� ����� �� �� ������ �� ���� ������� ��� �� ��� ������� ����� ��������� �� ������������

������� ��� ����������� ������������� ���

� ������������ �� ������� ����� �� ��������� ��������� �� ����������� �����������

� ��� ������������ ���������� ������������������

� �� �� ���������� � ��� ������������ ��������� �� ��������� �� �������� �� ��������������� �������

������� ��� ����������� ������������� ���

������������������ �������������������������������������� ��������������������������������������������������� ��������������������������������������������

�������������������������������������������������������������

������� ������������������������������������������� ���������������������������������

������������������������������������������������������������������� �������������������

����������

������� ��� ����������� ������������� ���

������ ����������������������������������

�����������������

����������������� ���������������������������������������

������� ���������������������������������������� ���������������������������������

���������� �����������������������

������������ �������������������������������

������������������

����������������

Page 131: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

������� ��� ����������� ������������� �� ��

������

����������

������� ����������������������

���������

������ ����������������������

��������

�����������

�������

�����

�����������

����� �� ����������� ������������� ���

� ������������ ����������� ��� ���������� ������� ��� ������� ��� �� ������� � �������� ��������� ������������ �� ������������� � ����� �� �� ��� ������� ��� ����������� ��

���������� �� � �� ������� �� ����� ����������� ������������� ����� �� ������� �� ����� ����������� ������������ ������

� ����� ���������� �� ������� ��� ��������� ���������

����� �� ����������� ������������� �� ��

� ������� ����������� ��������� �� ���������������� ��� ����������� ������������� � ����� ������� �� �������� �� �������� ��� ����� �� ���

����������� ���� ��� ��� ��������� ����� ��������� �� �������� � �� ��������� ������������� �� �������� � �� ��������� �� ����

� ������� ������� ����������� �� ������������������� ����������� �� �� ���� � �� ����� ����������� �� �� ���� ������� ����� ��� ������������� ��

���������� �������� ������ � ���� ������ ��������� �� �� ������� ����� � ��������

� ��������� ������������ �������� ������������ �� ������� ������ �����

������ ������� ����������� � ����������� �������� �� ������� �� ��� ��� ����� �������� �� ����������� ������������ ��

������ ���� ����������� ������� �� ���������������� ������������ ���� ��� � ���� ������� �������

� �� ����������� �� ������� �� ��������� � ������� �������� �� ����������� �� ������� �� ��������� � ������� ��������������� ���� ������ �� ��������� ������������ ��� ������ ������������������� ������� ��������

Page 132: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

4.2.3 Ejemplos BPEL Asíncronosj p

Índice

� Conjuntos de correlación.d� Scopes y Manejadores

� Errores� Compensación� Eventos

� Conclusiones

Conjuntos de correlación (1)

� En invocaciones asíncronas surge el problema de cómo puede identificar cada instancia los mensajes p jconcretos que se refieren a ella (e.g. los mensajes involucrados en el procesamiento de una orden de compra concreta)compra concreta).

� La idea básica es asignar un nombre a una parte de los mensajes útil para identificar una instanciaos e sajes út pa a de t ca u a sta c aconcreta (e.g. número de orden de compra en el pedido y en la respuesta al mismo). Entonces, el sistema asignará a cada instancia el mensaje quesistema asignará a cada instancia el mensaje quetenga el valor asociado a ella (e.g. asignará los mensajes asociados a un número de orden de compra a la instancia encargada de procesar dicha orden).

Conjuntos de correlación (2)

� Ejemplo: Flujo que:1. Recibe una petición de crédito.1. Recibe una petición de crédito.2. Si se pide menos de 10.000 -> preguntar a servicio externo

LoanAssessor.1 Si risk=‘low’ aprobar1. Si risk= low , aprobar2. Si risk=‘high’, ir a 3.

3. Si se pide más de 10.000 o risk=‘high’-> invocar a servicio externo LoanApprover que decide si se acepta o no elexterno LoanApprover que decide si se acepta o no elcrédito.

4. Contestar con la aceptación o no del crédito.5. Esperar a que el cliente envíe un nuevo mensaje para

ejecutar el crédito (puede tardar días).6. Responder con la confirmación de que el crédito ya está p q y

disponible.

Page 133: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Conjuntos de correlación (3) Conjuntos de correlación (4)

� Los conjuntos de correlación se definen en base a propiedadespropiedades.

� Las propiedades tienen un nombre, un tipo de dato y una serie de “alias”.una serie de alias .

� Cada instancia del proceso será identificada unívocamente por una combinación de valores de las ppropiedades.

� Cada alias identifica a la propiedad dentro de un mensaje concreto definido en un WSDL.� Ejemplo: propiedad “id. de petición de crédito”, de tipo

string con 2 alias uno para el mensaje de petición y otrostring, con 2 alias, uno para el mensaje de petición y otropara el de respuesta (en nuestro ejemplo sólo necesitaremos un alias).

� Las propiedades se definen en los ficheros WSDL.

Conjuntos de correlación (5)<bpws:property name="loanRequestId" type="xsd:string"/>

<bpws:propertyAlias propertyName="lns:loanRequestId" messageType= "loandef:creditInformationMessage" part=“id" g yp g pquery= "/id"/>

<message name="creditInformationMessage">

<part name=“id" type="xsd:string"/>

<part name="name" type="xsd:string"/>

<part name="amount" type="xsd:integer"/> p yp g

</message>

<portType name="loanApprovalPT"> p yp pp

<operation name="obtain">

<input message="loandef:creditInformationMessage"/>

<output message="apns:approvalMessage"/><output message apns:approvalMessage />

</operation>

</portType>

Conjuntos de correlación (6)

� Los conjuntos de correlación se definen en el proceso BPEL indicando un nombre y una lista deBPEL indicando un nombre y una lista depropiedades.

� Se definen después de las variables.� Se definen después de las variables.

<correlationSets><correlationSets>

<correlationSet name="loanIdentifier" properties= "lns:loanRequestId"/>

</correlationSets>/correlationSets

Page 134: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Conjuntos de correlación (7)� Los conjuntos de correlación se pueden utilizar en las

actividades receive, invoke, pick o reply.S l l� Se usa el tag correlations.

� Deben inicializarse una única vez en el proceso que i i i l i t ió ti id d tinicia la interacción, en una actividad que tenga un mensaje conteniendo las propiedades del conjunto (a menudo en el primer receive)menudo en el primer receive).

� La inicialización se realiza con initiate=‘yes’.� Al iniciarse el motor BPEL mira el valor de las� Al iniciarse, el motor BPEL mira el valor de las

propiedades en el mensaje y se asocia la instancia con dichos valores.<receive name="Receive" … >

<correlations>

< l ti t “l Id tifi " i iti t " "/><correlation set=“loanIdentifier" initiate="yes"/>

</correlations>

</receive>

Conjuntos de correlación (8)

� Una vez inicializado, el conjunto puede utilizarse en cualquier actividad que reciba/envíe un mensaje delcualquier actividad que reciba/envíe un mensaje deltipo indicado en uno de los property alias.

� Al recibir un mensaje, el motor BPEL accede a la/s� Al recibir un mensaje, el motor BPEL accede a la/spropiedad/es indicadas. El mensaje se enruta al proceso que se corresponde con esos valores de las propiedades.

� Al enviar un mensaje, se comprueba que las i d d d l j i d ti l lpropiedades del mensaje enviado tienen los valores

correctos asociados a la instancia.� Si no -> correlationViolation� Si no -> correlationViolation

Conjuntos de correlación (9)<receive name="acceptance-receive"

partner="customer"

portType= "lns:loanApprovalPT"portType lns:loanApprovalPT

operation= "obtain“

variable="acceptanceRequest">

<target linkName="reply-to-receive"/><target linkName= reply to receive />

<source linkName="receive-to-grant"/>

<correlations>

<correlation set="loanIdentifier"/><correlation set= loanIdentifier />

</correlations>

</receive>

<repl name "grant repl "<reply name="grant-reply"

partner="customer"

portType="lns:loanApprovalPT"

ti " bt i "operation= "obtain"

variable="approvalInfo">

<target linkName="receive-to-grant"/>

/</reply>

Conjuntos de correlación (y 10)� Notar que el flujo responde a dos operaciones

diferentes (primer y segundo receive).� Tendrá que haber otro tipo de puerto (no mostrado

en el ejemplo) para la primera operación o un solo tipo de puerto con 2 operaciones

� Se supone que los partner link types han sido d fi id d d tdefinidos adecuadamente.

Page 135: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Scopes y Manejadores (1)

� Los Scopes son partes de un proceso dispuestas jerárquicamentejerárquicamente.

� Proporcionan una forma de agrupar conjuntos de actividades de forma que pueden asociarse diversosactividades de forma que pueden asociarse diversostipos de manejadores a cada conjunto: manejadores de fallo, de compensación y/o de eventos.

� También es posible definir variables y conjuntos de correlación que sean visibles sólo en un scope d t i ddeterminado.

� Concepto muy similar al de “bloque de código” en los lenguajes de programación E g { } en J AVAlenguajes de programación. E.g. { } en J AVA.

� Por defecto, hay un único scope para todo el flujo.Los scopes deben tene n nomb e único en el fl jo� Los scopes deben tener un nombre único en el flujoBPEL.

Scopes y Manejadores (2)

� Manejadores de fallos (Fault Handlers). Se ejecutan cuando se lanza una excepcióncuando se lanza una excepción.� Similar al manejo de excepciones en lenguajes de

programación.

� Manejadores de compensación (Compensation handlers). Se ejecutan para deshacer una operación.� Relacionados con el tratamiento de transacciones.

� Manejadores de eventos (Event handlers). Se ejecutan cuando se recibe un mensaje particular o seejecutan cuando se recibe un mensaje particular o seproduce una determinada alerta. � Ej: comprador envía un mensaje de cancelación.� Ej: comprador envía un mensaje de cancelación.

Scopes y Manejadores (3)

� Los manejadores deben asociarse a un scope:� Si salta una excepción dentro de un scope determinado se� Si salta una excepción dentro de un scope determinado, se

invoca el correspondiente manejador de fallo.� Si hay que deshacer los efectos de un scope (e.g.

ó ótransacción), se llama al manejador de compensación del bloque. Si hay bloques anidados, se llama a sus manejadores de compensación en orden inverso de jejecución.

� Los manejadores de eventos están activos mientras el flujo de control permanece dentro del bloque Se ejecutan si llegade control permanece dentro del bloque. Se ejecutan si llegaun determinado mensaje o se da una cierta condición.

Scopes y Manejadores (4)

� Los manejadores se definen en el flujo BPEL después de las variables y los conjuntos de correlación en elde las variables y los conjuntos de correlación en elsiguiente orden: faultHandlers, compensationHandlers y eventHandlers.p y

� Si se quieren asociar sólo a un scope determinado, se definen dentro del scope en el mismo orden.

Page 136: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Scopes y Manejadores (y 5)<scope name=“…">

<variables>

<!-- Variables locales al scope -->

</variables>

<correlationSets>

<!-- Correlation sets locales al scope --> </correlationSets>

<faultHandlers>

<!-- Fault handlers locales al scope -->

</faultHandlers>

<compensationHandler>

<!-- Compensation handlers locales al scope -->

</compensationHandler>

<eventHandlers>

<!-- Event handlers locales al scope -->

</eventHandlers>

</scope>

Manejadores de fallos (1)

� Los fallos (faults) en BPEL pueden ocurrir porque:El proceso BPEL lanza un fault explícitamente� El proceso BPEL lanza un fault explícitamente(actividad throw). Se indica el fault a lanzar y, opcionalmente, una variable conteniendo elopcionalmente, una variable conteniendo elmensaje de tipo fault correspondiente.

<throw faultName="buy:CreditCardNotApproved" />

� La invocación de una operación de un servicio web devuelve un fault.

l d l f l d bid� El motor BPEL puede lanzar un fault debido a un error de runtime.

Manejadores de fallos (2)� Manejadores de fallos:

� Catch permite indicar que hacer ante un fault concreto. catchAll permite indicar que hacer ante el resto de faults.

<f ltH dl ><faultHandlers>

<catch faultName=... >

<!-- Perform an activity -->

/ t h</catch>

<catch faultName= ... >

<!-- Perform an activity -->

/</catch>

...

<catchAll>

<!-- catchAll es opcional -->

</catchAll>

</faultHandlers>

Manejadores de fallos (3)� Ejemplo:

� Extensión del ejemplo anterior para considerar la situación en la que el cliente pide ejecutar un crédito superior al que se le ha concedido.

á� Si esto ocurre, el flujo lanzará un fault usando la actividad throw.El j d d di h f lt l i á� El manejador de dicho fault en el scope enviará un mensaje al cliente indicándole el error.

Page 137: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Manejadores de fallos (4) Manejadores de fallos (5)<scope name="new-scope">

<faultHandlers><faultHandlers>

<catch faultName="lns:loanFault“ faultVariable="error">

<sequence name="fault-sequence">

<assign><assign>

<copy>

<from expression="'invalid request'"/>

<to variable="approvalInfo" part="accept"/><to variable= approvalInfo part= accept />

</copy>

</assign>

<repl partner "c stomer" portT pe "lns loanAppro alPT"<reply partner="customer" portType="lns:loanApprovalPT"

operation="obtain" container="approvalInfo" faultName=

"lns:loanProcessFault"/>

</ ></sequence>

</catch>

</faultHandlers>

</scope>

Manejadores de fallos (y 6)<flow name=…>

<throw name="grant-failure"<throw name grant failurefaultName="lns:loanProcessFault"/>

</flow>/

Manejadores de compensación (1)

� Una vez que un scope ha terminado, es posible ejecutar sus manejadores de compensación.� Compensación explícita usando la actividad

compensate:<compensate scope="…"/>

� Compensación implícita. Si ocurre un error en un scope pero alguno de sus scopes anidados se hascope pero alguno de sus scopes anidados se hacompletado con éxito, se invoca a los manejadores de compensación de los scopes j p panidados. La invocación se produce en orden inverso de ejecución.

Page 138: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Manejadores de compensación (y 2)� Ejemplo: Reserva de dos tramos de un viaje:<scope name = “bookTravel“>

…<scope name="firstFlight">

< ti H dl ><compensationHandler>

<!– Cancelar reserva primer vuelo -->

/ i dl</compensationHandler>

<!– Reservar primer vuelo -->

/</scope>

<!– Reservar segundo vuelo -->

</scope>

Manejadores de eventos (1)� Dos tipos de eventos:

� onMessage: se recibe un mensaje de un servicio externo.

<onMessage partnerLink="name"

portType="name"portType name

operation="name"

variable="name">……

</onMessage>

� Ejemplo: mensaje de cancelación de un pedido.

� onAlarm: se reciben en una hora prefijada o tras una cierta duración.

Ej l h dí l� Ejemplo: esperar como mucho un día por la respuesta de un servicio, o esperar como mucho hasta un “deadline” determinado.hasta un deadline determinado.

Manejadores de eventos (2)� Dos formas de usar los eventos:

� Pick. Actividad de bifurcación. Esperar a que pase uno de entre una serie de eventos y ejecutar una actividad asociada.

� Manejadores de eventos. Si el evento ocurre durante la ejecución de un scope determinado, y el scope ha definido un manejador para dichoel scope ha definido un manejador para dichoevento, se ejecuta el manejador.

Manejadores de eventos (3)� Ejemplo:

� En un proceso para gestionar pedidos, terminar el proceso si se recibe una cancelación desde el cliente (en un ejemplo real probablemente haría falta llamar a manejadores de compensación)falta llamar a manejadores de compensación).

� Si el proceso tarda más de 15 minutos en completarse lanzar un faultcompletarse, lanzar un fault.

� Ejemplo formato alarm:� P1Y11M14DT4H10M30S: 1 año 11 meses 14 días 4 horas 10� P1Y11M14DT4H10M30S: 1 año, 11 meses, 14 días, 4 horas, 10

minutos y 30 segundos

Page 139: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Manejadores de eventos (y 4)<process ... >

...

<eventHandlers>

<onMessage partnerLink="Client"

portType="buy:BuyTravelPT"

operation="CancelBuy"

variable=“TravelPurchase">

<terminate/>

</onMessage>

<onAlarm for="'PT15M'">

<throw faultName="buy:Timeout"

faultVariable="Fault" /

</onAlarm>

</eventHandlers>

</process>

Conclusiones (1)� ¿Cuándo usar BPEL?

� En procesos de larga duración, con interacciones asíncronas, proporciona importantes ventajas:

� Potente gestión del paralelismo de mucho más alto i l l j i l (nivel que en lenguajes convencionales (e.g.

threads).� Soporte sencillo para invocaciones asíncronas y� Soporte sencillo para invocaciones asíncronas y

correlación de mensajes.� Soporte para manejo de eventos.� Soporte para “transacciones” basadas en

compensación en lugar de bloqueos (que pueden ser inadmisibles en procesos de larga duración)ser inadmisibles en procesos de larga duración).

Conclusiones (2)� ¿Cuándo usar BPEL? (cont.)

� ¿Y en procesos síncronos de corta duración?:� Las ventajas que aparecen en procesos asíncronos

de larga duración serán seguramente poco relevantes:relevantes:

� Correlación es innecesaria. En invocaciones síncronas, la instancia del proceso deja la conexión , p jabierta esperando por la respuesta.

� Transacciones por compensación pueden no ser necesarias (las transacciones por bloqueo puedennecesarias (las transacciones por bloqueo puedenservir, ya que el tiempo de ejecución es corto).

� Poco probable que haya que responder a eventos íasíncronos (las condiciones del entorno seguramente

no cambiarán tan rápido).� Seguramente la gestión del paralelismo no seráSeguramente la gestión del paralelismo no será

tampoco tan importante (aunque puede haber excepciones).

Conclusiones (y 3)¿Cuándo usar BPEL? (cont )� ¿Cuándo usar BPEL? (cont.)� ¿Y en procesos síncronos de corta duración?:

A d l di h ú h l t j� A pesar de lo dicho, aún hay algunas ventajas a considerar también en estos procesos:

� El flujo se puede crear gráficamente.� El flujo se puede crear gráficamente.� Es fácil enviar y recibir mensajes a servicios web.� Los links son una manera potente y sencilla de

manejar el paralelismo.

� Pero también hay importantes inconvenientes:Las capacidades de manipulación de datos y de� Las capacidades de manipulación de datos y dedefinir lógica en BPEL son muy limitadas. Incluso operaciones básicas de manejo de listas son i ó d d hincómodas de hacer.

� La alternativa recomendada es que esa lógica sea encargada a un servicio web externo, pero esto es g , partificial cuando se trata de lógica interna del proceso.

Page 140: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Tema 5: Integración de Datos Di ib idDistribuidos

Integración de Datos Distribuidos

� El problema de la integración de datos distribuidos consiste en integrar datos de fuentes distribuidasconsiste en integrar datos de fuentes distribuidas, heterogéneas y posiblemente autónomas.

HeterogéneasSistema De Integración

Distribuidas

Sistema De Integración

AutónomasAutónomas

Poco estructuradas

Tipos de Heterogeneidad

� Heterogeneidad a múltiples niveles:� Nivel de estructuración:

� Información estructurada (bases de datos), � Información semi-estructurada (servicios web, XML,

aplicaciones,…).� Modelo de datos (e.g. Modelo relacional vs Modelo

jerárquico).� Convenciones sintaxis (“Calle Alcalá, nº 32”, “C\Alcalá, 32 ”).� Heterogeneidad de esquema. Ejemplo: representación de

información de criminales y tipos de delito:Una BD tiene una tabla CRIMINALES y una tabla� Una BD tiene una tabla CRIMINALES y una tablaDELITOS con una relación M:N.

� Otra BD tiene una única tabla CRIMINALES que indica el tipo o tipos de delito.

� Otra BD tiene en una tabla distinta a los criminales de cada tipo de delito: tablas ASESINOS LADRONEScada tipo de delito: tablas ASESINOS, LADRONES, ESTAFADORES, etc.

Base de Datos UniversalSe construye un nuevo sistema integrando todos los� Se construye un nuevo sistema integrando todos losdatos -> Modelo de datos único compartido por todas las aplicaciones.todas las aplicaciones.

� Las fuentes de información originales desaparecen.� Problemas:� Problemas:

� Hay que rehacer todas las aplicaciones� Hay que volver a formar a los usuarios� Requiere un caro y crítico servidor central� No es válido para fuentes autónomas

Difí il i ibl ú i d l t t l� Difícil o imposible que un único modelo tenga en cuenta las necesidades de todas las aplicaciones.

� Te obliga a usar aplicaciones desarrolladas ad-hoc, en lugar g p , gde paquetes comerciales (no pueden “saberse” tu modelo).

� Conclusión: inviable muchas veces. Cuando es viable, largo, costoso y con problemas graves inherentes como enfoquecostoso y con problemas graves inherentes como enfoqueglobal. Puede ser una opción para una parte del problema.

Page 141: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Data Warehouse (1)

� Los datos de las fuentes se copian periódicamente a un almacén centralperiódicamente a un almacén central.

� Pueden copiarse todos los datos o sólo un b jsubconjunto.

� Ventajas:� No es necesario rehacer aplicaciones ni volver a

formar a los usuarios� Eficiente

Data Warehouse (2)

� Problemas:Datos no actualizados� Datos no actualizados

� Puede no ser posible o muy ineficiente con fuentes autónomasue es au ó o as

� Organizaciones quieren mantener el control sobre sus datos.No es factible hacer copias masivas periódicas� No es factible hacer copias masivas periódicas.

� Sistema de integración “pesado”� Contiene gran cantidad de datos.g

� Conclusión: muy útil para informes, tratamiento de históricos, análisis de tendencias, etc. Menos útil en otros ámbitos.� En informes/análisis de tendencias, a menudo no es

importante tiempo real pero sí lo es mucho la eficiencia (aimportante tiempo real, pero sí lo es mucho la eficiencia (aveces, los procesos son muy pesados).

Data Warehouse (y 3)

� Arquitectura típica de una instalación Data Warehouse:Warehouse:� Herramienta ETL (Extraction, Transformation and

Load) para extraer la información de las bases de ) pdatos origen, transformarla de la forma deseada y volcarla en el repositorio central.B d d t OLAP B d d t i l� Base de datos OLAP. Base de datos especialoptimizada para consultas que involucren grandes cantidades de datos.

� Herramienta de generación de informes. Permite crear de forma sencilla informes complejos que

tili l i f ió l d lutilicen la información almacenada en elrepositorio central.

CDC (1)

� CDC: Change Data CaptureSe utiliza una ETL para una carga inicial� Se utiliza una ETL para una carga inicial

� Un demonio en cada fuente monitoriza los logs de las fuentes de datos y notificalogs de las fuentes de datos y notificainserciones, actualizaciones y borrados.Los cambios se actualizan en el Data� Los cambios se actualizan en el DataWarehouse.

Page 142: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

CDC (y 2)

� Ventajas:� Consultas eficientes� Consultas eficientes� Información actualizada.

� Problemas:� Problemas:� No válido para fuentes autónomas (normalmente

sólo BDs).� Puede no escalar si demasiadas actualizaciones

(inserciones en el Data Warehouse son costosas).

Virtualización de Datos (1)

� La capa lógica de las bases de datos fue creada paraaislar a los programas de aplicación de la necesidadp g pde ocuparse de la lógica de combinación de datos:� En su lugar, se utiliza una capa específica, independiente de

la aplicaciónla aplicación.

� Ventajas:� No es necesario codificar cada operación de combinación de p

datos (simplemente escribimos una consulta SQL).� El sistema implementa las principales operaciones y se

ocupa de la optimización de consultas. p p� Independencia lógica.� Punto único para gestionar multiples aspectos de acceso a

datos: e g control de accesodatos: e.g. control de acceso.� El sistema se ocupa de tratar condiciones especiales: e.g.

swapping a disco.� …

Virtualización de Datos (2)

� En los entornos distribuidos y heterogéneos de hoy, las aplicaciones (ad-hoc o EAI /ESB) se veny, p ( / )forzadas a combinar los datos por sí mismas(como en los “viejos tiempos”).� Implementar operaciones de combinación de datos…� Optimización.

C di i i l� Condiciones especiales.� …

� Además los nuevos entornos necesitan aún más� Además, los nuevos entornos necesitan aún másde la capa de combinación de datos:� Heterogeneidad: e g combinar datos en modelo relacional� Heterogeneidad: e.g. combinar datos en modelo relacional

con datos en modelo XML.� Distribución: consideraciones de eficiencia llevan a la

id d d té i ífi ( h )necesidad de técnicas específicas (e.g. cache).

Arquitectura de Referencia

App1 App2 App3 App4Aplicacionesfinales de usuariousuario

Gobernanza

Seguridad

Componentes reusables de Lógica de negocio: JEE/ .NET/ ESB / EAI

Capa de Acceso e Integración de DatosGestión

Integración de PlataformaIntegración de Plataforma

SRMCRM ERPWeb Docum

entosFicher

osWeb

Services

AplicacionesProveedoras de

Servicios

Page 143: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Arquitectura de referencia (2)� Capa de Acceso e Integración de Datos

� Punto único de acceso a datos. Generalización del patrón DAO (Data Access Object)DAO (Data Access Object).

� Ofrece API única de acceso a datos, independiente de arquitectura de almacenamiento.

� Proporciona componentes de acceso a datos reusables. Ejemplo:

� Obtener los datos de un cliente junto con sus incidencias� Obtener los datos de un cliente junto con sus incidenciasgraves abiertas y nuestro nivel de facturación con él.

� Independencia Física y Lógica. Si hay cambios en la localización/esquemas de las fuentes de datos sólo hay quelocalización/esquemas de las fuentes de datos, sólo hay quetocar esta capa, no las aplicaciones. Ejemplos

� Una fuente cambia su esquema de datos.� Una fuente (e.g. Mainframe) es sustituida por otra.� Los datos que antes venían de una fuente ahora vienen de dos

(fusiones).( )� Los datos que antes venían de dos fuentes ahora vienen de

una (reingeniería).

Arquitectura de referencia (3)C d A I t ió d D t ( t)� Capa de Acceso e Integración de Datos (cont)� Gobernanza. Punto único para:

Definir políticas de acceso a datos: permisos� Definir políticas de acceso a datos: permisos. � Determinar el impacto de cambios.� Monitorizar el acceso a fuentes de datos: e.g. Limitar g

accesos concurrentes, detectar errores...� ...

S ft d t t d i� Software de soporte a esta capa puede incorporar:� Maneras declarativas de crear combinaciones de datos:

� Ejemplo: “join” entre información de CRM aplicación� Ejemplo: join entre información de CRM, aplicaciónde incidencias y aplicación de facturación.

� Componentes reusables sin escribir código.� Optimización de consultas distribuidas.� Definición de vistas virtuales.

Múltiples modos de acceso: J DBC SOAP� Múltiples modos de acceso: J DBC, SOAP,...� ...

Virtualización de Datos (3)

� Datos permanecen en las fuentes y se define un esquema “virtual” de integraciónesquema virtual de integración.

� Cuando el sistema recibe una consulta, la subdivide en consultas para los esquemas de las fuentesen consultas para los esquemas de las fuentesorigen.

� El sistema combina los resultados de las fuentes yydevuelve la respuesta unificada de acuerdo al esquema global.

� Pueden tratar fuentes como bases de datos, servicios web, XML, CSV, aplicaciones paquetizadas A veces incluso fuentes webpaquetizadas. A veces, incluso fuentes web(mediante aplicaciones de automatización web).

Virtualización de Datos (4): Ejemplo

APLICACIÓN USUARIO

SELECT * FROM R WHERE TITULO=‘Moby Dick’

DATOS R

NIVEL LÓGICONIVEL LÓGICO

R={TITULO,AUTOR,PRECIO,PUNTOS}

DATOS R=(DATOS A)�(DATOS B)

SELECT * FROM B WHERESELECT * FROM A WHERE

NIVEL FÍSICO

SOAP HTTP

SELECT FROM B WHERETITULO=‘Moby Dick’

SELECT FROM A WHERETITULO=‘Moby Dick’ DATOS

ADATOS

B

XML

ENVOLTORIO1 ENVOLTORIO 2

A={TITULO,AUTOR,PRECIO} B={TITULO,AUTOR,PUNTOS}{ , , } { , , }

Page 144: Objetivos - QueGrande.orgquegrande.org/apuntes/EI/OPT/ADOO/teoria/11-12/teoria_adoo_2011... · ... Solaris, HP-UX, AIX, ... Las operaciones y sus parámetros se describen en un fichero

Virtualización de Datos (5)

� Ventajas:Datos en tiempo real� Datos en tiempo real.

� Válidos para fuentes autónomas.Sistema de integración “ligero”� Sistema de integración “ligero”.

� Tratan fuentes semi-estructuradas.I i t M fi i t� Inconveniente: Menos eficiente.

� Puede usar precargas para las fuentes que se deseedesee.

� Contiene “lógicamente” al esquema Data Warehouse aunque los paquetes softwareWarehouse, aunque los paquetes softwareactuales no siempre proporcionen esta funcionalidad.

Virtualización de Datos (6)

� Tareas principales:� Reformulación y ejecución de consultas Traducir consulta� Reformulación y ejecución de consultas. Traducir consulta

general sobre el esquema global en una lista de subconsultas sobre las fuentes.

ó� Optimización de consultas. Tener en cuenta retardos de red, trabajar con poca información de costes de las fuentes, etc.

� Diversidad de formatos. Heterogeneidad de taxonomías, convenciones semánticas, esquema, etc.Heterogeneidad en las capacidades de consulta de las� Heterogeneidad en las capacidades de consulta de lasfuentes (e.g. un formulario web).

� Acceso y recuperación de datos puede ser complejo (e.g. traducción de consulta SQL a invocación SOAP).

Virtualización de Datos (y 7)

APP1 APP2 APP3 APP4

SOAP JDBC ODBC XQUERY

ACCESSINTERFACES

WebServices

JDBC ODBC XQuery

SOAP JDBC ODBC XQUERY

EII SYSTEM

ACCESSINTERFACES

SQL/ XQuery / XPath Full Text Result Sets/ XML

EII SYSTEM Caché

ExecutionEngine

OptimizerPlanGenerator

Query Analyzerand Decomposer

MetadataRepository Wrapper

Creator

ProprietaryWrappers

Web ServicesWrapper

WebWrapper

DatabaseWrapper

Proprietary

Graphical ToolAI - Based WebWrapper Generation

Propietary Interface Web Services http

ExternalPartner sBackofficeandPropietary

Local DatabasesandData

JDBC/ODBC

JDBC/ODBCProprietaryAPIS andProtocols

SOAP HTMLHTTP

WebsitesApplicationsandPropietaryApplications

andDataWarehouses