• No se han encontrado resultados

3.3 Casos de estudio

N/A
N/A
Protected

Academic year: 2021

Share "3.3 Casos de estudio"

Copied!
21
0
0

Texto completo

(1)
(2)

Introducción

„

Objetivo

„ Estudiar casos de estudio que ilustren escenarios típicos de

aplicación de XML

„ Indicar las APIs apropiadas en cada caso

„

Casos de estudio

„ Configuración de aplicaciones „ Generación de aspecto visual

(3)

Configuración de aplicaciones (1)

„

En el tema anterior, se ha sugerido el uso de ficheros

.properties

como mecanismo de configuración de

aplicaciones

„ Ventaja: sencillez

„ Desventaja: no permite especificar cómodamente

configuraciones complejas

„

Cuando la configuración es compleja, el uso de XML

se presenta como una buena alternativa

„ Como se ha sugerido en el tema anterior, se deberían

ofrecer un conjunto de clases que permitan acceder

fácilmente a la información de configuración, ocultando el uso de XML

(4)

Configuración de aplicaciones (2)

„

Ejemplo

... <data-sources> <data-source name="Catalog" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost/catalog" user="catalog" password=""> </data-source> <data-source name="OrderManagement" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:oci8:@orders" user="orders" password=""> </data-source> </data-sources> ...

(5)

Configuración de aplicaciones (3)

„

¿ Cómo se puede parsear un fichero XML ?

„ El pequeño conjunto de normas que define XML y la

posibilidad de definir reglas (ej.: vía DTDs) para especificar los tags válidos, permiten construir parsers genéricos que son capaces de comprobar que el documento XML está “bien formado” y es “válido”

„ ¡ Los parsers ya están hechos !

„ Existen parsers para los lenguajes más usuales, conformes a

varias APIs estándares

„ DOM „ SAX

(6)

Configuración de aplicaciones (4)

„

Parsers SAX

„ Simple API for XML

„ Es un pequeño framework basado en eventos

„ El programador proporciona uno o varios objetos callback a

los que el parser llamará cada vez que ocurra un evento de interés (apertura de un tag, cierre de un tag, un error, etc.)

„

Parsers DOM

„ Document Object Model

„ Construye una representación (un árbol) en memoria del

documento

„ El programador puede acceder a los datos del documento

(7)

Configuración de aplicaciones (5)

„

Parsers SAX vs DOM

„ SAX

„ Es secuencial

„ Consumo mínimo de memoria => eficiencia

„ No es fácil acceder a elementos anteriores, hermanos, etc.

„ DOM

„ Construye un árbol en memoria „ Máximo consumo de memoria

„ Permite acceder fácilmente a todos los detalles del documento „ Más sencillo que SAX

(8)

Configuración de aplicaciones (6)

„ APIs Java básicas para parsing

„ J2SE incluye JAXP (Java API for XML Processing)

„ javax.xml.parsers y familia javax.xml.transform

„ Formaba parte de J2EE, pero se movió a J2SE a partir de la versión

1.4 de J2SE

„ javax.xml.parsers incluye dos factorías abstractas para

obtener instancias de parsers SAX (familia org.xml.sax) y DOM

(org.w3c.dom)

„ J2SE incluye una implementación por defecto de JAXP „ Se puede usar otra si se desea

„ APIs Java de más alto nivel para parsing

„ JAXB (Java Architecture for XML Binding)

„ Permite generar clases Java a partir de un esquema XML „ Permite serializar a XML y viceversa

„ Formará parte de J2EE

„ Jakarta Commons Digester

„ http://jakarta.apache.org/commons/digester

„ Permite definir reglas en XML para dar valores a JavaBeans a partir de

(9)

Configuración de aplicaciones (7)

„

J2EE permite especificar información de

configuración en XML

„ Ej.: web.xml

„ Es posible configurar aspectos relativos a la aplicación y al

servidor de aplicaciones

„ El programador accede a la información de configuración

relativa a la aplicación mediante el API de J2EE

(10)

Configuración de aplicaciones (y 8)

„

Más información sobre SAX, DOM y JAXB

„ Libro

Java and XML

(bibliografía recomendada) „ http://java.sun.com/xml

„ The Java Web Services Tutorial „ http://java.sun.com/webservices

(11)

Generación de aspecto visual (1)

„

Situación

„ Queremos construir una tienda de comercio electrónico „ Cada producto tiene asociado los siguientes atributos:

„ Identificador de producto, nombre, breve descripción, fecha y

precio

„ También se desea almacenar la “estructura” del producto

„ Si es un libro, su estructura es su índice (división en capítulos y

apartados)

„ Si es un CD, su estructura es la lista de canciones (indicando

para cada una de ellas, su nombre y duración)

„ Se podrán hacer consultas con condiciones sobre los valores

de cualquier atributo (ej.: obtener los libros con precio > X), excepto su estructura

„ Sólo interesa recuperar su estructura a partir del identificador

del producto

„ Cuando el usuario desea visualizar los detalles de un

producto, deberán mostrarse los datos del producto, incluyendo su estructura

(12)

Generación de aspecto visual (2)

„

Opciones de diseño

„ Modelar la estructura de libros y CDs como tablas „ Incómodo

„ Son estructuras jerárquicas => requerirán varias tablas „ Se necesitan tablas distintas para cada tipo de producto

„ Añadir un atributo de tipo String a la tabla Producto que

represente su estructura en HTML

„ ¿Y si quisiésemos mostrarlo en otro lenguaje visual (ej.: WML)? „ ¿Y si queremos cambiar el formato HTML (ej.: un tipo de

letra)?

(13)

Generación de aspecto visual (3)

„

Opciones de diseño (cont)

„ Añadir un atributo de tipo String a la tabla Producto que

represente su estructura en XML

„ Generamos el aspecto visual dinámicamente „ ¿ Cómo ?

„ Una posible solución sería usar un parser DOM o SAX para acceder

a los datos y generar dinámicamente HTML

„ Sin embargo, y dado que es un caso muy habitual, existen

soluciones más sencillas: XSL y los tags de XML de JSTL

„

Transformaciones XSL (XSLT)

„ Un fichero XSL (eXtensible Stylesheet Language) permite

expresar reglas para transformar un documento XML en otro formato (ej.: HTML, otro documento XML, PDF, etc.)

(14)

Generación de aspecto visual (4)

„

Transformaciones XSL (cont)

„ APIs Java

„ Familia de paquetes javax.xml.transform

„ Forman parte de JAXP

„ Proporciona una factoría abstracta que permite obtener un

transformador para realizar la transformación de un documento XML a partir de un documento XSL

(15)

Generación de aspecto visual (y 5)

„

Tags de XML proporcionados por JSTL

„ JSTL (parte de J2EE) se comentará en el tema 4

„ Ofrece un tag para realizar una transformación en una

página JSP

„ También ofrece tags para parsear un documento XML y

acceder a su información de una manera bastante parecida a XSL

„ Estos tags representan una alternativa (menos potente) a XSL

„

Más información sobre XSL y los tags de XML de JSTL

„ Libros

XML in a nutshell

y

JavaServer Pages 3rd edition

(bibliografía recomendada)

„ http://java.sun.com/xml „ The J2EE Tutorial

„ http://java.sun.com/j2ee

(16)

Integración de aplicaciones heterogéneas (1)

„

El ejemplo de las películas ...

BD cine.acme.com Nuestra empresa BD Petición Internet Respuesta en XML Ap. web Ap. cliente

(17)

Integración de aplicaciones heterogéneas (2)

„

En el ejemplo anterior, cliente y servidor pueden

estar escritos en distintos lenguajes y corriendo en

distintas plataformas (hardware y sistema operativo)

„

Cuando la comunicación es vía Internet,

normalmente se usa HTTP

„ Todos los firewalls reconocen HTTP

„ El servidor se suele implementar como una sencilla

aplicación web

„ El cliente sólo necesita conectarse a una URL, leer su

respuesta, parsearla e introducirla en su BD

„ Ej.:

http://cine.acme.com/services/MovieInformationProvider/findM ovieReleases?day=19&month=10&year=2001

(18)

Integración de aplicaciones heterogéneas (3)

„ Servicios Web

„ SOAP: Protocolo basado en XML para el intercambio de información

en un entorno distribuido

„ Conceptualmente permite enviar peticiones/respuestas en XML

(normalmente por HTTP)

„ Un Servicio Web es un servicio ofrecido a través del web que envía

la información mediante SOAP

„ Existen APIs, para los lenguajes más usuales, que permiten

implementar clientes y servidores que usan SOAP

„ Clientes y servidores pueden estar escritos en lenguajes distintos „ Tanto J2EE como .NET proporcionan soporte para servicios web

„ Existen APIs basadas en RPCs (ej.: JAX-RPC en J2EE), que

permiten implementar un Servicio Web como un objeto cuyos métodos se pueden invocar remotamente, como si de un objeto local se tratase

„ Ocultan el uso de XML

„ El intercambio de información mostrado en el anterior ejemplo se

(19)

Integración de aplicaciones heterogéneas (4)

„

Otro ejemplo

„ Como parte de una aplicación web que estamos

desarrollando, queremos ofrecer un servicio que permite visualizar las cotizaciones de valores bursátiles

„ Contratamos con una empresa de contenidos que nos pase

esta información

„ La información está cambiando constantemente „ No tiene sentido almacenarla en nuestra BD

„ Sólo queremos mostrar la información

„ Podríamos modelar esta solución con Servicios Web

„ La empresa de contenidos implementa un servicio web que

ofrece una operación para consultar las cotizaciones del conjunto de valores bursátiles pasados como parámetro

„ Nuestra aplicación web invoca esta operación cada vez que

tiene que mostrar información de cotizaciones y genera HTML dinámicamente

(20)

Integración de aplicaciones heterogéneas (5)

„

Otro ejemplo (cont)

„ En este caso, el uso de XML/XSL constituiría una solución

más sencilla

„ La empresa de contenidos proporciona una URL para obtener

los valores del conjunto de valores bursátiles que pasamos como parámetro, que devuelve dicha información en XML

„ Implementamos la consulta de cotizaciones en nuestra

aplicación web leyendo de esta URL y transformando dinámicamente a HTML mediante un documento XSL

(21)

Integración de aplicaciones heterogéneas (y 6)

„

CORBA permite afrontar integraciones más complejas

entre aplicaciones heterogéneas (normalmente en

intranets)

„ Seguridad, transacciones, eventos, etc.

„

Más información sobre Servicios Web

„ http://www.webservices.org „ The Java Web Services Tutorial

„ http://java.sun.com/webservices

Referencias

Documento similar

scheme with correction has been proven as accurate as the second order scheme, a double simulation with the standard anisotropic model with

De este modo se evitaba que el comercio con el exterior, aparte de privar al imperio de algunas mercancías, desde las vituallas a las armas, indispensables y siempre escasas, como

Ade- más, Fabian, Stadler y Wetzels (1992) apuntan también la existencia de lo que denominan ERROR DE AUTENTICIDAD , esto es, un testigo simulado (que nunca ha visto

La solución que se ha planteado, es que el paso o bien se hiciese exclusivamente por el adarve de la muralla, o que una escalera diese acceso por la RM evitando la estancia (De

Que en la reumon de la Comisión de Gestión Interna, Delegada del Consejo Social, celebrada el día 17 de marzo de 2011 , con quórum bastante para deliberar y

Cuando trabaje en una tabla, haga clic donde desee agregar una fila o columna y, a continuación, haga clic en el signo más.La lectura es más fácil, también, en la nueva vista

La combinación, de acuerdo con el SEG, de ambos estudios, validez y fiabilidad (esto es, el estudio de los criterios de realidad en la declaración), verificada la

Tal y como se hace constar en el artículo 29 del Real Decreto 412/2014, las solicitudes de plazas de estudiantes con estudios universitarios oficiales españoles parciales que deseen