Вы находитесь на странице: 1из 48

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

37

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

38

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

39

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

40

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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
API DOM

Criterios de
evaluacin
Estandarizacin

Recomendado por W3C

Especificacin no formal

Manipulacin

Funciones: Lee y Escribe

Funcin solo lectura

Consumo de
memoria

Manejo de XML

API SAX

Depende del tamao de la Muy bajo


fuente de archivo XML,
pueden ser grandes
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".

41

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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
<?xml version="1.0" encoding="UTF-8"?>
<ElementoRaiz parametro1="valor">
<PrimerElemento>
primer ejemplo
</PrimerElemento>
</ElementoRaiz>
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 ");
}

42

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

// 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.

43

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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:
<?xml version="1.0" encoding="UTF-8"?>
<TABLA>
<CUERPO>
<TR>
<TD>Juan </TD>
<TD>Martha</TD>
</TR>
<TR>
<TD>Pedro</TD>
<TD>Carlos</TD>
</TR>
</CUERPO>
</TABLA>

A continuacin, la forma cmo se representa el documento XML

44

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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></book>
$book = $dom->createElement("book");
// crea un elemento <title>con algun contenido</title>
$title = $dom->createElement("title", $_GET['title']);
// <book><title>algunos contenidos </title></book>

45

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

$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.
<uigv>
<lenguaje>
<programa>Programando en PHP</programa>
</lenguaje>
<lenguaje>
<programa>Aprendiendo Java</programa>
</lenguaje>
</uigv>
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:
<uigv>
<lenguaje>
<programa>Aprendiendo Java</programa>
</lenguaje>
</uigv>

46

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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:

47

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

48

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

49

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

50

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

51

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

52

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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");

53

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

54

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

55

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

56

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

57

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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;

58

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

}
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 + "%'" +

59

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

" 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

60

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

Figura 6.11: Insertando nombre del libro

Figura 6.12: Devolviendo los detalles del libro

61

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

62

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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 {

63

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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;

64

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

65

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

66

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

67

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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:

68

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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:

69

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

70

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

Figura 6.27: Invocando el WSP


c) Disear el formulario en JSP

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form name="Test" method="post" action="consumidor">
<p>Ingrese DNI:</p>
<p>
<p><input type="text" name="textoconsulta" ID="textoconsulta"></p>
<p>
<input type="submit" value="Consulta " name="botonconsulta">
</form>
</body>
</html>
d) Crear un Servlet

71

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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;

72

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

Figura 6.30: Modificando cdigo

Figura 6.31: Ingresando datos

Figura 6.32: Resultados

73

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

74

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

LECTURA
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.

75

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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)

76

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

77

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

78

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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

79

7. c

8. a

9. d

10. c

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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
1

seccion
deportes

titulo
Dulio Beretta el
gran sucesor de
Lucho Horna

salud

El cacao ayuda
a combatir el
acne

politica

Error en ejecuto
plantea derogar
Decreto
Legislativo
1097

cultura

Aprueban
el
proyecto
que
crea Ministerio
de Cultura

Descripcin
Sin duda lo mejor del
2010 luego de voley, la
tabla y, ahora,
nuevamente, el tenis
Un estudio realizado en
Estados Unidos sugiere
que tomar cacao antes
de ejercitarse puede
ayudar a reducir los
dolores
El Poder Ejecutivo envi
al Congreso, ayer por la
tarde, un proyecto de ley
aprobado por el Consejo
de Ministros que plantea
..
La
Comisin
Permanente
del
Parlamento aprueba el
proyecto que crea el
Ministerio de Cultura ..

fecha
url
2011-09-11 http://www.matrix.com/deport
e

imagen
berreta.j
pg

2011-09-12 http://www. matrix.com/salud

cafe.jpg

2011-09-09 http://www.Matriz.com/politic
a

dlegis.jp
g

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

cultura.jp
g

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.

80

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

81

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

82

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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
Programmer's Guide.

Project JAXP

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

Rivas, J.

(2005)
Web
Madrid: Anaya Multimedia

Kit

Services.

Seacord, R. C., Plakosh, D., Lewis, G. A. (2003)


Modernizing
Legay
Systems. Boston: Pearson Education,
Inc.

83

Sistema a Distancia

Sistemas Distribuidos II - Unidad II

Daniel Yucra Sotomayor

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.

84

Sistema a Distancia

Вам также может понравиться