48
Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor 37 Sistema a Distancia Segunda Unidad: Parsing XML y Web Services Sumario La siguiente unidad presenta como manipular archivos XML utilizando las técnicas de parseo, SAX y DOM, además se diferencia ambas técnicas y se plantea ejemplos de aplicación. Luego se definen los web services, los estándares que utiliza, características, arquitectura y componentes de los web services. Además de los retos técnicos, y las tecnologías que permiten su desarrollo. Al final se muestra un ejemplo sobre este tipo de soluciones distribuidas.

UNIDAD_II

Embed Size (px)

DESCRIPTION

Informacion de sad

Citation preview

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    37 Sistema a Distancia

    Segunda Unidad: Parsing XML y Web Services

    Sumario

    La siguiente unidad presenta como manipular archivos XML utilizando las tcnicas de parseo, SAX y DOM, adems se diferencia ambas tcnicas y se plantea ejemplos de aplicacin. Luego se definen los web services, los estndares que utiliza, caractersticas, arquitectura y componentes de los web services. Adems de los retos tcnicos, y las tecnologas que permiten su desarrollo. Al final se muestra un ejemplo sobre este tipo de soluciones distribuidas.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    38 Sistema a Distancia

    Objetivos

    Al finalizar esta unidad el estudiante ser capaz de:

    Implementar aplicaciones parsing XML utilizando SAX y DOM. Diferenciar los APIs SAX y DOM en el manipuleo de archivos XML. Comprender, define y describe los web services y la importancia que

    tiene para interoperar sistemas e integrar sistemas heterogneos. Conocer los componentes y la arquitectura de una aplicacin de Web

    Services. Implementar Web Services utilizando la tecnologa JAX-WS

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    39 Sistema a Distancia

    Leccin 5: Parsing XML

    5.1 Definicin

    El procesamiento de un documento XML requiere el uso de algn parser XML, que descompone el documento XML en sus diferentes elementos individuales. Un parser o analizador sintctico se encarga de procesar el documento XML y verifica que el documento XML este bien formado (y/o validado). El proceso implica leer el documento XML y verificar que este documento este bien formado, algunos tambin comprueban que el cdigo XML sea vlido.

    "Un parser de XML genrico es aquel que nicamente comprueba si el documento XML es un documento bin formado, mientras que un parser de validacin se encarga de comprobar que un fichero XML sea vlido; es decir, comprueba que la estructura y el nmero de etiquetas tengan sentido, o lo que es lo mismo, que se adecuen al DTD" (Lozano, 2000, p. 144).

    Tambin se considera como una herramienta de aplicacin XML que podemos incorporarlos a nuestras aplicaciones, de manera que estas puedan manipular y trabajar con documentos XML

    Figura 5.1: Arquitectura de un parseador Fuente: Adaptado de Oracle XML Developer's Kit Programmer's Guide (2005)

    El procesador XML divide el documento en sus partes constituyentes, para comprender su estructura y las relaciones entre sus partes.

    Las reglas de validacin de la gramtica (vocabulario XML) se almacenan en un DTD o en XMLSchema.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    40 Sistema a Distancia

    Finalmente, se aplica el programa parser utilizando las tcnicas ms conocidas como DOM y SAX para obtener y representar un Parsed XML y Parsed XSL, tal como muestra la figura 5.1.

    5.2 Tipos de parsing

    Existen dos tipos de parseo:

    a) Sin validacin: chequea que el documento est bien formado de acuerdo a las reglas de sintaxis de XML

    b) Con validacin: adems de comprobar que el documento est bien formado, comprueba que ste sea vlido utilizando un DTD

    En el caso de utilizar un DTD, es preferible utilizar un parser con validacin.

    5.3 Parsers en los Browsers

    Los navegadores como Internet Explorer y Mozilla Firefox incluyen sus propios tcnicas para parsear, por ejemplo:

    a) Microsoft Internet Explorer, utiliza su propio parser de Microsoft incluido en la librera MSXML.DLL

    b) Mozilla Firefox, internamente utiliza el parser EXPAT.

    5.4 Los APIs para parseo

    Existe 02 interfaces de comunicacin entre componentes de software (APIs) las cuales son SAX y DOM, que utilizan tcnicas y estn estandarizadas en un gran nmero de implementaciones para distintos lenguajes (Java, php, .net etc.)

    Estos dos APIs DOM y SAX son parsers XML que comprueban que el documento est estructurado, bien formado y vlido a su vez.

    El lenguaje Java posee sus propios paquetes: org.xml.sax y org.w3c.dom, que contienen interfaces y clases abstractas para la implementacin de parseo.

    5.5 Java API for XML Processing (JAXP)

    Tecnologa desarrollada en Java, las cuales tiene las siguientes caractersticas:

    - Define un API para trabajar con parsers SAX, DOM y transformaciones XSL

    - Proporciona factoras para crear instancias de parses y transformadores XSL de manera portable

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    41 Sistema a Distancia

    - Forma parte de J2SE 1.4 y aparece en versiones superiores. - Incluye las APIs org.xml.sax, org.w3c.dom y javax.xml.{parsers,

    transform} - Incluye Crimson y Xalan como implementaciones por defecto - Se pueden usar otras implementaciones va configuracin - JDOM es un API en java para DOM y DOM4J para XPath

    5.6 DOM y SAX

    Son dos plataformas con lenguajes-independientes, estas APIs sirven para la manipulacin o lectura de documentos XML.

    Los APIs o Application Programming Interface, son un conjunto de funciones, procedimientos, mtodos, clases e incluso interfaces, incluye caractersticas para procesar y analizar documentos XML.

    Existe una gran diferencia entre los 02 APIS, que a continuacin detallamos:

    Tabla 1: Comparacin SAX y DOM Fuente: Elaboracin propia

    Criterios de evaluacin

    API DOM API SAX

    Estandarizacin

    Recomendado por W3C

    Especificacin no formal

    Manipulacin

    Funciones: Lee y Escribe

    Funcin solo lectura

    Consumo de memoria

    Depende del tamao de la fuente de archivo XML, pueden ser grandes

    Muy bajo

    Manejo de XML Basado en rbol Basado en eventos

    5.7 SAX (Simple API para XML) Este API fue creado originalmente en Java, hoy en da SAX es soportado en la mayora de los lenguajes de programacin. Utiliza un modelo orientado a eventos, la cantidad de uso de memoria es baja y solo lee documentos XML.

    De acuerdo a la tabla 1, no trabaja con una especificacin formal y es considerado como el primer parseador de documentos XML. (Seacord, Plakosh y Lewis, 2003, p. 110)

    SAX utiliza el modelo orientado a eventos para leer documentos en XML. La idea bsica es que el analizador SAX lea el documento XML "lnea uno a la vez".

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    42 Sistema a Distancia

    Las funciones del analizador SAX reaccionan al encontrar los elementos y otras partes del documento XML.

    Cuando el analizador encuentra una etiqueta del documento XML, llama una determinada funcin. Cuando el analizador pasa por una etiqueta de cierre termina la funcin.

    Ejemplos: A continuacin mostraremos un ejemplo de un documento XML

    primer ejemplo

    Y la forma como lee el API SAX

    El API comienza a leer el documento de la siguiente manera:

    Lnea 1: Reconoce e identifica el documento XML y verifica la versin "1.0" y codificacin "UTF-8"

    Lnea 2: Define el elemento raz con el nombre de ElementoRaiz, cuyo atributo se denomina parmetro1 y tiene como valor el dato valor

    Lnea 3: Lee el siguiente elemento cuyo nombre es PrimerElemento

    Lnea 4: A continuacin lee el contenido del elemento cuya informacin es primer ejemplo

    Lnea 5: Reconoce una etiqueta de cierre para el elemento PrimerElemento.

    Lnea 6: Finalmente reconoce una etiqueta de cierre del elemento raz y el API SAX termina el analizador

    Ejemplos: Este es un ejemplo de cdigo del API SAX en PHP

    // Crea el Parse XML $xml_parser = xml_parser_create(); // Se configura la lectura de los elementos y datos de los elementos xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); // Abre el Archivo XML if (!($fp = fopen($file, "r"))) { die("No puedo abrir documento XML "); }

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    43 Sistema a Distancia

    // Lee y parsea el documento XML while ($data = fread($fp, 4096)) { if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } } xml_parser_free($xml_parser);

    function startElement($parser, $name, $attrs) { // Aqu implementer cdigo } function endElement($parser, $name) { // Aqu implementer cdigo } function characterData($parser, $data) { echo $data; }

    Este programa analiza lnea por lnea los elementos, atributos y contenidos de cada elemento, adems cada vez que lee libera memoria y extrae contenidos valores de los documentos XML.

    El API SAX es excelente cuando slo se quiere leer el contenido del archivo XML, adems es fcil y limpio.

    No requiere muchos recursos inclusive puede servir en los dispositivos mviles.

    5.8 DOM

    El Modelo de Objeto Documento o Document Object Model (DOM) es una plataforma y modelo estndar de objetos independiente del lenguaje para la representacin de HTML o XML y formatos relacionados.

    Recomendado por W3C, puede ser usado para la manipulacin de documentos XML, existen diferentes versiones: DOM 1, DOM 2 y DOM 3

    Al igual que el API SAX este, se utiliza para la manipulacin de documentos xml, DOM carga el documento XML a memoria y crea un modelo de rbol de la data que contiene el documento XML adems puede consumir memoria si los documentos son grandes.

    Por lo tanto DOM define un conjunto estndar de comandos que los parsers devuelven para facilitar el acceso al contenido de los documentos XML. Un analizador de XML compatible con DOM toma los datos de un documento XML y los expone mediante un conjunto de objetos que se pueden programar.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    44 Sistema a Distancia

    5.8.1 rboles y Nodos en DOM

    El rbol se compone de nodos.

    Un nodo puede tener: - Elemento (Element) - Texto (Text) - Attribute (Attr) - Cdata (CDATASection) - Comentario (Comment)

    Relaciones entre nodos

    Podemos encontrar diferentes relaciones entre nodos: - Primer Hijo (firstChild) - Ultimo Hijo (lastChild) - Siguiente Hermano (nextSibling) - Previo Hermano (previousSibling) - Padre (parentNode)

    Contenidos de los Nodos

    Los contenidos de los nodos pueden ser: - Valor del Atributo (text) - Valor del Elemento (text) - Comentario del Valor (text)

    Ejemplos:

    Sea el siguiente contenido de un documento XML:

    Juan Martha Pedro Carlos

    A continuacin, la forma cmo se representa el documento XML

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    45 Sistema a Distancia

    Ejemplos:

    Este es un ejemplo de cdigo del API DOM en lenguaje PHP:

    // Carga el documento XML $dom = new domDocument(); // Carga el archivo libros.xml $dom->load("libros.xml"); // Lista los nombres de los elementos de los nodos $listOfNodes = $dom->getElementsByTagName("name"); // Visualiza todos los nodos foreach($listOfNodes as $node) { print $node->nodeValue; }

    // Carga el Documento XML $dom = new domDocument(); $dom->load("libros.xml");

    // Crea un elemento $book = $dom->createElement("book");

    // crea un elemento con algun contenido $title = $dom->createElement("title", $_GET['title']);

    // algunos contenidos

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    46 Sistema a Distancia

    $book->appendChild($title);

    // Adiciona un libro debajo del elemento root en "libros.xml" $dom->documentElement->appendChild($book);

    // salva $dom->save("libros.xml");

    Ejemplo: Removiendo elementos

    En este ejemplo se establece la forma como eliminar el primer elemento del documento, en este caso el primer item del elemento programa.

    Programando en PHP Aprendiendo Java

    Para este ejemplo se utiliza la funcin removeChild.

    $elements = $dom->getElementsByTagname("programa"); $element = $elements->item(0); $children = $element->childNodes(); $child = $element->removeChild( $children->item(0) );

    El resultado sera:

    Aprendiendo Java

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    47 Sistema a Distancia

    Leccin 6: Web Services

    6.1 Definicin

    Se trata de aplicaciones que utilizan los mismos estndares de internet y protocolos que intercambian informacin entre diferentes sistemas, muchos consideran como una "caja negra" a la que hay que proveer datos de entrada especfica y obtener una respuesta determinada.

    " ...Los servicios web son aplicaciones ofrecidos a travs del Web, no son por tanto nada nuevo, sino ms bien una re-invencin de la rueda con ideas prestadas de Corba y DCOM" (Moliner, 2005, p. 238).

    Un Web Services o Servicio Web se comunica por medio de mensajes, utilizando el protocolo SOAP entre diferentes computadoras a travs de una red, de manera transparente, independiente del lenguaje de programacin, independiente del sistema operativo y de la plataforma.

    "Los servicios web significan la evolucin de la informtica distribuida, cuyo principio arquitectnico es permitir que aplicaciones de un entorno se conecten y compartan datos y contenido con aplicaciones de otro entorno distinto" (Munilla y Garca, 2003, p. 72).

    Los web services se disean para permitir que los componentes se comuniquen con otros una vez conectados, adems de ofrecer servicios de informacin y operaciones transaccionales. Este tipo de tecnologa utiliza XML como formato estndar para compartir informacin y datos, esta basado en estndares de Internet (WSDL, SOAP y UDDI) para el registro de comunicaciones. Este tipo de aplicaciones interactan con otras aplicaciones usando los protocolos de internet.

    Como soluciones de intercambio de datos, usa la red de internet como plataforma operacional y sirve como una practica para implementar SOA (Arquitectura Orientada a Servicios).

    Ejemplo: El Registro Nacional de Identificacin y Estado Civil (RENIEC) provee un Web Service que recibe como dato de entrada, en este caso el nmero de DNI de una persona, la aplicacin sera un Web Services Consumidor (WSC) y como retorno el Web Services Proveedor (WSP) enva informacin el nombre completo, el lugar de nacimiento, la direccin, estado civil y dems datos de inters de la persona asociado a la RENIEC.

    6.2 Estndares principales de los Web Services

    Los web services, utilizan los mismos estndares de internet para construir y habilitar Web services, las que podemos mencionar a continuacin:

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    48 Sistema a Distancia

    - HTTP ((HyperText Transfer Protocol) - XML (Extensible Markup Language) - SOAP (Simple Object Access Protocol) - WSDL (Web Services Description Language) - UDDI (Universal Description, Discovery and Integration)

    6.2.1 Hypertext Transfer Protocol (HTTP)

    El Protocolo de transferencia de hipertexto, es un mecanismo ms extendido utilizado por los servidores y los navegadores web para comunicarse. Este protocolo regula las solicitudes de los navegadores y las transferencias de ficheros HTML por parte de los servidores. Esta orientado a las transacciones y sigue el esquema de peticin respuesta entre un cliente y un servidor.

    6.2.2 Extensible Markup Language (XML)

    El Lenguaje de Marcas Extendida es un estndar para estructurar datos, formatos y contenido para documentos electrnicos, donde se definen etiquetas semnticas para organizar un documento. Adems XML es un metalenguaje que te permite disear tu propio lenguaje de etiquetas.

    A diferencia de un lenguaje de etiquetas normal HTML, utilizando XML te permite definir tu propio lenguaje.

    XML es considerado como un lenguaje universal que sirve para intercambio de datos e informacin entre aplicaciones, sistemas y dispositivos sobre la red de Internet.

    6.2.3 Simple Object Access Protocol (SOAP)

    El Protocolo de Acceso de Objeto Simple, es un tipo de protocolo de mensajera basada y construido en XML que se usa para codificar informacin de los requerimientos de los Web Services, adems permite responder los mensajes antes de enviarlos por la red.

    Estos mensajes SOAP codificados en XML son independientes de los sistemas operativos y pueden ser transportados por los protocolos que funcionan con Internet, como SMTP, MIME y HTTP.

    6.2.4 Web Services Description Language (WSDL)

    El Lenguaje para la Descripcin de Web Services, es un formato basado en XML, que permite definir la interfaz pblica para los servicios Web. Esta descripcin definida en XML sirve para establecer una comunicacin con los Web Services.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    49 Sistema a Distancia

    6.2.5 Universal Description, Discovery and Integration (UDDI)

    Es un directorio distribuido que opera en la Web, ofrece servicios para registrar, publicar y buscar Web Services, adems de comprobar qu servicios web estn disponibles. Es utilizado como mecanismo de descubrimiento de Web Services y averiguar si estn disponibles.

    6.3 Caractersticas de los Web Services

    Los web services presentan algunas diferencias sobre sistemas distribuidos tradicionales, entre los que podemos citar:

    Interoperabilidad: Los Web Services Consumidores pueden ser utilizados para recuperar informacin de diferentes Web Services Proveedores que se ejecutan en diferentes plataformas.

    Tipos de datos de las Interfaces: Los tipo de datos definidos para los Servicios Web se corresponde con los tipos de datos definidos por la mayora de lenguajes de programacin.

    Acceso externo desde Internet: Los Web Services Proveedores realizan una buena gestin para los accesos que provienen de los Web Services Consumidores desde Internet.

    Soporte de cualquier lenguaje de programacin: La puesta en marcha de un Web Services no est ligada a un lenguaje de programacin en particular, por lo tanto se puede implementar o usar un Web Services independientemente del lenguaje de programacin en el que fue implementado por ejemplo: Java, Python, php .Net.

    Uso de los estndares de Internet: Los Web services utilizan los estndares de Internet y estas soluciones evitan, en su medida de lo posible, reinventar soluciones a problemas que ya estn resueltas.

    Soporte para cualquier infraestructura de componentes distribuidas: Los Web Servicios no estn ligados a una arquitectura de componentes determinados. Los protocolos que utilizan estas soluciones facilitan las comunicaciones entre las distintas infraestructuras de los objetos distribuidos.

    6.4 Arquitectura de los Web Services

    Los Web Services, en vez de obtener peticiones desde un navegador y devolver pginas web como respuesta, recibe peticiones, mediante un mensaje formateado con SOAP, desde otras aplicaciones realiza la labor que le han pedido y devuelve un mensaje de respuesta en formato SOAP.

    En la figura 6.1 muestra los componentes bsicos, sus relaciones protocolos de comunicacin de los web services.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    50 Sistema a Distancia

    Figura 6.1: Arquitectura de un Web Services Fuente: Adaptacin propia

    La arquitectura bsica del modelo de web services describe a un consumidor, un proveedor. Relacionados con estos agentes estn las operaciones para publicar, encontrar y enlazar, tal como se muestra en la figura 6.1.

    Bsicamente consiste en que un Web Services Proveedor pblica sus servicios en un corredor en este caso el WSDL, luego un consumidor se conecta al corredor utilizando el URL del WSDL para encontrar los servicios deseados expresados en operaciones y una vez que lo hace esta conexin se realiza un lazo entre el consumidor y el proveedor.

    Ejemplo:

    Una agencia de viajes, que para atender a sus clientes requiere de informacin del clima, tipo de cambio, precios de pasajes entre otros. Para contar con esta informacin, la agencia necesita implementar sistemas especializados.

    Esta solucin podra ser implementando utilizando componentes de software por el lado del servidor de la agencia de viajes, as como en los servidores de las entidades especializadas, y de esta manera los sistemas puedan comunicarse a travs de Internet, utilizando estndares, protocolos comunes y sobre todo bajo un lenguaje nico, donde puedan intercambiar datos e informacin

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    51 Sistema a Distancia

    A continuacin la forma como los Web Services Consumidores solicitan informacin figura 6.2 y luego la forma como los Web Services Proveedores remiten la informacin figura 6.3.

    Figura 6.2: Web Services Consumidor solicita informacin Fuente: Adaptado de Rivas, J. (2005, p. 140) Web Services.

    Figura 6.3: Respuesta de los Web Services Proveedores Fuente: Adaptado de Rivas, J. (2005, p. 140-142) Web Services.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    52 Sistema a Distancia

    6.5 Retos tcnicos que deben superar los Web Services

    Todava existen algunos retos a este tipo de tecnologa que deben superar para poder tener xito. Estos retos tcnicos estn relacionados con el ambiente abierto en el que tienen que sobrevivir, el cual describiremos a continuacin:

    a) Descubrimiento:

    Los web services proveedores deben anunciar a los web services consumidores sobre el estado de la publicacin del WSDL, todava este mecanismo no esta resuelto. Adems los consumidores no saben si el servicio cambio o se movi luego de ser anunciado.

    Por el momento tenemos a dos mecanismos que gestiona el descubrimiento que son los estndares UDDI y WSDL.

    b) Confiabilidad:

    Existen muchos Web Services publicados en internet, ahora es necesario conocer cual es el grado de confiabilidad de estos web services. Por otro lado muchos web services no anuncian si estn disponibles en algn horario determinado el consumidor pueda ser que lo solicite y este se encuentra fuera de lnea, por ahora no existe un mecanismo que informe de manera automtica el estado del servicio publicado.

    c) Seguridad:

    La mayora de web services publicados se han publicado sin restringir a los consumidores, pero ahora es necesario proveer el suficiente mecanismo para asegurar las operaciones que se van a desarrollar utilizando mdulos de autentificacin autorizados. Al ser publicado un web services, cualquier consumidor bastar conocer el WSDL para poder solicitar el servicio y utilizarlo.

    d) Responsabilidad

    Generalmente los web services son de libre acceso, pero en caso que se restringa, por ahora no existe un mecanismo que determine cuantas veces un consumidor puede acceder al web services una vez contratado. Si fuera un servicio no libre faltara determinar un mecanismo para realizar cobros e informar a sus consumidores que ya no esta disponible ese servicio.

    6.6 Desarrollo de un Web Services Proveedor y Consumidor con Axis

    AXIS Apache EXtensible Interaction System es un framework para manejar SOAP y Web Services, existen versiones para lenguajes de programacin C++ y Java.

    La versin para Java se instala como si fuera una aplicacin web (conjunto de ServLets) dentro de un contenedor web.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    53 Sistema a Distancia

    AXIS crea web services de manera tan sencilla, solo se debe arrastrar y soltar sus clases Java dentro del contenedor web.

    Adems Axis posee herramientas avanzadas para el desarrollo web services complejos como los paquetes WSDL2Java y Java2WSDL

    a) Creacin de un Web Services Proveedor

    Para crear un web servicis proveedor se debe definir las operaciones y atributos del web services, tal como se muestra a continuacin:

    public class OperacionCalculadora { public int sumatoria (int a1, int a2) { return a1 + a2; } public int diferencia (int a1, int a2) { return a1 - a2; } public int multiplicar (int a1, int a2) { return a1 * a2; }

    }

    b) Web Services Consumidor sin AXIS

    public class CalculadoraClient { public static void main (String[] args) throws Exception { // invoca el WSDL del web services proveedor String endpoint = "http://localhost:8080/axis/OperacionCalculadora.jws";

    Integer a1 = new Integer("1"); Integer a2 = new Integer("2");

    Service service = new Service(); Call call = (Call) service.createCall();

    call.setTargetEndpointAddress (new java.net.URL(endpoint) ); // se invoca la operacin sumar del servicio call.setOperationName ("sumar");

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    54 Sistema a Distancia

    call.addParameter( "op1", XMLType.XSD_INT, ParameterMode.IN ); call.addParameter( "op2", XMLType.XSD_INT, ParameterMode.IN ); call.setReturnType( XMLType.XSD_INT ); Integer resultado = (Integer) call.invoke (new Object [] { i1, i2 }); // se muestra el resultado como consecuencia de la operacin del servicio System.out.println ("Resultado esperado: " + resultado); } }

    c) Web Services Consumidor con Axis

    public class CalculadraClientAxis { public static void main (String[] args) throws Exception { // se invoca directamente el WSLD del servicio CalculadoraService service = new CalculadoraServiceLocator ("http://localhost:8181/axis/OperacionCalculadora.jws");

    // Se crea una instancia para la operacin del servicio OperacionCalculadora calc = service.getcalculadora();

    // Luego se llama la operacin suma int resultado = calc.sumatoria (12,20);

    // Finalmente se imprime el resultado de la suma de 12 ms 20 System.out.println ("Resultado esperado: " + resultado); } }

    6.7 Web services con Java

    Java API for XML Web Services (JAX-WS) es un API para el lenguaje de programacin Java que permite crear Web Services, se implementa en plataformas Java EE de Sun Microsystems.

    6.7.1 Creacin de dos Web Services con un Web Services Consumidor utilizando JAX-WS

    6.7.1.1 Enunciado del caso

    Se trata de crear 2 web services proveedores, la primera para usar y consultar una librera, cuyo resultado ser obtener datos del libro y el segundo web services proveedor nos permitir obtener los datos de un ciudadano a partir del DNI utilizando la base de datos RENIEC.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    55 Sistema a Distancia

    6.7.1.2 Definiendo las bases de datos de los 02 Web Services Proveedores

    Para empezar necesitamos implementar las bases de datos de los web services en MYSQL

    Base de Datos de la LIBRERA librera

    Figura 6.4: Modelamiento de la Base de datos librera

    Base de Datos de RENIEC dni

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    56 Sistema a Distancia

    Figura 6.5: Modelamiento de la Base de datos dni (RENIEC) 6.7.1.3 Creacin del primer Web Service Proveedor Librera

    Este Web Service, debe permitir recuperar informacin y detalles de un libro, tan solo colocando el nombre del libro se obtendr todos los datos del libro.

    Para este primer web services solo se implementa una sola operacin.

    a. Crear el proyecto con el nombre de WebServiceLibro

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    57 Sistema a Distancia

    Figura 6.6: Creacin del Proyecto WebServiceLibro

    b. Creacin del Web Service en el proyecto

    Figura 6.7: Creacin del Web Service Libro y definicin del paquete clasejava

    c. Definiendo la operacin y tipos de datos

    Nombre de la Operacin: ObtenerTitulo y tipo de dato String

    Nombre del Parmetro: Titulo tipo de datos String

    Figura 6.8: Definiendo la operacin y parmetros del web service

    d. Creamos la clase para conectar a la base de datos

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    58 Sistema a Distancia

    Figura 6.9: Creando la clase conectamysql

    e. Insertamos el cdigo en la clase conectamysql

    package clasejava; import java.sql.Connection;

    import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class conectamysql {

    public Connection getConextion() { try {

    Class.forName("com.mysql.jdbc.Driver"); String url ="jdbc:mysql://localhost:3306/libreria"; return (DriverManager.getConnection(url,"root","uigv")); } catch (Exception e) { System.out.println("error"+e.getMessage()); }

    return null;

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    59 Sistema a Distancia

    }

    public ResultSet Listar(String sql) { Statement st = null;

    ResultSet rs = null;

    try {

    Connection conn = this.getConextion(); st = conn.createStatement(); rs = st.executeQuery(sql); } catch (Exception e) { System.out.println("Error:"+ e.getMessage()); }

    return rs;

    }

    }

    f. Insertamos y editando cdigo de la clase del web services

    package clasejava; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import java.sql.ResultSet; @WebService() public class WebServiceLibro { /** * Web service operation */ @WebMethod(operationName = "ObtenerTitulo") public String ObtenerTitulo(@WebParam(name = "Titulo") String Titulo) throws Exception { //TODO write your implementation code here: ResultSet rs = null; String datos= ""; conectamysql objc = new conectamysql(); rs = objc.Listar("select libro.ISBN,autor.Nombre,libro.Stock,libro.Precio," + "Categoria.Categoria,libro.Nombre,Idioma.Idioma from autor,libro,Categoria," + "Idioma where libro.Nombre like '%" + Titulo + "%'" +

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    60 Sistema a Distancia

    " and autor.idAutor=libro.Autor_idAutor and" + " Categoria.idCategoria=libro.Categoria_idCategoria and" + " Idioma.idIdioma=libro.Idioma_idIdioma;"); while (rs.next()){ datos = datos + " " + rs.getString(1) + " - " + rs.getString(2) + " - " + rs.getString(3)+ " - " + rs.getString(4) + " - " + rs.getString(5) + " - " + rs.getString(6) + " - " + rs.getString(7); } if (datos.compareTo("")==0){datos="No encontrado";}; return datos ; } }

    g. Crear la Unidad de Persistencia

    Para asegurar el proyecto y la base de datos Mysql, es necesario crear una unidad de persistencia

    Figura 6.10: Creando la unidad de persistencia con el perfil librera

    h. Probando el Web Service

    Para probar es necesario ejecutar en segundo plano el proyecto

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    61 Sistema a Distancia

    Figura 6.11: Insertando nombre del libro

    Figura 6.12: Devolviendo los detalles del libro

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    62 Sistema a Distancia

    6.7.1.4 Creacin del segundo Web Service Proveedor Reniec

    a) Crear el proyecto con el nombre de WebServiceReniec

    Figura 6.13: Creacin del Proyecto WebServiceReniec

    b) Creacin del Web Service en el proyecto WebServiceReniec

    Figura 6.14: Creacin del Web Service Reniec y definicin del paquete clasejava

    c) Definiendo la operacin y tipos de datos Nombre de la Operacin: ObtenerDatosDNI y tipo de dato String

    Nombre del Parmetro: dni tipo de datos String

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    63 Sistema a Distancia

    Figura 6.15: Definiendo la operacin y parmetros del web service

    d) Creamos la clase para conectar a la base de datos

    Figura 6.16: Creando la clase conectamysql

    e) Editando cdigo en la clase conectamysql

    package clasejava; import java.sql.Connection;

    import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager;

    public class conectamysql {

    public Connection getConextion() { try {

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    64 Sistema a Distancia

    Class.forName("com.mysql.jdbc.Driver"); String url ="jdbc:mysql://localhost:3306/dni"; return (DriverManager.getConnection(url,"root","uigv")); } catch (Exception e) { System.out.println("error"+e.getMessage()); }

    return null;

    }

    public ResultSet Listar(String sql) { Statement st = null;

    ResultSet rs = null;

    try {

    Connection conn = this.getConextion(); st = conn.createStatement(); rs = st.executeQuery(sql); } catch (Exception e) { System.out.println("Error:"+ e.getMessage()); }

    return rs;

    }

    }

    f) Editando cdigo de la clase del web service

    package clasejava;

    import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService;

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    65 Sistema a Distancia

    import java.sql.ResultSet;

    @WebService() public class WebServiceReniec {

    /** * Web service operation */ @WebMethod(operationName = "ObtenerDatosDNI") public String ObtenerTitulo(@WebParam(name = "dni") String dni) throws Exception { //TODO write your implementation code here: ResultSet rs = null; String datosdni= ""; conectamysql objc = new conectamysql(); rs = objc.Listar("select dni.dni,dni.nombre,dni.apepat,dni.apemat,dni.direccion," + "departamento.nombre,provincia.nombre,distrito.nombre from dni," + "departamento,provincia,distrito where dni.dni=" + dni + "" + " AND dni.Departamento_idDepartamento=departamento.idDepartamento " + "AND dni.provincia_idprovincia=provincia.idprovincia AND " + "dni.distrito_iddistrito=distrito.iddistrito;");

    while (rs.next()){ datosdni = datosdni + " " + rs.getString(1) + " - " + rs.getString(2) + " - " + rs.getString(3)+ " - " + rs.getString(4) + " - " + rs.getString(5) + " - " + rs.getString(6) + " - " + rs.getString(7) + " - " + rs.getString(8); } if (datosdni.compareTo("")==0){datosdni="No encontrado";};

    return datosdni ; }

    }

    g) Unidad de Persistencia Para Asegurar el proyecto y la base de datos Mysql, es necesario crear una unidad de persistencia

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    66 Sistema a Distancia

    Figura 6.17: Creando la unidad de persistencia reniec

    h) Probando el Web Service Para probar es necesario ejecutar en segundo plano el proyecto

    Figura 6.18: Insertando DNI de la persona

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    67 Sistema a Distancia

    Figura 6.19: Devolviendo datos de la persona

    6.7.1.5 Creando un web service consumidor que integre los dos web service proveedor

    a) Creando el proyecto

    Figura 6.20: Creando el proyecto Web Services Consumidor

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    68 Sistema a Distancia

    b) Invocando los WSDL de los WS Proveedores

    Figura 6.21: Referencias de los web Services Proveedores

    c) Creacin de las pginas JSP Consulta Libro

    El formulario principal debe tener el siguiente diseo

    Figura 6.22: Formulario para ingreso de datos

    En el caso de introducir en el nombre del libro a buscar, debe pasar por un JSP intermedio que se encarga de validar y almacenar la informacin del formulario a travs de un java bean y llamar a otro jsp que ser el que realice el uso del web service con la informacin recepcionada.

    Por ejemplo si se coloca: Acero, el resultado ser:

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    69 Sistema a Distancia

    Figura 6.13: Resultado de la consulta

    Consulta DNI

    Figura 6.24: Formulario para la consulta de DNI

    Del mismo modo para la consulta del DNI de la persona, el formulario llama a un jsp intermedio que se encargar de validar y almacenar la data del formulario a travs de un bean y llamar a otro jsp que realice el uso del webservice con la informacin recepcionada.

    Por ejemplo, si se coloca en la caja de texto: 1319575, el resultado ser:

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    70 Sistema a Distancia

    Figura 6.25: Resultado de la consulta

    6.7.1.6 Web Service Consumidor utilizando servlet

    a) Crear el Proyecto consumidor con el nombre WSConsumidor

    Figura 6.26: Proyecto Consumidor

    b) Invocando el web Service proveedor

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    71 Sistema a Distancia

    Figura 6.27: Invocando el WSP

    c) Disear el formulario en JSP

    JSP Page

    Ingrese DNI:

    d) Crear un Servlet

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    72 Sistema a Distancia

    Figura 6.28: Creacin de la clase y paquete para el servlet

    e) Invocando el cdigo del Web Services

    Figura 6.29: Invocando cdigo del WSP

    f) Agregando cdigo al cdigo recuperado Recuperar texto ingresado del formulario

    String textoconsulta = request.getParameter("textoconsulta");

    Indicarle para que pase por el web service

    java.lang.String dni = textoconsulta;

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    73 Sistema a Distancia

    Figura 6.30: Modificando cdigo

    Figura 6.31: Ingresando datos

    Figura 6.32: Resultados

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    74 Sistema a Distancia

    RESUMEN

    La unidad desarrollada nos proporciona las tcnicas para parsear documentos XML, utilizando los APIs SAX y DOM, adems se describen las tecnologas y lenguajes de programacin que se utilizan para su implementacin, incluyendo una comparacin y ejemplos.

    En la segunda parte de esta unidad se explica y define los web services, adems se describen sus componentes y estndares que utiliza, adems se muestra la arquitectura de este tipo de soluciones de integracin de aplicaciones.

    Se complementan describiendo los retos tcnicos y las tecnologas que permiten el desarrollo y la puesta en marcha de los web services.

    Finalmente en esta unidad se presenta un ejemplo de desarrollo de Web Services, utilizando tecnologa JAX-WS.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    75 Sistema a Distancia

    L E C T U R A

    Los servicios Web: el futuro previsible de XML (*)

    El XML, se est convirtiendo poco a poco en el esperanto de la Web, incluso de la informtica ya que se utiliza tambin en bases de datos, herramientas de oficina y documentacin, etc. Permite, entre otras cosas, organizar y presentar informacin de manera ms rigurosa, simplificar los intercambios de informacin y automatizar las actividades administrativas y logsticas.

    Adems, los ms optimistas dicen que la adopcin masiva del XML debera incluso acelerar los intercambios en Internet. Hoy en da, los usuarios de Internet acceden a formularios, los rellenan y los envan al servidor para que los procese y devuelva el resultado de la consulta. La informacin estructural y semntica que aporta el XML permite a los ordenadores procesar la informacin de manera local, sin intervencin de un servidor remoto. De hecho, a nivel de transmisin de los datos a travs de Internet, el trfico ha disminuido de manera considerable.

    Esta ganancia en velocidad tiene una explicacin muy sencilla: tomemos como ejemplo un sitio que ofrece una lista de las pelculas que se encuentran en la cartelera de los cines de su ciudad y sus sesiones: si realiza una bsqueda de la pelcula, el sitio podr reenviarle una lista importante de resultados teniendo en cuenta el nmero de cines que hay en su ciudad y las sesiones para esta pelculas. Puede, por ejemplo, afinar su consulta realizando una bsqueda filtrada por un rea particular de su ciudad y una franja horaria para la sesin. Esta bsqueda corresponde a una nueva consulta para el servidor.

    Si la larga lista de sesiones ya se haba enviado en XML, habr podido efectuar una seleccin a su gusto, sin que se vuelva a requerir de nuevo el servidor. Para realizar esto, solo es necesaria una pequea aplicacin (por ejemplo, un applet Jave enviado por el sitio a la vez que los datos). Este ahorro de tiempo multiplicado por varios millones de usuarios, podra ser la causa de una mejora notable de la red.

    Por ltimo, Internet realmente saca provecho de XML con la creacin de servicios Web: Las aplicaciones modulares que se pueden invocar remotamente apoyndose nicamente en HTTP, el protocolo de la Web.

    La Web de los servicios se compone de servicios Web muy diversos. La disponibilidad de algunos de estos servicios le podra ser til a la hora de disear su propio sitio o de su aplicacin distribuida.

    A continuacin se muestra un sencillo ejemplo. Ha decidido disear un portal en el cual desea ofrecer varios servicios como el horscopo, la informacin meteorolgica o un servicio de traduccin.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    76 Sistema a Distancia

    Es muy poco probable que usted rena a la vez el talento de un meteorlogo, un astrlogo/numerlogo y de un traductor multilinge. Por lo tanto, probablemente lo que busque sea delegar y automatizar estas operaciones. Buscar las fuentes para estas informaciones, es decir, en el sitio del Meteosat en Espaa, por ejemplo, en un sitio de astrologa y uno de traduccin en lnea (como BabelFish).

    Estos diferentes sitios poseen en un nivel superior aplicaciones que pueden producir al vuelo informaciones que se van a publicar segn los parmetros. El administrador del sitio ha podido poner a su disposicin un servicio Web que le permita llamar a esta aplicacin y recibir directamente el resultado.

    As, tradicionalmente, si ha querido construir un nuevo sitio con capacidades similares, necesitar crear o comprar una aplicacin para procesar las traducciones, sintetizar los datos meteorolgicos o extraer los horscopos.

    Pero en el nuevo mundo de los servicios Web, es posible delegar este trabajo a los sitios que poseen los servicios Web necesarios. La tecnologa SOAP ha sido diseada para responder tpicamente a este tipo de problemtica.

    A modo de ejemplo, la escritura del mtodo del servicio de traduccin podra parecerse a:

    String traducir { String origenLengua; String destinoLengua; String textoATraducir; }

    Finalmente, la Web de los Servicios nos permitir concentrarnos en nuestra propia especialidad e incorporar informacin y funciones de cualquier otra esfera.

    * Fuente: (Lecomte, S. y Boulanger, T., 2009, pp. 210-212)

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    77 Sistema a Distancia

    AUTOEVALUACIN

    1. Las tcnicas de parseo comprueba: a. Documentos validados b. Documentos validados y bien formados c. Documentos bien formados d. Documentos correctamente etiquetados e. Documentos correctamente estructurados

    2. Una aplicacin parsing no puede manipular archivos del tipo: a. XML Schema b. WSDL c. XML d. XSL e. Java

    3. Uno de los lenguajes de programacin no tienen implementacin de parseo a. Java b. Php c. CORBA d. .NET e. C#

    4. Una de las caractersticas del API DOM no corresponde: a. Recomendado por W3C b. Solo se puede leer los archivos XML c. Basado en un rbol d. Especificacin formal e. Puede consumir memoria

    5. Una de las caractersticas si corresponden al API SAX a. Basado en un rbol b. Recomendado por W3C c. Se pueden leer y escribir archivos XML d. Desarrollado en Objetos

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    78 Sistema a Distancia

    e. Lee una lnea cada vez que encuentra etiquetas XML

    6. Una de las afirmaciones sobre Web Services utilizando SOAP es incorrecta a. Utiliza los mismos estndares de internet b. Utiliza los mtodos get y post para comunicarse c. El protocolo de comunicacin es un fichero XML d. Utilizan un lenguaje para la Descripcin de Web Services e. Son independientes a la tecnologa y plataforma

    7. La comunicacin entre los web services proveedor y consumidor se realiza utilizando: a. Un rbol de servicios b. URL c. SOAP d. JAX-WS e. UDDI

    8. Permite describir y publicar Web Services: a. UDDI b. URL c. WSDL d. SOAP e. N.A.

    9. Para que se comuniquen un Web Services Consumidor solo tiene que conocer del Web Services Proveedor a. XML del proveedor b. URL c. Get del Proveedor d. WSDL e. SOAP

    10. Uno de los retos tcnicos que se tienen que enfrentar los web services no corresponde

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    79 Sistema a Distancia

    a. Descubrimiento b. Confiabilidad c. Interoperatividad d. Seguridad e. Responsabilidad

    RESPUESTAS DE CONTROL 1. b 2. e 3. c 4. b 5. e 6. b 7. c 8. a 9. d 10. c

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    80 Sistema a Distancia

    EJERCICIOS PROPUESTOS

    Caso 1: Parsing XML utilizando DOX y SAX

    La empresa MATRIX, es medio periodstico que actualmente cuenta con un sistema de informacin de noticias muy activo gracias a la tecnologa LAMP. Ahora el rea Relaciones Pblicas ha solicitado al rea de desarrollo la implementacin de una aplicacin RSS, para dar a conocer los ltimos acontecimientos y noticias a sus lectores y usuarios como los titulares, el resumen, y enlace de las noticias que se generan. Los campos de la tabla del RSS son: (id,seccion, titulo, descripcion, fecha, url e imagen).

    La data de la aplicacin RSS debe contener estos artculos:

    id seccion titulo Descripcin fecha url imagen 1

    deportes

    Dulio Beretta el gran sucesor de Lucho Horna

    Sin duda lo mejor del 2010 luego de voley, la tabla y, ahora, nuevamente, el tenis

    2011-09-11

    http://www.matrix.com/deporte

    berreta.jpg

    2 salud El cacao ayuda a combatir el acne

    Un estudio realizado en Estados Unidos sugiere que tomar cacao antes de ejercitarse puede ayudar a reducir los dolores

    2011-09-12

    http://www. matrix.com/salud cafe.jpg

    3 politica Error en ejecuto plantea derogar Decreto Legislativo 1097

    El Poder Ejecutivo envi al Congreso, ayer por la tarde, un proyecto de ley aprobado por el Consejo de Ministros que plantea ..

    2011-09-09 http://www.Matriz.com/politica

    dlegis.jpg

    4

    cultura Aprueban el proyecto que crea Ministerio de Cultura

    La Comisin Permanente del Parlamento aprueba el proyecto que crea el Ministerio de Cultura ..

    2011-09-08 http://www. matriz.com/cultura

    cultura.jpg

    Preguntas:

    a) Generar el RSS (XML), de la aplicacin, adjunte el cdigo XML b) Desarrolle un analizador sintctico utilizando un SAX PARSE, que muestre elementos y contenidos del documento XML. c) Utilizando el API DOM extraer 4 elementos con sus respectivos contenidos del Documento XML d) Realizar transformaciones del Documento XML a HTML, donde muestre solo el titular, el resumen, Descripcin y URL e) Convertir la Base de Datos implementada a XML y realice una comparacin breve con el XML del RSS f) Migrar la base de datos XML de la pregunta e a una nueva base de datos. Importante: Debe mostrar los datos y el resultado de la generacin del script. g) Mencionar los componentes de la arquitectura de toda la aplicacin, incluyendo la tecnologa utilizada.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    81 Sistema a Distancia

    Caso 2: Implementacin de Web Services La empresa TH. INC., se dedica a la comercializacin de Ropa Deportiva, actualmente cuenta con dos sistemas de informacin: El primero desarrollado en JAVA EE a nivel de ventanas, cuya base de datos se llama ventas y permite el registro de las ventas al da, el segundo sistema es de Logstica desarrollado con JSF y cuya base de datos se llama logistica permite registrar los insumos que remiten los proveedores.

    a) Informacin de la Base de Datos ventas: La estructura de la tabla factura es la siguiente: (ID_Venta, ID_Cliente, ID_producto, Total_Articulos, Nom_producto, Subtotal, Impuestos, Total_General). La estructura de la tabla cliente es la siguiente (ID_cliente, Nom_Cliente, Ape_Cliente, RUC, Dir_Cliente). La estructura de la tabla producto es la siguiente (ID_producto, Nom_producto, Precio_producto, Cantidad_producto)

    b) Informacin de la Base de Datos logistica: La estructura de la tabla inventario es la siguiente: (ID_inventario, ID_Proveedor, ID_insumo, Nom_Insumo, fecha_ingreso, fecha_inventario) La estructura de la tabla proveedor es la siguiente: (ID_Proveedor, ID_insumo, RUC_proveedor, direccion_proveedor) La estructura de la tabla insumo es la siguiente: (ID_insumo, Nom_Insumo, Cantidad_Insumo, Descripcin_Insumo)

    Se pide: 1. Implementar las bases de datos de los 02 sistemas 2. Crear un Web services proveedor para el sistema de ventas y un web

    services Proveedor para el sistema de Logstica - En el caso de Ventas debe mostrar en pantalla, colocando el ID_Venta (100012), la siguiente informacin: (100012, 12233, 989, 14, Buzos, 15, 4, 19) - En el caso de Logstica debe mostrar en pantalla, colocando el ID_inventario (12131), la siguiente informacin (12131, EU101, 12341, hilos, 12/01/2011, 09/03/2011) Importante: debe mostrar los tests y las capturas de pantallas de ambos WSP.

    3. Crear un Web services Consumidor (un solo formulario) que permita integrar los 02 web services proveedores, adems debe mostrar los resultados de la consulta segn ID_Venta y segn ID_Inventario.

    4. Diagramar la Arquitectura de los Web Services.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    82 Sistema a Distancia

    EXPLORACIN ON LINE

    URL: http://java.sun.com/developer/Books/xmljava/ch03.pdf Sitio web de la empresa SUN, creador del lenguaje de programacin Java, donde describe como implementar parsing XML utilizando este lenguaje de programacin

    URL: http://php.net/manual/es/book.xml.php Sitio oficial del Lenguaje de Programacin PHP, donde describe como desarrollar aplicaciones Parser XML.

    URL: http://www.w3.org/2002/ws/ Sitio Web de la World Wide Web Consortium (W3C), el sitio oficial de los estndares de Internet y de los Web Services

    http://www.w3c.es/divulgacion/guiasbreves/websemantica Gua Breve de Web Semntica, aplicaciones XML, RDF, donde explica sobre el futuro de la web.

    http://jax-ws.java.net/ Sitio web de del proyecto JAX-WS donde describe su implementacin y documentacin. Tambin puede encontrar la ltima versin de esta solucin.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    83 Sistema a Distancia

    REFERENCIA BIBLIOGRFICA

    Colouris, George. (2002) Sistemas Distribuidos, conceptos y diseo. 3ra edicin. Madrid, Ed. Addison-Wesley

    Dolores, M.D. (2000) Ingeniera del Software y Bases de Datos.Castilla de la Mancha: Editorial Universidad de Castilla-La Mancha

    Lecomte, S. y Boulanger, T. (2009) XML Practico Bases esenciales, conceptos y casos prcticos. Barcelona: ENI ediciones.

    Lozano, M. (2000) Ingeniera Del Software Y Bases de Datos: Tendencias Actuales. Salamanca: Ediciones Universidad de Castilla-La Mancha.

    Moliner, F.J. (2005) Informticos Generalitat Valenciana Grupos A y B. Sevilla: Editorial MAD. S.L.

    Munilla, E. y Garca, I. (2003) E-Bussiness Colaborativo. Madrid: Editorial Confemetal

    Oracle (2005) XML Developer's Kit Programmer's Guide.

    Project JAXP (2010) JAXP 1.4.4 http://jaxp.java.net/1.4/index.html

    Rivas, J. (2005) Web Services. Madrid: Anaya Multimedia

    Seacord, R. C., Plakosh, D., Lewis, G. A. (2003) Modernizing Legay Systems. Boston: Pearson Education, Inc.

  • Sistemas Distribuidos II - Unidad II Daniel Yucra Sotomayor

    84 Sistema a Distancia

    BIBLIOGRAFA COMENTADA

    - Varwani V. (2002) XML and PHP. Sams Publishing Revisar Unidad 2 y 3 donde explican con ejemplos como implementar programas para el manipuleo de archivos XML, utilizando SAX y DOM. Adems puede revisar la Unidad 7 donde se describe como trabajar base de datos con PHP XML

    - Newcomer, E. (2002) Understanding Web Services: XML, WSDL, SOAP, and UDDI. Addison-Wesley Revisar la Unidad 1, sobre los conceptos de los Web Services, Unidad 4 sobre accesibilidad de los Web Services utilizando SOAP, adems de la Unidad 7 sobre las Arquitectura de los Web Services.

    - Gurug, A. (2003) Web Services: Theory and Practice. British Library En este libro explica el desarrollo de Web Services, revisar la unidad 3 donde muestra ejemplos y casos prcticos utilizando tecnologa .NET, adems revisar la Unidad 6 sobre el desarrollo de Web Services utilizando Java.