java modulo 7

141
Profesion Módulo 7. Crea tecnología Java. P nal en Plata Java ando servicios web Puesta en marcha de y “trunks” aforma usando la e redes VLAN

Upload: jose-gandia-serna

Post on 21-Oct-2015

149 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: Java Modulo 7

Profesional en Plataforma

Módulo 7. Creando servicios webtecnología Java. Puesta en marcha de redes VLAN

Profesional en Plataforma

Java

Creando servicios webPuesta en marcha de redes VLAN

y “trunks”

Profesional en Plataforma

usando la Puesta en marcha de redes VLAN

Page 2: Java Modulo 7

Módulo 7. Creando servicios web tecnología Java. Puesta en marcha de redes VLAN y “trunks”

Unidad 1 - Idificando la construcción de bloques de servicios Web

Unidad 2 - Analizando la tecnología y plataforma de servicios Web

Unidad 3 - Aplicando XML

Unidad 4 - Examinando

Unidad 5 - Desarrollando Servicios Web usando SOAP con adjuntos

Unidad 6 - Explicando el lenguaje de Servicios Web (WSDL)

Unidad 7 - Reconociendo el papel del servicios de registro

Unidad 8 - Implementando servicios web con Java API para

web XML con tecnología (JAX

Unidad 9 - Desarrollando servicios Web cliente

Para uso exclusivo de los alumnos de CETICSA S.L.

Contenido

Creando servicios web tecnología Java. Puesta en marcha de redes VLAN

Idificando la construcción de bloques de servicios Web

Analizando la tecnología y plataforma de servicios Web

Aplicando XML

Examinando mensajes SOAP

Desarrollando Servicios Web usando SOAP con adjuntos

Explicando el lenguaje de Servicios Web (WSDL)

Reconociendo el papel del servicios de registro

Implementando servicios web con Java API para

web XML con tecnología (JAX-WS)

Desarrollando servicios Web cliente

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

usando la tecnología Java. Puesta en marcha de redes VLAN

Idificando la construcción de bloques de servicios Web

Analizando la tecnología y plataforma de servicios Web

Desarrollando Servicios Web usando SOAP con adjuntos

Explicando el lenguaje de Servicios Web (WSDL)

Reconociendo el papel del servicios de registro

Implementando servicios web con Java API para servicios

Page 3: Java Modulo 7

Unidad 1: Identificando la construcción de bloques

Objetivos

� Conocer toda la estructura de elementos que conforman un Servicio Web.

� Aprender los conceptos esenciales para cada bloque incluido dentro de un Web Service.

Introducción

Desde que apareció el World Wide Web, internet ha experimentado una gran evolución.

En un principio, internet estaba formado por páginas estáticas escritas en HTML. Ésactualizadas muy a menudo y los usuarios no tenían posibilidad de participar en la creación de los contenidos que se mostraban por la red.

A este tipo de servicios nos referimos cuando hablamos de Web 1.0.

El diseño de este tipo de sitios estáticos, se limitaba a la edición de etiquetas, y predominaban las imágenes GIF, los formularios vía email… y en su conjunto componían sitios web que a menudo eran páginas personales y otros servicios de contenidos en los que no solía interactuar directausuario sino un administrador que iba creando sus contenidos mediante la edición manual de código HTML.

Progresivamente aparecieron las páginas web dinámicas en las que una simple consulta o inserción en la base de datos le permitían al administra

Éstas han sido conocidas menos popularmente como Web 1.5.

Pero la verdadera revolución de internet llegó con la creación de espacios dinámicos en los que el usuario era el protagonista de la informaccontenidos.

Éste es el principio en el que se sustenta la Web 2.01 tal y como la presentó por primera vez Tim O’Reilly en una conferencia en el año 2004.

Esta actualización está relacionada cusuario, nutriéndose así de la inteligencia colectiva.

El creador de este concepto incluso llega a comparar la Web 1.0 con la 2.0 de forma análoga a como compararíamos las webs personales con los gestión de contenidos con las wikis o la Enciclopedia Británica con la Wikipedia.

Actualmente existen multitud de aplicaciones con estas características como pueden ser wikis, blogs y demás servicios de red donde compartir todo tipo de información multimedia.

Igualmente existen muchos ámbitos profesionales en los que esta evolución puede incorporarse en el día a día, como pueden ser las aplicaciones educativas con una intranet donde el profesoradalumnado comparten material didáctico y conocimientos, o médicas, donde aplicaciones como Google Health permiten organizar información médica con la que interactúa el propio usuario, aunque esta última con la privacidad necesaria.

Siguiendo el desarrollo que está experimentando constantemente la red, podemos observar características que van más allá de la simple interacción de usuario con las aplicaciones web.

Para uso exclusivo de los alumnos de CETICSA S.L.

Identificando la construcción de bloques de servicios Web

Conocer toda la estructura de elementos que conforman un Servicio Web.

conceptos esenciales para cada bloque incluido dentro de un Web Service.

Desde que apareció el World Wide Web, internet ha experimentado una gran evolución.

En un principio, internet estaba formado por páginas estáticas escritas en HTML. Ésactualizadas muy a menudo y los usuarios no tenían posibilidad de participar en la creación de los contenidos que se mostraban por la red.

A este tipo de servicios nos referimos cuando hablamos de Web 1.0.

státicos, se limitaba a la edición de etiquetas, y predominaban las imágenes GIF, los formularios vía email… y en su conjunto componían sitios web que a menudo eran páginas personales y otros servicios de contenidos en los que no solía interactuar directausuario sino un administrador que iba creando sus contenidos mediante la edición manual de código

Progresivamente aparecieron las páginas web dinámicas en las que una simple consulta o inserción en la base de datos le permitían al administrador modificar fácilmente el contenido de sus páginas.

Éstas han sido conocidas menos popularmente como Web 1.5.

Pero la verdadera revolución de internet llegó con la creación de espacios dinámicos en los que el usuario era el protagonista de la información, permitiéndole la posibilidad de crear, modificar y borrar

Éste es el principio en el que se sustenta la Web 2.01 tal y como la presentó por primera vez Tim O’Reilly en una conferencia en el año 2004.

Esta actualización está relacionada con un fenómeno social en el que el predomina el aporte del usuario, nutriéndose así de la inteligencia colectiva.

El creador de este concepto incluso llega a comparar la Web 1.0 con la 2.0 de forma análoga a como compararíamos las webs personales con los blogs, la publicación con la participación, los sistemas de gestión de contenidos con las wikis o la Enciclopedia Británica con la Wikipedia.

Actualmente existen multitud de aplicaciones con estas características como pueden ser wikis, blogs y ios de red donde compartir todo tipo de información multimedia.

Igualmente existen muchos ámbitos profesionales en los que esta evolución puede incorporarse en el día a día, como pueden ser las aplicaciones educativas con una intranet donde el profesoradalumnado comparten material didáctico y conocimientos, o médicas, donde aplicaciones como Google Health permiten organizar información médica con la que interactúa el propio usuario, aunque esta última con la privacidad necesaria.

rrollo que está experimentando constantemente la red, podemos observar características que van más allá de la simple interacción de usuario con las aplicaciones web.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Identificando la construcción de bloques

Conocer toda la estructura de elementos que conforman un Servicio Web.

conceptos esenciales para cada bloque incluido dentro de un Web Service.

Desde que apareció el World Wide Web, internet ha experimentado una gran evolución.

En un principio, internet estaba formado por páginas estáticas escritas en HTML. Éstas no eran actualizadas muy a menudo y los usuarios no tenían posibilidad de participar en la creación de los

státicos, se limitaba a la edición de etiquetas, y predominaban las imágenes GIF, los formularios vía email… y en su conjunto componían sitios web que a menudo eran páginas personales y otros servicios de contenidos en los que no solía interactuar directamente el usuario sino un administrador que iba creando sus contenidos mediante la edición manual de código

Progresivamente aparecieron las páginas web dinámicas en las que una simple consulta o inserción en dor modificar fácilmente el contenido de sus páginas.

Pero la verdadera revolución de internet llegó con la creación de espacios dinámicos en los que el ión, permitiéndole la posibilidad de crear, modificar y borrar

Éste es el principio en el que se sustenta la Web 2.01 tal y como la presentó por primera vez Tim O’Reilly

on un fenómeno social en el que el predomina el aporte del

El creador de este concepto incluso llega a comparar la Web 1.0 con la 2.0 de forma análoga a como blogs, la publicación con la participación, los sistemas de

gestión de contenidos con las wikis o la Enciclopedia Británica con la Wikipedia.

Actualmente existen multitud de aplicaciones con estas características como pueden ser wikis, blogs y

Igualmente existen muchos ámbitos profesionales en los que esta evolución puede incorporarse en el día a día, como pueden ser las aplicaciones educativas con una intranet donde el profesorado y el alumnado comparten material didáctico y conocimientos, o médicas, donde aplicaciones como Google Health permiten organizar información médica con la que interactúa el propio usuario, aunque

rrollo que está experimentando constantemente la red, podemos observar características que van más allá de la simple interacción de usuario con las aplicaciones web.

Page 4: Java Modulo 7

Nuevos frentes se están abriendo en los que la interoperabilidad de la red con procesadores o agentes inteligentes permiten procesar de forma eficiente multitud de información.

Siguiendo la dinámica del proceso evolutivo de internet surge la Web 3.0, en concepto de web semántica, en el que se le dota de significado a los elementos de cualquier web para que sea más fácil y directa su localización, también se apuesta por evolucionar en el campo de las 3D y en el de la inteligencia artificial.

Grandes compañías como Google están aportando tecnología que permite directamente trabajar en este aspecto, permitiendo la creación de modelos predictivos que utilicen técnicas de inteligencia artificial vía web.

En este entorno de comunicación en el que ha evolucionado la red, aparecen los servicios web, que son sistemas de información que permiten comunicar clientes con cualquier tipo de información, independientemente del lenguaje que vaya a utilizar el cliente para el acceso.

Un servicio Web es un servicio, con un interfaz definido y conocido, al que se puede acceder a través de Internet.

Se puede definir los servicios web como un conjunto de servicios que proporcionan mecanismos de comunicación estándares entre diferentes aplicaciones, que interactúan entre sí para presentar información dinámica al usuario.

Para proporcionar interoperabilidad y extensibilidad entre estas aplicaciones, y que al mismo tiempo sea posible su combinación para realizar operaciones referencia, adoptando el uso de protocolos y estándares abiertos.

El World Wide Web Consortium (W3C) y la Organization for the Advancement of Structured Information Standards son las organizaciones responsablesWeb.

Igual que una página Web está definida por un URL (Uniform Resource Locator), un servicio Web está definido por un URI (Uniform Resource Identification) y por su interfaz, a través del cual acceder a él, ocultando así los detalles de su implementación.

Estos servicios pretenden ser independientes del hardware y software utilizado para acceder a ellos.

Las aplicaciones Web se convierten en clientes que integran servicios Web procedproveedores de manera que puede ofrecerse al usuario una funcionalidad más completa.

Con el desarrollo que ha tenido Internet y el avance de componentes software se puede llegar a construir grandes aplicaciones distribuidas que puedereducir el software cliente.

De esta forma, las empresas pueden ofrecer a sus usuarios tener un acceso sencillo y casi universal a sus aplicaciones sin tener que preocuparse de los gastos derivados del manteni

Los servicios Web normalmente utilizan como base para la creación de sus mensajes de intercambio XML (Extensible Markup Language), que es un estándar para la descripción de datos (metadatos).

XML tiene la propiedad de utilizar una gramática sencsistemas conectados a la red.

Esta propiedad permite a los servicios Web poder ser accesible desde diferentes plataformas software o sistemas hardware.

Para uso exclusivo de los alumnos de CETICSA S.L.

Nuevos frentes se están abriendo en los que la interoperabilidad de la red con procesadores o agentes inteligentes permiten procesar de forma eficiente multitud de información.

Siguiendo la dinámica del proceso evolutivo de internet surge la Web 3.0, en concepto de web semántica, en el que se le dota de significado a los elementos de cualquier web para que sea más fácil y directa su localización, también se apuesta por evolucionar en el campo de

ificial.

Grandes compañías como Google están aportando tecnología que permite directamente trabajar en este aspecto, permitiendo la creación de modelos predictivos que utilicen técnicas de inteligencia

ón en el que ha evolucionado la red, aparecen los servicios web, que son sistemas de información que permiten comunicar clientes con cualquier tipo de información, independientemente del lenguaje que vaya a utilizar el cliente para el acceso.

Definición de Servicios Web

Un servicio Web es un servicio, con un interfaz definido y conocido, al que se puede acceder a través

Se puede definir los servicios web como un conjunto de servicios que proporcionan mecanismos de re diferentes aplicaciones, que interactúan entre sí para presentar

Para proporcionar interoperabilidad y extensibilidad entre estas aplicaciones, y que al mismo tiempo sea posible su combinación para realizar operaciones complejas, es necesaria una arquitectura de referencia, adoptando el uso de protocolos y estándares abiertos.

El World Wide Web Consortium (W3C) y la Organization for the Advancement of Structured Information Standards son las organizaciones responsables de la estandarización y la arquitectura de los servicios

Igual que una página Web está definida por un URL (Uniform Resource Locator), un servicio Web está definido por un URI (Uniform Resource Identification) y por su interfaz, a través del cual acceder a él, ocultando así los detalles de su implementación.

Estos servicios pretenden ser independientes del hardware y software utilizado para acceder a ellos.

Las aplicaciones Web se convierten en clientes que integran servicios Web procedproveedores de manera que puede ofrecerse al usuario una funcionalidad más completa.

Con el desarrollo que ha tenido Internet y el avance de componentes software se puede llegar a construir grandes aplicaciones distribuidas que pueden residir en uno o más servidores y poder así

De esta forma, las empresas pueden ofrecer a sus usuarios tener un acceso sencillo y casi universal a sus aplicaciones sin tener que preocuparse de los gastos derivados del mantenimiento.

Los servicios Web normalmente utilizan como base para la creación de sus mensajes de intercambio XML (Extensible Markup Language), que es un estándar para la descripción de datos (metadatos).

XML tiene la propiedad de utilizar una gramática sencilla y compatible con la mayor parte de los

Esta propiedad permite a los servicios Web poder ser accesible desde diferentes plataformas software o

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Nuevos frentes se están abriendo en los que la interoperabilidad de la red con procesadores o agentes

Siguiendo la dinámica del proceso evolutivo de internet surge la Web 3.0, en la cual se extiende el concepto de web semántica, en el que se le dota de significado a los elementos de cualquier web para que sea más fácil y directa su localización, también se apuesta por evolucionar en el campo de

Grandes compañías como Google están aportando tecnología que permite directamente trabajar en este aspecto, permitiendo la creación de modelos predictivos que utilicen técnicas de inteligencia

ón en el que ha evolucionado la red, aparecen los servicios web, que son sistemas de información que permiten comunicar clientes con cualquier tipo de información,

e Servicios Web

Un servicio Web es un servicio, con un interfaz definido y conocido, al que se puede acceder a través

Se puede definir los servicios web como un conjunto de servicios que proporcionan mecanismos de re diferentes aplicaciones, que interactúan entre sí para presentar

Para proporcionar interoperabilidad y extensibilidad entre estas aplicaciones, y que al mismo tiempo sea complejas, es necesaria una arquitectura de

El World Wide Web Consortium (W3C) y la Organization for the Advancement of Structured Information de la estandarización y la arquitectura de los servicios

Igual que una página Web está definida por un URL (Uniform Resource Locator), un servicio Web está definido por un URI (Uniform Resource Identification) y por su interfaz, a través del cual se puede

Estos servicios pretenden ser independientes del hardware y software utilizado para acceder a ellos.

Las aplicaciones Web se convierten en clientes que integran servicios Web procedentes de diferentes proveedores de manera que puede ofrecerse al usuario una funcionalidad más completa.

Con el desarrollo que ha tenido Internet y el avance de componentes software se puede llegar a n residir en uno o más servidores y poder así

De esta forma, las empresas pueden ofrecer a sus usuarios tener un acceso sencillo y casi universal a sus miento.

Los servicios Web normalmente utilizan como base para la creación de sus mensajes de intercambio XML (Extensible Markup Language), que es un estándar para la descripción de datos (metadatos).

illa y compatible con la mayor parte de los

Esta propiedad permite a los servicios Web poder ser accesible desde diferentes plataformas software o

Page 5: Java Modulo 7

La comunicación entre los servicios Web y las aplicaciones se realiza mediante protocolos queclasificarse en 4 tipos:

� Servicios de transporte:

Son los protocolos de más bajo nivel que codifican la información independientemente de su formato, y que pueden ser comunes a otros servicios como HTTP, FTP, SMTP o utilizar alguno específico como BEEP (Block Extensible Exchange Protocol).

� Servicios de mensajería

Especifican como se deben codificar los mensajes que contienen los datos que se intercambian.

Los más utilizados son SOAP (Protocolo Simple de Acceso a Objetos) y XMLmediante XML).

Mientras éste último utiliza HTTP como protocolo de transporte, SOAP puede funcionar con varios (SMTP, FTP, HTTP, etc.).

Estos protocolos utilizan XML como base para el intercambio de información.

� Servicios de descripción

Para que una aplicación sepa de manera automática que formato usar para comunicarse con un servicio, éste ha de especificarse.

Esto se hace mediante WSDL (Web Services Description Language).

Mediante dicho protocolo se obtiene la dirección y

� Servicios de descubrimiento

Es la capa más alta. Permite llevar WSDL más allá, describiendo productos, la empresa y cómo se realizan las transacciones.

UDDI (Universal Description, Discovery and Integration) es el protocolo que se utiliza para buscar servicios Web y obtener información de cómo acceder a ellos.

La arquitectura de los servicios web incluye distintas tecnologías y capas deinterrelacionados cuya interpretación y desarrollo no es único.

Para uso exclusivo de los alumnos de CETICSA S.L.

Protocolos de Servicios Web

ervicios Web y las aplicaciones se realiza mediante protocolos que

Son los protocolos de más bajo nivel que codifican la información independientemente de su formato, y s servicios como HTTP, FTP, SMTP o utilizar alguno específico como BEEP

Extensible Exchange Protocol).

Especifican como se deben codificar los mensajes que contienen los datos que se intercambian.

P (Protocolo Simple de Acceso a Objetos) y XML-RPC (Remote Procedure Call

Mientras éste último utiliza HTTP como protocolo de transporte, SOAP puede funcionar con varios (SMTP,

Estos protocolos utilizan XML como base para el intercambio de información.

Para que una aplicación sepa de manera automática que formato usar para comunicarse con un

DL (Web Services Description Language).

Mediante dicho protocolo se obtiene la dirección y la interfaz de un servicio.

Es la capa más alta. Permite llevar WSDL más allá, describiendo productos, la empresa y cómo se

UDDI (Universal Description, Discovery and Integration) es el protocolo que se utiliza para buscar servicios Web y obtener información de cómo acceder a ellos.

La arquitectura de los servicios web incluye distintas tecnologías y capas deinterrelacionados cuya interpretación y desarrollo no es único.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Protocolos de Servicios Web

ervicios Web y las aplicaciones se realiza mediante protocolos que pueden

Son los protocolos de más bajo nivel que codifican la información independientemente de su formato, y s servicios como HTTP, FTP, SMTP o utilizar alguno específico como BEEP

Especifican como se deben codificar los mensajes que contienen los datos que se intercambian.

RPC (Remote Procedure Call

Mientras éste último utiliza HTTP como protocolo de transporte, SOAP puede funcionar con varios (SMTP,

Para que una aplicación sepa de manera automática que formato usar para comunicarse con un

Es la capa más alta. Permite llevar WSDL más allá, describiendo productos, la empresa y cómo se

UDDI (Universal Description, Discovery and Integration) es el protocolo que se utiliza para buscar servicios

La arquitectura de los servicios web incluye distintas tecnologías y capas de protocolos

Page 6: Java Modulo 7

Los estándares de mayor importancia para la comprensión de la arquitectura de Servicios Web son XML, SOAP y WSDL.

Dichos estándares conforman toda la tecnología asociada a cualqudel lenguaje en el que se haya desarrollado dicho servicio.

Aquí tenemos una imagen que nos muestra los diferentes bloques que conforman un Web Service:

XML (eXtensible Markup Language) es un metalenguaje W3C cuyo propósito es la definición de datos contenidos en un documento.

La palabra “Extensible” en su definición hace referencia al hecho de que XML no es un lenguaje en particular, sino un estándar para la defde información entre diferentes plataformas, de forma que el desarrollador puede definir y extender sus propias etiquetas y crear su propio lenguaje para adaptarse a las necesidades de la a

Existen dos tipos de documentos XML: aquellos que contienen la información propiamente dicha y los documentos de especificación del lenguaje.

Documentos de Datos XML

El componente principal de los documentos XML son las etiquetas representay entre las cuales se encuentran los datos.

Los tres principales tipos de elementos etiqueta son diferenciables:

� Elementos que contienen otros elementos anidados, como

<Informacion> <Nombre> </Informacion>

Para uso exclusivo de los alumnos de CETICSA S.L.

Los estándares de mayor importancia para la comprensión de la arquitectura de Servicios Web son XML,

Dichos estándares conforman toda la tecnología asociada a cualquier servicio, independientemente del lenguaje en el que se haya desarrollado dicho servicio.

Aquí tenemos una imagen que nos muestra los diferentes bloques que conforman un Web Service:

XML (eXtensible Markup Language) es un metalenguaje extensible de etiquetas desarrollado por el W3C cuyo propósito es la definición de datos contenidos en un documento.

La palabra “Extensible” en su definición hace referencia al hecho de que XML no es un lenguaje en particular, sino un estándar para la definición de nuevos lenguajes que se utilizarán para el intercambio de información entre diferentes plataformas, de forma que el desarrollador puede definir y extender sus propias etiquetas y crear su propio lenguaje para adaptarse a las necesidades de la a

Existen dos tipos de documentos XML: aquellos que contienen la información propiamente dicha y los documentos de especificación del lenguaje.

Documentos de Datos XML

El componente principal de los documentos XML son las etiquetas representay entre las cuales se encuentran los datos.

Los tres principales tipos de elementos etiqueta son diferenciables:

Elementos que contienen otros elementos anidados, como

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Los estándares de mayor importancia para la comprensión de la arquitectura de Servicios Web son XML,

ier servicio, independientemente

Aquí tenemos una imagen que nos muestra los diferentes bloques que conforman un Web Service:

Servicios XML

extensible de etiquetas desarrollado por el

La palabra “Extensible” en su definición hace referencia al hecho de que XML no es un lenguaje en inición de nuevos lenguajes que se utilizarán para el intercambio

de información entre diferentes plataformas, de forma que el desarrollador puede definir y extender sus propias etiquetas y crear su propio lenguaje para adaptarse a las necesidades de la aplicación.

Existen dos tipos de documentos XML: aquellos que contienen la información propiamente dicha y los

El componente principal de los documentos XML son las etiquetas representadas en el formato

Page 7: Java Modulo 7

� Elementos que contienen cadenas de datos, como por ejemplo información sobre el nombre de la información.

<Informacion> <Nombre>dato</Nombre> </Informacion>

� Elementos que están vacíos pero que aportan información con su presencia o con scomo en el ejemplo con el atributo id del nodo información:

<Informacion id=”identificador”> <Nombre>dato</Nombre> </Informacion>

Los documentos XML han de ser válidos y bien formados, es decir, deben ajustarse a las reglas semánticas definidas por su XML Schemasintaxis XML.

Debemos diferenciar entre un documento XML bien formado y un documento XML válido.

Un documento xml bien formado es un documento que mantiene las reglas sintáctidiferenciando mayúculas y minúsculas en su sintaxis, por ejemplo.

Un documento xml válido es un documento que mantiene una estructura asociada a otro tipo de documento que indicará los nodos que representará o el número de elementos qnodo. A dicho documento asociado se le conoce por XML Schema o DTD.

Los servicios Web tienen una estructura de documento XML y envían la información al clienteconsumidor mediante SOAP, que es un esquema.

Por ejemplo, imaginemos que tenemos la siguiente clase que representa un servicio web en java:

package paquetees;

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

@WebService() public class NewWebService {

/** * Web service operation */

@WebMethod(operationName = "operation") public Integer operation() { int numero = 20; return numero; } }

Cuando hagamos una solicitud en el cliente, veremos las operaciones devueltas en formato XML:

Para uso exclusivo de los alumnos de CETICSA S.L.

Elementos que contienen cadenas de datos, como por ejemplo información sobre el nombre de la información.

Elementos que están vacíos pero que aportan información con su presencia o con scomo en el ejemplo con el atributo id del nodo información:

Los documentos XML han de ser válidos y bien formados, es decir, deben ajustarse a las reglas as por su XML Schema o su DTD correspondiente y han de ajustarse a las normas de

Debemos diferenciar entre un documento XML bien formado y un documento XML válido.

Un documento xml bien formado es un documento que mantiene las reglas sintáctidiferenciando mayúculas y minúsculas en su sintaxis, por ejemplo.

Un documento xml válido es un documento que mantiene una estructura asociada a otro tipo de documento que indicará los nodos que representará o el número de elementos qnodo. A dicho documento asociado se le conoce por XML Schema o DTD.

Los servicios Web tienen una estructura de documento XML y envían la información al clienteconsumidor mediante SOAP, que es un esquema.

mos la siguiente clase que representa un servicio web en java:

@WebMethod(operationName = "operation")

Cuando hagamos una solicitud en el cliente, veremos las operaciones devueltas en formato XML:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

que contiene la

Elementos que están vacíos pero que aportan información con su presencia o con sus atributos,

Los documentos XML han de ser válidos y bien formados, es decir, deben ajustarse a las reglas correspondiente y han de ajustarse a las normas de

Debemos diferenciar entre un documento XML bien formado y un documento XML válido.

Un documento xml bien formado es un documento que mantiene las reglas sintácticas del lenguaje xml,

Un documento xml válido es un documento que mantiene una estructura asociada a otro tipo de documento que indicará los nodos que representará o el número de elementos que contendrá cada

Los servicios Web tienen una estructura de documento XML y envían la información al cliente-

mos la siguiente clase que representa un servicio web en java:

Cuando hagamos una solicitud en el cliente, veremos las operaciones devueltas en formato XML:

Page 8: Java Modulo 7

Como podemos comprobar en la

arquitectura de los Web Services es la arquitectura SOAP.

Las Arquitecturas Orientadas a Servicios, están motivadas por la creciente necesidad de los negocios de

responder con rapidez a los cambios en

Esto los lleva a tener que cambiar sus sistemas tecnológicos con esa misma rapidez y para lograrlo es

necesario que los componentes de esta infraestructura, sean tan reutilizables y poco interdependientes

que permitan una rápida reestructuración de los mismos.

Los elementos básicos que conforman SOA son:

� Proveedores de Servicios

� Consumidores de Servicios

� Bus Empresarial de Servicios

Además podemos definir otros elementos participantes dentro de una arquitect

Cliente

Se entiende Cliente como el componente que invoca un servicio provisto por un proveedor.

Concepto de servicio

Un servicio es una unidad de trabajo realizada por un componente de software a fin de conseguir un

resultado específico.

El servicio debe ser alcanzable por parte de los consumidores a través de una interfaz programática.

Utilización de web services

La arquitectura orientada a servicios, no especifica necesariamente que los servicios deben ser

brindados a través de un protocolo específico.

Los Web Services son en realidad un conjunto de estándares que definen un protocolo de invocación

remota de servicios, basados en HTML y XML.

Si bien, son también un mecanismo adecuado y en muchos casos recomendable para implementar

servicios no son el único.

Es importante que las arquitecturas orientadas a servicios soporten múltiples protocolos a fin de cumplir

al máximo su visión de brindar un modelo de integración para toda la plataforma tecnológica.

Para uso exclusivo de los alumnos de CETICSA S.L.

Como podemos comprobar en la imagen, uno de los bloques más importantes dentro de la

arquitectura de los Web Services es la arquitectura SOAP.

Las Arquitecturas Orientadas a Servicios, están motivadas por la creciente necesidad de los negocios de

responder con rapidez a los cambios en el entorno comercial en que se desenvuelven.

Esto los lleva a tener que cambiar sus sistemas tecnológicos con esa misma rapidez y para lograrlo es

necesario que los componentes de esta infraestructura, sean tan reutilizables y poco interdependientes

permitan una rápida reestructuración de los mismos.

Los elementos básicos que conforman SOA son:

Además podemos definir otros elementos participantes dentro de una arquitect

Se entiende Cliente como el componente que invoca un servicio provisto por un proveedor.

Un servicio es una unidad de trabajo realizada por un componente de software a fin de conseguir un

El servicio debe ser alcanzable por parte de los consumidores a través de una interfaz programática.

Utilización de web services

La arquitectura orientada a servicios, no especifica necesariamente que los servicios deben ser

otocolo específico.

Los Web Services son en realidad un conjunto de estándares que definen un protocolo de invocación

remota de servicios, basados en HTML y XML.

Si bien, son también un mecanismo adecuado y en muchos casos recomendable para implementar

Es importante que las arquitecturas orientadas a servicios soporten múltiples protocolos a fin de cumplir

al máximo su visión de brindar un modelo de integración para toda la plataforma tecnológica.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

imagen, uno de los bloques más importantes dentro de la

Las Arquitecturas Orientadas a Servicios, están motivadas por la creciente necesidad de los negocios de

el entorno comercial en que se desenvuelven.

Esto los lleva a tener que cambiar sus sistemas tecnológicos con esa misma rapidez y para lograrlo es

necesario que los componentes de esta infraestructura, sean tan reutilizables y poco interdependientes

Además podemos definir otros elementos participantes dentro de una arquitectura SOA tales como:

Se entiende Cliente como el componente que invoca un servicio provisto por un proveedor.

Un servicio es una unidad de trabajo realizada por un componente de software a fin de conseguir un

El servicio debe ser alcanzable por parte de los consumidores a través de una interfaz programática.

La arquitectura orientada a servicios, no especifica necesariamente que los servicios deben ser

Los Web Services son en realidad un conjunto de estándares que definen un protocolo de invocación

Si bien, son también un mecanismo adecuado y en muchos casos recomendable para implementar

Es importante que las arquitecturas orientadas a servicios soporten múltiples protocolos a fin de cumplir

al máximo su visión de brindar un modelo de integración para toda la plataforma tecnológica.

Page 9: Java Modulo 7

El fichero WSDL (Web Services Description Language), en formato XML, describe al ordenador que lo

consulta, la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes

necesarios para interactuar con los servicios lis

Del mismo modo, al igual que en la Web tenemos buscadores como Google, que nos llevan a las

páginas que nos interesan, existe el concepto equivalente a nivel de Servicios Web, que es UDDI

(Universal Description Discovery Integration)

UDDI es un repositorio en línea que se puede utilizar desde las aplicaciones para descubrir de forma

dinámica otros servicios en línea, todos ellos perfectamente integrados en una interfaz XML simple.

La funcionalidad de los protocolos y lenguajes emp

� XML (eXtensible Markup Language): Un servicio Web es una aplicación Web creada en XML.

� WSDL (Web Services Definition Service): Este protocolo se encarga de describir el servicio Web

cuando es publicado.

� Es el lenguaje XML que los proveedores emplean para describir sus servicios Web.

� SOAP (Simple Object Access Protocol): Permite que programas que corren en diferentes sistemas

operativos se comuniquen. La comunicación entre las diferentes entidades se realiza med

mensajes que son rutados en un sobre SOAP.

� UDDI (Universal Description Discovery and Integration): Este protocolo permite la publicación y

localización de los servicios. Los directorios UDDI actúan como una guía telefónica de servicios

Web.

Venta

Los servicios Web en todo su conjunto ofrecen las siguientes ventajas tecnológicas que han provocado

que hayan tenido mucho éxito:

Interoperabilidad

Cualquier servicio Web puede interactuar con cualquier otro serv

El protocolo SOAP permite que cualquier servicio pueda ser ofrecido o utilizado independientemente

del lenguaje o ambiente en que se haya desarrollado.

Omnipresencia

Los servicios Web se comunican utilizando HTTP y XML.

Cualquier dispositivo que trabaje con éstas tecnologías puede tanto ser un cliente del servicio como

servidor en algunas circunstancias.

Mínimo Esfuerzo

Los conceptos detrás de los servicios de Web son fáciles de comprender y se ofrecen Herramientas de

Desarrollo específicas por [WebLogic], Sun, Apache los que permiten a los programadores implementar

rápidamente servicios Web con SOAP.

Uno de los problemas a solucionar para los servicios Web es la gestión de sistemas altamente

distribuidos ya que algunos servicios Web deleg

Para uso exclusivo de los alumnos de CETICSA S.L.

El fichero WSDL (Web Services Description Language), en formato XML, describe al ordenador que lo

consulta, la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes

necesarios para interactuar con los servicios listados en su catálogo.

Del mismo modo, al igual que en la Web tenemos buscadores como Google, que nos llevan a las

páginas que nos interesan, existe el concepto equivalente a nivel de Servicios Web, que es UDDI

(Universal Description Discovery Integration).

UDDI es un repositorio en línea que se puede utilizar desde las aplicaciones para descubrir de forma

dinámica otros servicios en línea, todos ellos perfectamente integrados en una interfaz XML simple.

La funcionalidad de los protocolos y lenguajes empleados en estos servicios es la siguiente:

XML (eXtensible Markup Language): Un servicio Web es una aplicación Web creada en XML.

WSDL (Web Services Definition Service): Este protocolo se encarga de describir el servicio Web

lenguaje XML que los proveedores emplean para describir sus servicios Web.

SOAP (Simple Object Access Protocol): Permite que programas que corren en diferentes sistemas

operativos se comuniquen. La comunicación entre las diferentes entidades se realiza med

mensajes que son rutados en un sobre SOAP.

UDDI (Universal Description Discovery and Integration): Este protocolo permite la publicación y

localización de los servicios. Los directorios UDDI actúan como una guía telefónica de servicios

Ventajas e inconvenientes de los servicios Web

Los servicios Web en todo su conjunto ofrecen las siguientes ventajas tecnológicas que han provocado

Cualquier servicio Web puede interactuar con cualquier otro servicio Web.

El protocolo SOAP permite que cualquier servicio pueda ser ofrecido o utilizado independientemente

del lenguaje o ambiente en que se haya desarrollado.

Los servicios Web se comunican utilizando HTTP y XML.

que trabaje con éstas tecnologías puede tanto ser un cliente del servicio como

Los conceptos detrás de los servicios de Web son fáciles de comprender y se ofrecen Herramientas de

por [WebLogic], Sun, Apache los que permiten a los programadores implementar

rápidamente servicios Web con SOAP.

Uno de los problemas a solucionar para los servicios Web es la gestión de sistemas altamente

distribuidos ya que algunos servicios Web delegan funcionalidades a otras de más bajo nivel.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

El fichero WSDL (Web Services Description Language), en formato XML, describe al ordenador que lo

consulta, la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes

Del mismo modo, al igual que en la Web tenemos buscadores como Google, que nos llevan a las

páginas que nos interesan, existe el concepto equivalente a nivel de Servicios Web, que es UDDI

UDDI es un repositorio en línea que se puede utilizar desde las aplicaciones para descubrir de forma

dinámica otros servicios en línea, todos ellos perfectamente integrados en una interfaz XML simple.

leados en estos servicios es la siguiente:

XML (eXtensible Markup Language): Un servicio Web es una aplicación Web creada en XML.

WSDL (Web Services Definition Service): Este protocolo se encarga de describir el servicio Web

lenguaje XML que los proveedores emplean para describir sus servicios Web.

SOAP (Simple Object Access Protocol): Permite que programas que corren en diferentes sistemas

operativos se comuniquen. La comunicación entre las diferentes entidades se realiza mediante

UDDI (Universal Description Discovery and Integration): Este protocolo permite la publicación y

localización de los servicios. Los directorios UDDI actúan como una guía telefónica de servicios

jas e inconvenientes de los servicios Web

Los servicios Web en todo su conjunto ofrecen las siguientes ventajas tecnológicas que han provocado

El protocolo SOAP permite que cualquier servicio pueda ser ofrecido o utilizado independientemente

que trabaje con éstas tecnologías puede tanto ser un cliente del servicio como

Los conceptos detrás de los servicios de Web son fáciles de comprender y se ofrecen Herramientas de

por [WebLogic], Sun, Apache los que permiten a los programadores implementar

Uno de los problemas a solucionar para los servicios Web es la gestión de sistemas altamente

an funcionalidades a otras de más bajo nivel.

Page 10: Java Modulo 7

Seguridad de los Servicios Web

Las expectativas alrededor de la tecnología de servicios Web son grandes, también puede tener sus

riesgos ya que los servicios Web hacen uso de las mismas tecnologías que han s

ocasiones.

Si los usamos, la seguridad de una empresa puede verse comprometida. La ausencia de técnicas de

seguridad estándar es un obstáculo para la adopción de la tecnología.

La calidad de un Servicio Web es un parámetro que no

fundamental a la hora de desarrollar un servicio estable y maduro.

Esta tecnología está en desarrollo y la mayoría de los protocolos en los que se basa, son

recomendaciones a seguir.

Actualmente, los servicios Web están siendo ampliamente aceptados por las empresas para el

desarrollo de software de uso interno.

De esta forma, los servicios pueden implementar toda su funcionalidad y permanecer seguros tras el

firewall de la empresa.

Los desarrollos actuales no ayudan a la cooperación entre las empresas ya que no hay ningún estándar

establecido sobre las técnicas de seguridad.

Debido a la tecnología que es usada por los servicios Web, y en concreto, al uso de SOAP, las técnicas

de seguridad convencionales que se han venido usando en Internet, ya no son suficientes.

Con SOAP, cada mensaje simple que se intercambia realiza múltiples saltos y es

numerosos puntos antes de que alcance su destino final.

Es por ello que los servicios Web necesitan tecnologías que protejan los mensajes desde el principio

hasta el final.

Existen un conjunto de técnicas que se pueden usar para garantizar la seguridad a nivel de mensaje

SOAP.

� Cifrado de XML: Evita que los datos se vean

� Firma Digital XML: Asocia los datos del mensaje al usuario que emite la firma, de forma que este

usuario es el único que puede modificar dichos datos.

� SAML y la Autorización: SAML (Security Assertion Mark

servicios Web intercambien información de autentificación y autorización entre ellos, de modo

que un servicio Web confíe en un usuario autentificado por otro servicio Web.

� Validación de datos: Permite que los servicios Web recib

esperados.

� Ttambién existen técnicas que permiten mantener la seguridad a otros niveles.

� La seguridad en UDDI permite autentificar todas las entidades que toman parte en la

publicación de un servicio Web: proveedor, agen

� De esta forma, nadie podrá registrar servicios en el papel de un proveedor o hacer uso de ellos

sin contar con los permisos adecuados.

Ver Video: Visualizar los bloques de un Servicio Web

en el Módulo 7. Unidad 1, en la

Para uso exclusivo de los alumnos de CETICSA S.L.

Seguridad de los Servicios Web

Las expectativas alrededor de la tecnología de servicios Web son grandes, también puede tener sus

riesgos ya que los servicios Web hacen uso de las mismas tecnologías que han s

Si los usamos, la seguridad de una empresa puede verse comprometida. La ausencia de técnicas de

seguridad estándar es un obstáculo para la adopción de la tecnología.

La calidad de un Servicio Web es un parámetro que no está demasiado claro, pero cuya medida es

fundamental a la hora de desarrollar un servicio estable y maduro.

Esta tecnología está en desarrollo y la mayoría de los protocolos en los que se basa, son

Actualmente, los servicios Web están siendo ampliamente aceptados por las empresas para el

desarrollo de software de uso interno.

De esta forma, los servicios pueden implementar toda su funcionalidad y permanecer seguros tras el

Los desarrollos actuales no ayudan a la cooperación entre las empresas ya que no hay ningún estándar

establecido sobre las técnicas de seguridad.

Debido a la tecnología que es usada por los servicios Web, y en concreto, al uso de SOAP, las técnicas

eguridad convencionales que se han venido usando en Internet, ya no son suficientes.

Con SOAP, cada mensaje simple que se intercambia realiza múltiples saltos y es

numerosos puntos antes de que alcance su destino final.

que los servicios Web necesitan tecnologías que protejan los mensajes desde el principio

Existen un conjunto de técnicas que se pueden usar para garantizar la seguridad a nivel de mensaje

Cifrado de XML: Evita que los datos se vean expuestos a lo largo de su recorrido.

Firma Digital XML: Asocia los datos del mensaje al usuario que emite la firma, de forma que este

usuario es el único que puede modificar dichos datos.

SAML y la Autorización: SAML (Security Assertion Mark-up Language) hace posible que los

servicios Web intercambien información de autentificación y autorización entre ellos, de modo

que un servicio Web confíe en un usuario autentificado por otro servicio Web.

Validación de datos: Permite que los servicios Web reciban datos dentro de los rangos

Ttambién existen técnicas que permiten mantener la seguridad a otros niveles.

La seguridad en UDDI permite autentificar todas las entidades que toman parte en la

publicación de un servicio Web: proveedor, agente y consumidor del servicio.

De esta forma, nadie podrá registrar servicios en el papel de un proveedor o hacer uso de ellos

sin contar con los permisos adecuados.

Visualizar los bloques de un Servicio Web

en el Módulo 7. Unidad 1, en la plataforma elearning.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Las expectativas alrededor de la tecnología de servicios Web son grandes, también puede tener sus

riesgos ya que los servicios Web hacen uso de las mismas tecnologías que han sido atacadas en tantas

Si los usamos, la seguridad de una empresa puede verse comprometida. La ausencia de técnicas de

está demasiado claro, pero cuya medida es

Esta tecnología está en desarrollo y la mayoría de los protocolos en los que se basa, son

Actualmente, los servicios Web están siendo ampliamente aceptados por las empresas para el

De esta forma, los servicios pueden implementar toda su funcionalidad y permanecer seguros tras el

Los desarrollos actuales no ayudan a la cooperación entre las empresas ya que no hay ningún estándar

Debido a la tecnología que es usada por los servicios Web, y en concreto, al uso de SOAP, las técnicas

eguridad convencionales que se han venido usando en Internet, ya no son suficientes.

Con SOAP, cada mensaje simple que se intercambia realiza múltiples saltos y es enrutado a través de

que los servicios Web necesitan tecnologías que protejan los mensajes desde el principio

Existen un conjunto de técnicas que se pueden usar para garantizar la seguridad a nivel de mensaje

expuestos a lo largo de su recorrido.

Firma Digital XML: Asocia los datos del mensaje al usuario que emite la firma, de forma que este

age) hace posible que los

servicios Web intercambien información de autentificación y autorización entre ellos, de modo

que un servicio Web confíe en un usuario autentificado por otro servicio Web.

an datos dentro de los rangos

Ttambién existen técnicas que permiten mantener la seguridad a otros niveles.

La seguridad en UDDI permite autentificar todas las entidades que toman parte en la

te y consumidor del servicio.

De esta forma, nadie podrá registrar servicios en el papel de un proveedor o hacer uso de ellos

Visualizar los bloques de un Servicio Web,

plataforma elearning.

Page 11: Java Modulo 7

Objetivo

Comprender el funcionamiento de los servicios Web dentro de la tecnología de Java.

Enunciado

Vamos a realizar un Servicio Web que nos devolverá la letra del correspondiente a un DNI que

enviaremos como parámetro.

Comenzaremos creándonos un nuevo proyecto Web en NetBeans.

.

Llamaremos al proyecto ProyectoServicios

Utilizaremos el servidor de aplicaciones GlassFish y no utilizaremos Frameworks.

Sobre el proyecto, vamos a agregar un nuevo

Para uso exclusivo de los alumnos de CETICSA S.L.

Laboratorio: Servicio Web DNI

Comprender el funcionamiento de los servicios Web dentro de la tecnología de Java.

Vamos a realizar un Servicio Web que nos devolverá la letra del correspondiente a un DNI que

Comenzaremos creándonos un nuevo proyecto Web en NetBeans.

Llamaremos al proyecto ProyectoServicios

Utilizaremos el servidor de aplicaciones GlassFish y no utilizaremos Frameworks.

Sobre el proyecto, vamos a agregar un nuevo Servicio Web.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Laboratorio: Servicio Web DNI

Comprender el funcionamiento de los servicios Web dentro de la tecnología de Java.

Vamos a realizar un Servicio Web que nos devolverá la letra del correspondiente a un DNI que

Page 12: Java Modulo 7

Lo llamaremos ServicioDNI

Vamos a agregar una nueva operación:

Añadimos un método llamado getLetraNif() que recibirá el número del DNI y devolverá la letra

correspondiente a dicho DNI.

Para uso exclusivo de los alumnos de CETICSA S.L.

Vamos a agregar una nueva operación:

Añadimos un método llamado getLetraNif() que recibirá el número del DNI y devolverá la letra

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Añadimos un método llamado getLetraNif() que recibirá el número del DNI y devolverá la letra

Page 13: Java Modulo 7

Para conseguir averiguar la letra del NIF respe

instrucciones:

La fórmula para calcular la letra del número del DNI se

(nº DNI - ((nº DNI / 23) * 23))

Se mira la equivalencia en la siguiente tabla

0=T

1=R

2=W

3=A

Ahora vamos a implementar la lógica para poder realizar las acciones del ServicioDNI. Para ello

implementaremos el método de la siguiente forma:

package paquete;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

@WebService()

public class ServicioDNI {

/**

* Web service operation

*/

@WebMethod(operationName = "getLetraNif")

public String getLetraNif(@WebPar

Para uso exclusivo de los alumnos de CETICSA S.L.

Para conseguir averiguar la letra del NIF respecto a su número debemos seguir las siguientes

La fórmula para calcular la letra del número del DNI se recupera de la siguiente forma:

Se mira la equivalencia en la siguiente tabla:

4=G 8=P 12=N 16=Q 20=C

5=M 9=D 13=J 17=V 21=K

6=Y 10=X 14=Z 18=H 22=E

7=F 11=B 15=S 19=L 23=T

Ahora vamos a implementar la lógica para poder realizar las acciones del ServicioDNI. Para ello

implementaremos el método de la siguiente forma:

@WebMethod(operationName = "getLetraNif")

public String getLetraNif(@WebParam(name = "numerodni")

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

cto a su número debemos seguir las siguientes

de la siguiente forma:

Ahora vamos a implementar la lógica para poder realizar las acciones del ServicioDNI. Para ello

Page 14: Java Modulo 7

int numerodni) {

String letrasdni = "TRWAGMYFPDXBNJZSQVHLCKET";

int resultado = (numerodni - ((numerodni / 23) * 23));

Character letra = letrasdni.charAt(resultado);

return letra.toString();

}

}

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

Veremos la pantalla de presentación del servicio:

Si invocamos el servicio, comprobaremos que el dato de la letra es devuelto:

Para uso exclusivo de los alumnos de CETICSA S.L.

String letrasdni = "TRWAGMYFPDXBNJZSQVHLCKET";

((numerodni / 23) * 23));

Character letra = letrasdni.charAt(resultado);

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

Veremos la pantalla de presentación del servicio:

Si invocamos el servicio, comprobaremos que el dato de la letra es devuelto:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

Page 15: Java Modulo 7

Unidad 2: Analizando la tecnología y plataforma de

Objetivos

� Conocer la arquitectura de los Servicios Web en diferentes entornos de trabajo.

� Comparar las arquitecturas de los Servicios Web en los lenguajes más potentes del mercado.

Introducción

Como hemos podido comprobar, los servicios Web no son una tecnología única del lenguaje java J2EE,

a pesar de encontrarnos dentro de dicho entorno.

Cuando utilizamos servicios web, el propósito de dichos servicios es encontrar una arquitectura que sea

capaz de comunicarse entre diferentes plataformas, independientemente del lenguaje de

programación en el que se hayan creado los servicios.

La tecnología que permite que los servicios web se comuniquen entre diversos lenguajes tiene que ver

con el formato de los datos enviados en el servicio y con el esquema generado para dicho servicio

web.

Mediante los esquemas SOAP cualquier lenguaje es capaz de entender los objetos y métodos que serán

devueltos en un servicio web.

Lo que veremos en este capítulo es la comparati

pueden desarrollar los servicios web, Visual Studio Net y Java.

En la actualidad Sun ofrece tres edi

finalidad.

Estas plataformas son sólo especificaciones, lo que

para usar, sino que son documentos que definen cómo deben ser esos productos, cómo deben

comportarse y qué requisititos deben cumplir.

A los productos que cumplen las especificaciones se les llama implementaciones.

Las tres ediciones de la plataforma Java 2 son:

� Standard Edition (J2SE)

� Enterprise Edition (J2EE)

� Micro Edition (J2ME)

La Standard Edition es la plataforma básica y más extendida, la que se suele conocer como Java

Development Kit o JDK.

Con ella se pueden hacer applets y cualquier clase de aplicación no distribuida.

La Enterprise Edition recubre la Standard Edition añadié

aplicaciones de empresa en el lado del servidor, es decir, aplicaciones para ser utilizadas en Internet.

Para uso exclusivo de los alumnos de CETICSA S.L.

Analizando la tecnología y plataforma de servicios Web

Conocer la arquitectura de los Servicios Web en diferentes entornos de trabajo.

Comparar las arquitecturas de los Servicios Web en los lenguajes más potentes del mercado.

hemos podido comprobar, los servicios Web no son una tecnología única del lenguaje java J2EE,

a pesar de encontrarnos dentro de dicho entorno.

Cuando utilizamos servicios web, el propósito de dichos servicios es encontrar una arquitectura que sea

comunicarse entre diferentes plataformas, independientemente del lenguaje de

programación en el que se hayan creado los servicios.

La tecnología que permite que los servicios web se comuniquen entre diversos lenguajes tiene que ver

atos enviados en el servicio y con el esquema generado para dicho servicio

Mediante los esquemas SOAP cualquier lenguaje es capaz de entender los objetos y métodos que serán

Lo que veremos en este capítulo es la comparativa entre las dos grandes plataformas sobre las que se

pueden desarrollar los servicios web, Visual Studio Net y Java.

Arquitectura SUN

En la actualidad Sun ofrece tres ediciones de la plataforma Java 2. Cada una de ellas tiene una

ormas son sólo especificaciones, lo que quiere decir que no son productos terminados listos

para usar, sino que son documentos que definen cómo deben ser esos productos, cómo deben

comportarse y qué requisititos deben cumplir.

A los productos que cumplen las especificaciones se les llama implementaciones.

Las tres ediciones de la plataforma Java 2 son:

La Standard Edition es la plataforma básica y más extendida, la que se suele conocer como Java

Con ella se pueden hacer applets y cualquier clase de aplicación no distribuida.

La Enterprise Edition recubre la Standard Edition añadiéndole una serie de APIs que permiten crear

mpresa en el lado del servidor, es decir, aplicaciones para ser utilizadas en Internet.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Analizando la tecnología y plataforma de

Conocer la arquitectura de los Servicios Web en diferentes entornos de trabajo.

Comparar las arquitecturas de los Servicios Web en los lenguajes más potentes del mercado.

hemos podido comprobar, los servicios Web no son una tecnología única del lenguaje java J2EE,

Cuando utilizamos servicios web, el propósito de dichos servicios es encontrar una arquitectura que sea

comunicarse entre diferentes plataformas, independientemente del lenguaje de

La tecnología que permite que los servicios web se comuniquen entre diversos lenguajes tiene que ver

atos enviados en el servicio y con el esquema generado para dicho servicio

Mediante los esquemas SOAP cualquier lenguaje es capaz de entender los objetos y métodos que serán

va entre las dos grandes plataformas sobre las que se

SUN Web Services

Cada una de ellas tiene una

quiere decir que no son productos terminados listos

para usar, sino que son documentos que definen cómo deben ser esos productos, cómo deben

A los productos que cumplen las especificaciones se les llama implementaciones.

La Standard Edition es la plataforma básica y más extendida, la que se suele conocer como Java

Con ella se pueden hacer applets y cualquier clase de aplicación no distribuida.

ndole una serie de APIs que permiten crear

mpresa en el lado del servidor, es decir, aplicaciones para ser utilizadas en Internet.

Page 16: Java Modulo 7

La Micro Edition ofrece un entorno de ejecución altamente optimizado para todo tipo de dispositivos

con recursos limitados, como móviles, PDAs, etc.

Según Sun MicroSistem J2EE (Java 2 Platform Entreprise Edition) es un conjunto de estándares y

especificaciones para el desarrollo de aplicaciones empresariales basado en la tecnología Java.

Las llamadas aplicaciones empresariales son aplicaciones del lado del servidor, aplicaciones grandes y

complejas que proporcionan servicios a través de Internet o redes privadas.

J2EE proporciona un modelo de programación que consiste en un conjunto de APIs y que dirige la

manera de construir aplicaciones.

La idea principal de J2EE es la de proveer un estándar simple y unificado para aplicaciones distribuidas

a través de un modelo de aplicaciones basado en componentes.

Para la construcción de un servicio Web bajo la arquitectu

lenguaje de programación.

El modelo que sigue J2EE es el siguiente:

La aplicación está asociada a un conjunto de clases con las cuales podemos definir objetos.

Gracias a estos objetos se ocultan al programador las d

de responder y aceptar peticiones a través de la red, así como la interpretación de estas peticiones, su

envío y recepción.

Este conjunto de clases se obtiene como paquete complementario al conjunto de clase

principio ofrece directamente java para implementar y consumir servicios Web.

La funcionalidad de la aplicación en si es construida utilizando componentes EJB

Estos componentes proporcionan acceso a base de datos mediante

Connectivity) o SQL/J (Lenguaje de consultas para bases de datos)

JCA (Java Conector Architecture) o acceso a servicios Web utilizando JAX (Java APIs for XML).

En general, la lógica de la aplicación

lenguaje Java.

Cualquier aplicación puede conectarse a una aplicación J2EE utilizando la tecnología de servicios Web

(por ejemplo XML).

Un objeto es capaz de recibir peticiones y contestar

ejecutar las operaciones.

En definitiva todas las clases y aplicaciones Java pueden convertir

API for XML”.

J2EE define un estándar para el desarrollo de aplicaciones emp

Dichas aplicaciones se basan en componentes modulares y estandarizados, dando un completo

conjunto de servicios a estos componentes, y manejando muchas de las funciones de la aplicación de

forma automática, sin necesidad de una programación compleja.

Como hemos comentado, las aplicaciones empresariales para web de la tecnología Java están

compuestas por los siguientes componentes:

Las aplicaciones J2EE están formadas por los siguientes componentes:

� Componentes Clientes

� Clientes Web

� Applets

Para uso exclusivo de los alumnos de CETICSA S.L.

La Micro Edition ofrece un entorno de ejecución altamente optimizado para todo tipo de dispositivos

rsos limitados, como móviles, PDAs, etc.

Según Sun MicroSistem J2EE (Java 2 Platform Entreprise Edition) es un conjunto de estándares y

especificaciones para el desarrollo de aplicaciones empresariales basado en la tecnología Java.

es empresariales son aplicaciones del lado del servidor, aplicaciones grandes y

complejas que proporcionan servicios a través de Internet o redes privadas.

J2EE proporciona un modelo de programación que consiste en un conjunto de APIs y que dirige la

La idea principal de J2EE es la de proveer un estándar simple y unificado para aplicaciones distribuidas

a través de un modelo de aplicaciones basado en componentes.

Para la construcción de un servicio Web bajo la arquitectura J2EE, deberemos utilizar Java como

es el siguiente:

La aplicación está asociada a un conjunto de clases con las cuales podemos definir objetos.

Gracias a estos objetos se ocultan al programador las dificultades de desarrollar una aplicación capaz

de responder y aceptar peticiones a través de la red, así como la interpretación de estas peticiones, su

Este conjunto de clases se obtiene como paquete complementario al conjunto de clase

principio ofrece directamente java para implementar y consumir servicios Web.

La funcionalidad de la aplicación en si es construida utilizando componentes EJB

Estos componentes proporcionan acceso a base de datos mediante

(Lenguaje de consultas para bases de datos), acceso a otros sistemas gracias a

JCA (Java Conector Architecture) o acceso a servicios Web utilizando JAX (Java APIs for XML).

En general, la lógica de la aplicación está construida gracias al conjunto de clases que proporciona el

Cualquier aplicación puede conectarse a una aplicación J2EE utilizando la tecnología de servicios Web

Un objeto es capaz de recibir peticiones y contestar a estas, utilizando directamente JAX APIs para

En definitiva todas las clases y aplicaciones Java pueden convertirse en servicios Web utilizando “

J2EE define un estándar para el desarrollo de aplicaciones empresariales y simplifica las aplicaciones.

Dichas aplicaciones se basan en componentes modulares y estandarizados, dando un completo

conjunto de servicios a estos componentes, y manejando muchas de las funciones de la aplicación de

ecesidad de una programación compleja.

Como hemos comentado, las aplicaciones empresariales para web de la tecnología Java están

compuestas por los siguientes componentes:

Las aplicaciones J2EE están formadas por los siguientes componentes:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

La Micro Edition ofrece un entorno de ejecución altamente optimizado para todo tipo de dispositivos

Según Sun MicroSistem J2EE (Java 2 Platform Entreprise Edition) es un conjunto de estándares y

especificaciones para el desarrollo de aplicaciones empresariales basado en la tecnología Java.

es empresariales son aplicaciones del lado del servidor, aplicaciones grandes y

J2EE proporciona un modelo de programación que consiste en un conjunto de APIs y que dirige la

La idea principal de J2EE es la de proveer un estándar simple y unificado para aplicaciones distribuidas

ra J2EE, deberemos utilizar Java como

La aplicación está asociada a un conjunto de clases con las cuales podemos definir objetos.

ificultades de desarrollar una aplicación capaz

de responder y aceptar peticiones a través de la red, así como la interpretación de estas peticiones, su

Este conjunto de clases se obtiene como paquete complementario al conjunto de clases que en

La funcionalidad de la aplicación en si es construida utilizando componentes EJB (Enterprise JavaBeans).

JDBC (Java DataBase

, acceso a otros sistemas gracias a

JCA (Java Conector Architecture) o acceso a servicios Web utilizando JAX (Java APIs for XML).

está construida gracias al conjunto de clases que proporciona el

Cualquier aplicación puede conectarse a una aplicación J2EE utilizando la tecnología de servicios Web

a estas, utilizando directamente JAX APIs para

se en servicios Web utilizando “Java

resariales y simplifica las aplicaciones.

Dichas aplicaciones se basan en componentes modulares y estandarizados, dando un completo

conjunto de servicios a estos componentes, y manejando muchas de las funciones de la aplicación de

Como hemos comentado, las aplicaciones empresariales para web de la tecnología Java están

Page 17: Java Modulo 7

� Aplicaciones Cliente

� Componentes Web

� Servlets

� Páginas JavaServer Pages (JSP)

� Componentes de Negocios

� Entreprise Java Beans

� Session Beans

� Entity Beans

� Message Driven Bean

De acuerdo con la definición de Microsoft

servidores, clientes y servicios.

Desde el punto de vista de la arquitectura de servicios web para esta plataforma, net utiliza

implementación basada en estándares abier

Desde el punto de vista del programador, el entorno .NET ofrece un solo entorno de desarrollo para

todos los lenguajes que soporta (Visual Basic, C++, C#, Visual J#, Fortran, Cobol, etc).

Esta plataforma utiliza los Servicios Web co

Permite conectar distintos sistemas operativos, dispositivos físicos, información y usuarios.

La idea central de .NET es la de servicio

y de cómo construir, instalar, consumir, integrar o agregar estos servicios para que puedan ser

accedidos mediante Internet.

La plataforma .NET utiliza Internet y su capacidad de distribución para que los usuarios accedan desde

cualquier dispositivo, en cualquier sistema operativo y lugar a la funcionalidad que los servicios Web

proveen.

NET Framework es la parte más importante de la plataforma .NET.

Incluye COM+, un.entorno de ejecución común, un compilador JIT, y un conjunto de librerías de sistem

que dan acceso a un amplio conjunto de servicios .NET.

Los componentes más importantes de la arquitectura NET

� CLR (Common Language Runtime)

Para uso exclusivo de los alumnos de CETICSA S.L.

Páginas JavaServer Pages (JSP)

Arquitectura NET Web Services

con la definición de Microsoft, Visual Studio Net es una plataforma que comprende

Desde el punto de vista de la arquitectura de servicios web para esta plataforma, net utiliza

implementación basada en estándares abiertos como SOAP o WSDL.

Desde el punto de vista del programador, el entorno .NET ofrece un solo entorno de desarrollo para

todos los lenguajes que soporta (Visual Basic, C++, C#, Visual J#, Fortran, Cobol, etc).

Esta plataforma utiliza los Servicios Web como un medio para poder comunicar distintas tecnologías.

Permite conectar distintos sistemas operativos, dispositivos físicos, información y usuarios.

La idea central de .NET es la de servicio final a los clientes, y más concretamente software como servi

y de cómo construir, instalar, consumir, integrar o agregar estos servicios para que puedan ser

La plataforma .NET utiliza Internet y su capacidad de distribución para que los usuarios accedan desde

en cualquier sistema operativo y lugar a la funcionalidad que los servicios Web

NET Framework es la parte más importante de la plataforma .NET.

Incluye COM+, un.entorno de ejecución común, un compilador JIT, y un conjunto de librerías de sistem

que dan acceso a un amplio conjunto de servicios .NET.

de la arquitectura NET son:

CLR (Common Language Runtime)

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Arquitectura NET Web Services

es una plataforma que comprende

Desde el punto de vista de la arquitectura de servicios web para esta plataforma, net utiliza una

Desde el punto de vista del programador, el entorno .NET ofrece un solo entorno de desarrollo para

todos los lenguajes que soporta (Visual Basic, C++, C#, Visual J#, Fortran, Cobol, etc).

mo un medio para poder comunicar distintas tecnologías.

Permite conectar distintos sistemas operativos, dispositivos físicos, información y usuarios.

concretamente software como servicio

y de cómo construir, instalar, consumir, integrar o agregar estos servicios para que puedan ser

La plataforma .NET utiliza Internet y su capacidad de distribución para que los usuarios accedan desde

en cualquier sistema operativo y lugar a la funcionalidad que los servicios Web

Incluye COM+, un.entorno de ejecución común, un compilador JIT, y un conjunto de librerías de sistema

Page 18: Java Modulo 7

� El conjunto de clases del .NET Framework

� ASP.NET

� Remoting

� Windows Forms

La estrategia .Net es innovadora respecto a los productos anteriores de Microsoft, en el sentido de que

no compila aplicaciones en código nativo, es decir, no compila aplicaciones en código específico.

La compilación, al igual que sucede con Java, se real

El código escrito por el programador se compila en MSIL (Microsoft Intermediate

modo que las instrucciones en Java se convierten en bytecodes.

Después el CLR (Common Language Runtime) de Microsoft compila

aplicaciones en código nativo de la plataforma.

Esto se realiza mediante el compilador JIT (Just in Time).

El CLR también revisa el código, verificando la seguridad del mismo y recolectando los objetos para los

cuales no existe ya ninguna referencia (recolección de basura), además de gestionar las excepciones

entre otras tareas.

En principio, cualquier programa escrito en MSIL puede ejecutarse en cualquier sistema o

donde funcione un CLR, aunque en realidad, las aplicac

para sistemas operativos de Microsoft.

NET Framework es la base de cualquier desarrollador de .NET.

Para uso exclusivo de los alumnos de CETICSA S.L.

El conjunto de clases del .NET Framework

La estrategia .Net es innovadora respecto a los productos anteriores de Microsoft, en el sentido de que

no compila aplicaciones en código nativo, es decir, no compila aplicaciones en código específico.

La compilación, al igual que sucede con Java, se realiza en dos pasos sucesivos.

El código escrito por el programador se compila en MSIL (Microsoft Intermediate

modo que las instrucciones en Java se convierten en bytecodes.

Después el CLR (Common Language Runtime) de Microsoft compila en tiempo de ejecución las

aplicaciones en código nativo de la plataforma.

Esto se realiza mediante el compilador JIT (Just in Time).

El CLR también revisa el código, verificando la seguridad del mismo y recolectando los objetos para los

ya ninguna referencia (recolección de basura), además de gestionar las excepciones

cualquier programa escrito en MSIL puede ejecutarse en cualquier sistema o

donde funcione un CLR, aunque en realidad, las aplicaciones para la plataforma Net están creadas

para sistemas operativos de Microsoft.

NET Framework es la base de cualquier desarrollador de .NET.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

La estrategia .Net es innovadora respecto a los productos anteriores de Microsoft, en el sentido de que

no compila aplicaciones en código nativo, es decir, no compila aplicaciones en código específico.

iza en dos pasos sucesivos.

El código escrito por el programador se compila en MSIL (Microsoft Intermediate Language), del mismo

en tiempo de ejecución las

El CLR también revisa el código, verificando la seguridad del mismo y recolectando los objetos para los

ya ninguna referencia (recolección de basura), además de gestionar las excepciones

cualquier programa escrito en MSIL puede ejecutarse en cualquier sistema operativo

iones para la plataforma Net están creadas

Page 19: Java Modulo 7

Es un conjunto de clases, interfaces y

además de proporcionar acceso a la funcionalidad del sistema.

ASP.NET es la parte de .NET dedicada al desarrollo Web.

A través del servidor Web IIS (Internet Information Services)

CLR pudiéndose usar el conjunto de clases del NET Framework para desarrollarlas, obteniendo así una

versatilidad y una potencia nunca antes

NET Remoting nos permite tener objetos en máquinas remotas e invocarlos desde otras.máquinas.

La tecnología Windows Forms, permite desarrollar clientes gráficos independientes al navegador.

Otra innovación de .NET es el lenguaje C# (C Sharp) incluido en esta plataforma por primera vez

versión 2003.

Es un lenguaje orientado a objetos fuertemente tipa

elevado rendimiento con una relativa simplicidad del lenguaje.

C# juega un importante papel en .NET porque ha sido diseñado para trabajar de forma óptima con

esta plataforma y ciertas características de .NET se i

fuera óptimo con C# (de hecho, algunas bibliotecas de .NET como Collection, XML, ADO+, ASP+, GDI+ y

otras fueron escritas en C#).

En esta tabla podemos observar ña comparativa entre las tecnologías de Sun y Micro

poder obtener una arquitectura de comunicación estándar entre los servicios web.

Características .NET

Tipos de tecnología Producto

Empresas que lo

ofrecen Microsoft

Librerías de desarrollo NET Framework SDK

Intérprete CLR (Common Language

Runtime)

Páginas dinámicas ASP .NET

Componentes .NET Components

Managed

Acceso a bases de

datos ADO .NET, LINQ

Servicios Web SOAP, WSDL, UDDI,

Windows Communication

Para uso exclusivo de los alumnos de CETICSA S.L.

Es un conjunto de clases, interfaces y tipos que simplifican y optimizan el desarrollo de aplicaciones .NET

demás de proporcionar acceso a la funcionalidad del sistema.

ASP.NET es la parte de .NET dedicada al desarrollo Web.

A través del servidor Web IIS (Internet Information Services) las aplicaciones ASP.NET se ejecutarán bajo el

unto de clases del NET Framework para desarrollarlas, obteniendo así una

idad y una potencia nunca antes conseguida en las aplicaciones asp.

NET Remoting nos permite tener objetos en máquinas remotas e invocarlos desde otras.máquinas.

Windows Forms, permite desarrollar clientes gráficos independientes al navegador.

Otra innovación de .NET es el lenguaje C# (C Sharp) incluido en esta plataforma por primera vez

Es un lenguaje orientado a objetos fuertemente tipado, diseñado por Microsoft para obtener un

elevado rendimiento con una relativa simplicidad del lenguaje.

C# juega un importante papel en .NET porque ha sido diseñado para trabajar de forma óptima con

esta plataforma y ciertas características de .NET se implementaron pensando en que su rendimiento

fuera óptimo con C# (de hecho, algunas bibliotecas de .NET como Collection, XML, ADO+, ASP+, GDI+ y

En esta tabla podemos observar ña comparativa entre las tecnologías de Sun y Micro

poder obtener una arquitectura de comunicación estándar entre los servicios web.

.NET J2EE

Producto Estándar

Microsoft Existen múltiples proveedores

para ofrecer la

J2EE, no existe una empresa

oficial sobre la que

implementar las

características de Sun.

NET Framework SDK Java Core API

CLR (Common Language

Runtime)

JRE (Java Runtime)

ASP .NET Servlets, JSP

.NET Components

Managed

EJB

ADO .NET, LINQ JDBC, SQL/J

SOAP, WSDL, UDDI,

Windows Communication

SOAP, WSDL

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

tipos que simplifican y optimizan el desarrollo de aplicaciones .NET,

las aplicaciones ASP.NET se ejecutarán bajo el

unto de clases del NET Framework para desarrollarlas, obteniendo así una

NET Remoting nos permite tener objetos en máquinas remotas e invocarlos desde otras.máquinas.

Windows Forms, permite desarrollar clientes gráficos independientes al navegador.

Otra innovación de .NET es el lenguaje C# (C Sharp) incluido en esta plataforma por primera vez en la

do, diseñado por Microsoft para obtener un

C# juega un importante papel en .NET porque ha sido diseñado para trabajar de forma óptima con

mplementaron pensando en que su rendimiento

fuera óptimo con C# (de hecho, algunas bibliotecas de .NET como Collection, XML, ADO+, ASP+, GDI+ y

En esta tabla podemos observar ña comparativa entre las tecnologías de Sun y Microsoft que permiten

poder obtener una arquitectura de comunicación estándar entre los servicios web.

Existen múltiples proveedores

para ofrecer la tecnología de

J2EE, no existe una empresa

oficial sobre la que

implementar las

características de Sun.

Java Core API

JRE (Java Runtime)

, UDDI, RestFul

Page 20: Java Modulo 7

Foundation

Interfaces gráficas Windows Forms y Web

Forms

Herramientas de

programación Visual Studio .NET

Transacciones

distribuidas MS

Servicios de

directorios ADSI

Librería de encolado

y mensajes MSMQ

Lenguajes utilizados C#, Visual Basic,

C++…otros

Lenguaje intermedio IL

Comparación en las arquitecturas de Servicios Web

El propósito tanto de J2EE como de la plataforma .NET es facilitar y simplificar el desarrollo de

aplicaciones empresariales o corporativas.

Las páginas JSP (Java Server Pages) son muy similares a ASP (Active Server Pages) o a su descendiente

ASP .Net, y los EJB (Enterprise JavaBeans) son muy similares a los COM/COM+ de Microsoft.

Los servidores de aplicaciones J2EE y .Net proporcionan un modelo de acceso de componentes a datos

y de lógica del negocio, separados por una capa intermedia de presentación im

ASP .Net o Servlets si hablamos de la tecnología J2EE

Visual Basic .Net y C# son lenguajes orientados a objetos, al igual que Java, y en su diseño ha tenido

mucha importancia la existencia de Internet.

Desde la perspectiva de los desarrolladores, J2EE y .Net proporcionan las herramientas para crear

Servicios Web.

Al usar .Net una compilación en dos pasos le permitirá teóricamente proporcionar entornos de

ejecución para diferentes plataformas de forma s

cualquier plataforma y Net funciona bajo sistemas operativos Microsoft.

Una ventaja muy importante del entorno .Net frente a J2EE es la posibilidad de emplear múltiples

lenguajes de programación, mientras que J2EE sólo trabaja con

La realidad es que la diversidad de lenguajes es obligatoria por la misma variedad de las necesidades

de los programadores.

Un lenguaje moderno y orientado a objetos como Java puede resultar inadecuado a la hora de

abordar problemas que involucren

mismos cálculos pueden ser abordados mucho más adecuadamente con un lenguaje primitivo como

Fortran.

Para uso exclusivo de los alumnos de CETICSA S.L.

Foundation

Windows Forms y Web

Forms

AWT y Java

Visual Studio .NET Depende del fabricante, las

más conocidas son NetBeans

y Eclipse.

–DTC JTS

ADSI JNDI

MSMQ JMS

C#, Visual Basic,

C++…otros

Java

Bytecodes

Comparación en las arquitecturas de Servicios Web

El propósito tanto de J2EE como de la plataforma .NET es facilitar y simplificar el desarrollo de

aplicaciones empresariales o corporativas.

JSP (Java Server Pages) son muy similares a ASP (Active Server Pages) o a su descendiente

los EJB (Enterprise JavaBeans) son muy similares a los COM/COM+ de Microsoft.

Los servidores de aplicaciones J2EE y .Net proporcionan un modelo de acceso de componentes a datos

y de lógica del negocio, separados por una capa intermedia de presentación im

si hablamos de la tecnología J2EE.

Visual Basic .Net y C# son lenguajes orientados a objetos, al igual que Java, y en su diseño ha tenido

mucha importancia la existencia de Internet.

esarrolladores, J2EE y .Net proporcionan las herramientas para crear

Al usar .Net una compilación en dos pasos le permitirá teóricamente proporcionar entornos de

ejecución para diferentes plataformas de forma similar a Java y sus JREs y SDKs, aunque Java soporta

cualquier plataforma y Net funciona bajo sistemas operativos Microsoft.

Una ventaja muy importante del entorno .Net frente a J2EE es la posibilidad de emplear múltiples

lenguajes de programación, mientras que J2EE sólo trabaja con Java.

La realidad es que la diversidad de lenguajes es obligatoria por la misma variedad de las necesidades

Un lenguaje moderno y orientado a objetos como Java puede resultar inadecuado a la hora de

abordar problemas que involucren cálculos matemáticos masivos y complejos, mientras que esos

mismos cálculos pueden ser abordados mucho más adecuadamente con un lenguaje primitivo como

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Swing

Depende del fabricante, las

más conocidas son NetBeans

Comparación en las arquitecturas de Servicios Web

El propósito tanto de J2EE como de la plataforma .NET es facilitar y simplificar el desarrollo de

JSP (Java Server Pages) son muy similares a ASP (Active Server Pages) o a su descendiente

los EJB (Enterprise JavaBeans) son muy similares a los COM/COM+ de Microsoft.

Los servidores de aplicaciones J2EE y .Net proporcionan un modelo de acceso de componentes a datos

y de lógica del negocio, separados por una capa intermedia de presentación implementada mediante

Visual Basic .Net y C# son lenguajes orientados a objetos, al igual que Java, y en su diseño ha tenido

esarrolladores, J2EE y .Net proporcionan las herramientas para crear

Al usar .Net una compilación en dos pasos le permitirá teóricamente proporcionar entornos de

Ks, aunque Java soporta

Una ventaja muy importante del entorno .Net frente a J2EE es la posibilidad de emplear múltiples

La realidad es que la diversidad de lenguajes es obligatoria por la misma variedad de las necesidades

Un lenguaje moderno y orientado a objetos como Java puede resultar inadecuado a la hora de

cálculos matemáticos masivos y complejos, mientras que esos

mismos cálculos pueden ser abordados mucho más adecuadamente con un lenguaje primitivo como

Page 21: Java Modulo 7

Por otro lado, .Net posibilita así que programadores de terceros lenguajes pasen a esta pla

reduciendo el tiempo de aprendizaje y entrenamiento.

Las herramientas de desarrollo incluidas por Microsoft en Visual Studio .Net son mucho más simples,

intuitivas y sencillas de manejar que las herramientas de desarrollo equivalentes en J2EE sum

por otras empresas (entre ellas la propia Sun).

Cualquier programador medio-avanzado se manejará rápidamente con la programación del interface

de usuario en Visual Studio .Net, al igual que sucedía con versiones anteriores de Visual Studio.

C# es un lenguaje interesante, fácil de aprender por los programadores de Java (de hecho, Microsoft

ofrece un conversor de Java a C#), que en caso de estandarizarse podría resultar un lenguaje muy

conveniente para ciertas tareas de programación en diferent

Las implementaciones de J2EE pueden adquirirse a distintas compañías, mientras que .Net sólo a

Microsoft.

El hecho de que haya distintas organizaciones implementando J2EE ofrece mayor variedad para los

usuarios finales y permite la existencia de una cierta competencia entre ellas para obtener mejores

productos que no existe en el caso de Microsoft y Visual Studio

Debido al proceso evolutivo de los productos de Microsoft, y en muchos casos, por motivos de

compatibilidad, la seguridad frente a virus informáticos de los productos de Microsoft es menor que los

basados en Java, pues desde un comienzo Java se fundamentó en un estricto modelo de seguridad.

Como se ha escrito ya, las aplicaciones Java pueden correr en una amplia gam

operativos (desde sistemas empresariales como Windows 2000, OS/390, Solaris, HP

versiones de Unix hasta en sistemas orientados más a ordenadores personales como Mac OS, Windows

9x ó Linux, y en sistemas operativos para dispos

Hasta la fecha, .Net corre solamente sobre sistemas operativos de Microsoft (aunque esta situación

podría cambiar en el futuro), siendo J2EE el único entorno de desarrollo que ofrece una independencia

real de la plataforma.

La tecnología Java es una tecnología abierta, en el sentido de que el código de la plataforma

completa puede ser obtenido, revisado y estudiado por cualquiera que esté interesado, y se basa en

gran parte en estándares de organizaciones de

posibilita que los desarrolladores puedan conocer y entender completamente cómo hace las cosas

Java y aprovecharlo para sus aplicaciones.

Por otro lado, al basarse en estándares empresariales, simplifica la

múltiples compañías.

En contraposición, solo el código fuente del lenguaje C# de la plataforma .Net ha sido abierto al

público general.

Aunque Java fue creado originalmente por Sun MicroSystems, lo cierto es que J2EE es ahor

de la colaboración de muchas empresas y organizaciones de todo tipo.

La plataforma .Net es el producto de una sola compañía, que aunque haya implementado algunos

estándares en .Net y esté intentando conseguir que ciertas tecnologías se conv

"oficiales", no puede tener el mismo consenso que J2EE

público.

La tecnología Java goza ya de una cierta veteranía,

y situaciones empresariales distintas, mientras que .Net ha visto oficialmente la luz

relativamente reciente.

Podemos perfectamente comparar un servicio web creado bajo la plataforma Visual Studio y un

Servicio web creado bajo la plataforma J2EE.

Para uso exclusivo de los alumnos de CETICSA S.L.

Por otro lado, .Net posibilita así que programadores de terceros lenguajes pasen a esta pla

reduciendo el tiempo de aprendizaje y entrenamiento.

Las herramientas de desarrollo incluidas por Microsoft en Visual Studio .Net son mucho más simples,

intuitivas y sencillas de manejar que las herramientas de desarrollo equivalentes en J2EE sum

por otras empresas (entre ellas la propia Sun).

avanzado se manejará rápidamente con la programación del interface

de usuario en Visual Studio .Net, al igual que sucedía con versiones anteriores de Visual Studio.

C# es un lenguaje interesante, fácil de aprender por los programadores de Java (de hecho, Microsoft

ofrece un conversor de Java a C#), que en caso de estandarizarse podría resultar un lenguaje muy

conveniente para ciertas tareas de programación en diferentes plataformas.

Las implementaciones de J2EE pueden adquirirse a distintas compañías, mientras que .Net sólo a

El hecho de que haya distintas organizaciones implementando J2EE ofrece mayor variedad para los

existencia de una cierta competencia entre ellas para obtener mejores

te en el caso de Microsoft y Visual Studio .Net.

Debido al proceso evolutivo de los productos de Microsoft, y en muchos casos, por motivos de

guridad frente a virus informáticos de los productos de Microsoft es menor que los

basados en Java, pues desde un comienzo Java se fundamentó en un estricto modelo de seguridad.

Como se ha escrito ya, las aplicaciones Java pueden correr en una amplia gam

operativos (desde sistemas empresariales como Windows 2000, OS/390, Solaris, HP

versiones de Unix hasta en sistemas orientados más a ordenadores personales como Mac OS, Windows

9x ó Linux, y en sistemas operativos para dispositivos móviles) y de arquitecturas hardware.

Hasta la fecha, .Net corre solamente sobre sistemas operativos de Microsoft (aunque esta situación

podría cambiar en el futuro), siendo J2EE el único entorno de desarrollo que ofrece una independencia

La tecnología Java es una tecnología abierta, en el sentido de que el código de la plataforma

completa puede ser obtenido, revisado y estudiado por cualquiera que esté interesado, y se basa en

gran parte en estándares de organizaciones de normalización y estándares empresariales.

posibilita que los desarrolladores puedan conocer y entender completamente cómo hace las cosas

y aprovecharlo para sus aplicaciones.

Por otro lado, al basarse en estándares empresariales, simplifica la integración con productos de

En contraposición, solo el código fuente del lenguaje C# de la plataforma .Net ha sido abierto al

Aunque Java fue creado originalmente por Sun MicroSystems, lo cierto es que J2EE es ahor

de la colaboración de muchas empresas y organizaciones de todo tipo.

La plataforma .Net es el producto de una sola compañía, que aunque haya implementado algunos

estándares en .Net y esté intentando conseguir que ciertas tecnologías se conv

"oficiales", no puede tener el mismo consenso que J2EE, sobre todo porque casi todo su código no es

oza ya de una cierta veteranía, J2EE y ha probado su eficacia en muchos entornos

ales distintas, mientras que .Net ha visto oficialmente la luz

Podemos perfectamente comparar un servicio web creado bajo la plataforma Visual Studio y un

Servicio web creado bajo la plataforma J2EE.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Por otro lado, .Net posibilita así que programadores de terceros lenguajes pasen a esta plataforma

Las herramientas de desarrollo incluidas por Microsoft en Visual Studio .Net son mucho más simples,

intuitivas y sencillas de manejar que las herramientas de desarrollo equivalentes en J2EE suministradas

avanzado se manejará rápidamente con la programación del interface

de usuario en Visual Studio .Net, al igual que sucedía con versiones anteriores de Visual Studio.

C# es un lenguaje interesante, fácil de aprender por los programadores de Java (de hecho, Microsoft

ofrece un conversor de Java a C#), que en caso de estandarizarse podría resultar un lenguaje muy

Las implementaciones de J2EE pueden adquirirse a distintas compañías, mientras que .Net sólo a

El hecho de que haya distintas organizaciones implementando J2EE ofrece mayor variedad para los

existencia de una cierta competencia entre ellas para obtener mejores

Debido al proceso evolutivo de los productos de Microsoft, y en muchos casos, por motivos de

guridad frente a virus informáticos de los productos de Microsoft es menor que los

basados en Java, pues desde un comienzo Java se fundamentó en un estricto modelo de seguridad.

Como se ha escrito ya, las aplicaciones Java pueden correr en una amplia gama de sistemas

operativos (desde sistemas empresariales como Windows 2000, OS/390, Solaris, HP-UX, IRIX u otras

versiones de Unix hasta en sistemas orientados más a ordenadores personales como Mac OS, Windows

itivos móviles) y de arquitecturas hardware.

Hasta la fecha, .Net corre solamente sobre sistemas operativos de Microsoft (aunque esta situación

podría cambiar en el futuro), siendo J2EE el único entorno de desarrollo que ofrece una independencia

La tecnología Java es una tecnología abierta, en el sentido de que el código de la plataforma

completa puede ser obtenido, revisado y estudiado por cualquiera que esté interesado, y se basa en

normalización y estándares empresariales. Esto

posibilita que los desarrolladores puedan conocer y entender completamente cómo hace las cosas

integración con productos de

En contraposición, solo el código fuente del lenguaje C# de la plataforma .Net ha sido abierto al

Aunque Java fue creado originalmente por Sun MicroSystems, lo cierto es que J2EE es ahora el producto

La plataforma .Net es el producto de una sola compañía, que aunque haya implementado algunos

estándares en .Net y esté intentando conseguir que ciertas tecnologías se conviertan en estándares

sobre todo porque casi todo su código no es

J2EE y ha probado su eficacia en muchos entornos

ales distintas, mientras que .Net ha visto oficialmente la luz de una forma

Podemos perfectamente comparar un servicio web creado bajo la plataforma Visual Studio y un

Page 22: Java Modulo 7

Al compararlos, veremos que los esquemas SOAP son los mismos y que la arquitectura de comunicación

es la misma.

Si visualizamos el código de un servicio web creado en Net, veremos lo siguiente:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

namespace WebService1

{

/// <summary>

/// Descripción breve de Service1

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

// Para permitir que se llame a este servicio Web desde un script, usando

marca de_

comentario de la línea siguiente.

// [System.Web.Script.Services.ScriptService]

public class Service1 : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

}

}

Cuando probemos el servicio, veremos una pantalla en el explorador web y

métodos que utiliza dicho servicio.

Como podremos comprobar, los servicios creados en la plataforma de Visual Studio utilizan la extensión

de archivo asmx y no vemos el esquema WSDL.

Si queremos visualizar el esquema WSDL bastaría c

poder representarlo.

http://localhost:7722/Service1.asmx?wsdl

Este es el esquema resultante de un servicio web en NET:

Para uso exclusivo de los alumnos de CETICSA S.L.

emos que los esquemas SOAP son los mismos y que la arquitectura de comunicación

Si visualizamos el código de un servicio web creado en Net, veremos lo siguiente:

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

// Para permitir que se llame a este servicio Web desde un script, usando ASP.NET AJAX, quite la

// [System.Web.Script.Services.ScriptService]

public class Service1 : System.Web.Services.WebService

Cuando probemos el servicio, veremos una pantalla en el explorador web y

Como podremos comprobar, los servicios creados en la plataforma de Visual Studio utilizan la extensión

de archivo asmx y no vemos el esquema WSDL.

Si queremos visualizar el esquema WSDL bastaría con escribir lo siguiente en el explorador web para

http://localhost:7722/Service1.asmx?wsdl

Este es el esquema resultante de un servicio web en NET:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

emos que los esquemas SOAP son los mismos y que la arquitectura de comunicación

Si visualizamos el código de un servicio web creado en Net, veremos lo siguiente:

ASP.NET AJAX, quite la

Cuando probemos el servicio, veremos una pantalla en el explorador web y que nos mostrará los

Como podremos comprobar, los servicios creados en la plataforma de Visual Studio utilizan la extensión

on escribir lo siguiente en el explorador web para

Page 23: Java Modulo 7

Si invocamos el método HelloWorld del servicio, veremos

Ahora vamos a visualizar la arquitectura de un servicio web creado en Java. Realizaremos el mismo tipo

de servicio con un método también llamado HelloWorld y

package paquete;

import javax.jws.WebService;

import javax.jws.WebMethod;

Para uso exclusivo de los alumnos de CETICSA S.L.

Si invocamos el método HelloWorld del servicio, veremos el resultado expresados en datos XML.

Ahora vamos a visualizar la arquitectura de un servicio web creado en Java. Realizaremos el mismo tipo

de servicio con un método también llamado HelloWorld y que devolverá un mensaje del tipo String.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

el resultado expresados en datos XML.

Ahora vamos a visualizar la arquitectura de un servicio web creado en Java. Realizaremos el mismo tipo

que devolverá un mensaje del tipo String.

Page 24: Java Modulo 7

import javax.jws.WebParam;

@WebService(serviceName = "NewWebService1")

public class NewWebService1 {

/** This is a sample web service operation */

@WebMethod(operationName = "helloworld")

public String helloworld(@WebParam(name = "name") String txt) {

return "Hello " + txt + " !";

}

}

Cuando probemos el servicio, (como en net) ver

mostrará los métodos que utiliza dicho servicio.

La información del esquema WSDL será la misma que en una aplicación realizada con Visual Studio.

La extensión para un Servicio Web creado en Java será wsdl.

Para uso exclusivo de los alumnos de CETICSA S.L.

@WebService(serviceName = "NewWebService1")

/** This is a sample web service operation */

@WebMethod(operationName = "helloworld")

public String helloworld(@WebParam(name = "name") String txt) {

Cuando probemos el servicio, (como en net) veremos una pantalla en el explorador web y que nos

mostrará los métodos que utiliza dicho servicio.

La información del esquema WSDL será la misma que en una aplicación realizada con Visual Studio.

La extensión para un Servicio Web creado en Java será wsdl.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

emos una pantalla en el explorador web y que nos

La información del esquema WSDL será la misma que en una aplicación realizada con Visual Studio.

Page 25: Java Modulo 7

Si invocamos el método, la visualización es diferente, pero el XML generado en la salida será el mismo

que un servicio web realizado en otro lenguaje.

Podemos visualizar la solicitud SOAP

Y podremos visualizar la respuesta que nos ofrece el servici

Ver Video:

en el Modulo 7. Unidad 2, en la plataforma elearning.

Para uso exclusivo de los alumnos de CETICSA S.L.

Si invocamos el método, la visualización es diferente, pero el XML generado en la salida será el mismo

que un servicio web realizado en otro lenguaje.

Podemos visualizar la solicitud SOAP

Y podremos visualizar la respuesta que nos ofrece el servicio.

Video: Arquitectura Web Services,

en el Modulo 7. Unidad 2, en la plataforma elearning.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Si invocamos el método, la visualización es diferente, pero el XML generado en la salida será el mismo

en el Modulo 7. Unidad 2, en la plataforma elearning.

Page 26: Java Modulo 7

Unidad 3:

Objetivos

� Conocer los conceptos de los documentos XML.

� Analizar las características de XML con documentos bien formados y su

� Comprender la utilización de documentos XML y Schemas para la representación y estructura de

datos dentro de los Servicios Web.

Introducción

XML significa eXtensible Markup Language, o lenguaje de anotación extensible. Ya conocemos el

lenguaje HTML (hypertext markup language), lenguaje de anotación para página webs que permite

navegación tipo hipertexto, sin embargo, XML no es sólo un lenguaje, es una forma de especificar

lenguajes, de ahí lo de extensible.

Todo lenguaje que se exprese de una

lenguaje para hacer mejores páginas web, sino un lenguaje para información auto

auto-descrita si las etiquetas están correctamente creadas.

XML se inició como un subconjunto de SGML (Structured Generalized Markup Language), un standard

ISO para documentos estructurados que es sumamente complejo y que se utilizaba para poder servir

documentos en internet.

XML es una implementación de SGML simplificado, de manera que una apli

comprender SGML completo para interpretar un documento, sino sólo el subconjunto que se defina.

Los editores SGML, sin embargo, pueden comprender XML.

No debemos pensar que XML se utiliza para la creación de páginas web, o algo parecido

web.

XML es un lenguaje que cambia el paradigma de programación, que como ya sabemos, está basada

en funciones u objetos, y dicha programación utiliza los documentos para representar la información.

XML se puede utilizar para cambiar total

pensar en un programa que recibe unas entradas y produce unas salidas, se envia un documento que

genera otro documento, o bien programas que toman documentos y producen otros documentos.

Por eso, en general, exceptuando los entornos de servicios web, lo normal es que el documento XML se

use en el servidor, y se sirva otro tipo de documentos traducidos a HTML, por ejemplo, que se obtienen a

base de una serie de transformaciones.

Precisamente, todo este planteamiento hace que los documentos XML se usen dentro de entornos de

aplicaciones.

Este entorno de aplicaciones permite publicar documentos XML, que, antes de ser enviados al cliente,

sufrirán una serie de transformaciones para adaptarlo a los re

Algunos ejemplos de entorno de aplicaciones son el Cocoon, un entorno basado en Java libre, que

permite no sólo publicar páginas XML, sino también incluir programas dentro de las páginas (XSP). No se

caracteriza por su velocidad ni amigabilidad, pero es excelente como entorno de desarrollo. Otra

alternativa gratuita es el AxKit, escrito en Perl.

Para uso exclusivo de los alumnos de CETICSA S.L.

Unidad 3: Aplicando XML

Conocer los conceptos de los documentos XML.

Analizar las características de XML con documentos bien formados y su validación.

Comprender la utilización de documentos XML y Schemas para la representación y estructura de

datos dentro de los Servicios Web.

XML significa eXtensible Markup Language, o lenguaje de anotación extensible. Ya conocemos el

e HTML (hypertext markup language), lenguaje de anotación para página webs que permite

navegación tipo hipertexto, sin embargo, XML no es sólo un lenguaje, es una forma de especificar

Todo lenguaje que se exprese de una forma determinada puede ser XML. Por lo tanto, XML no es un

lenguaje para hacer mejores páginas web, sino un lenguaje para información auto

descrita si las etiquetas están correctamente creadas.

o de SGML (Structured Generalized Markup Language), un standard

ISO para documentos estructurados que es sumamente complejo y que se utilizaba para poder servir

XML es una implementación de SGML simplificado, de manera que una apli

comprender SGML completo para interpretar un documento, sino sólo el subconjunto que se defina.

Los editores SGML, sin embargo, pueden comprender XML.

No debemos pensar que XML se utiliza para la creación de páginas web, o algo parecido

XML es un lenguaje que cambia el paradigma de programación, que como ya sabemos, está basada

en funciones u objetos, y dicha programación utiliza los documentos para representar la información.

XML se puede utilizar para cambiar totalmente el paradigma de publicación de información. Podemos

pensar en un programa que recibe unas entradas y produce unas salidas, se envia un documento que

genera otro documento, o bien programas que toman documentos y producen otros documentos.

en general, exceptuando los entornos de servicios web, lo normal es que el documento XML se

use en el servidor, y se sirva otro tipo de documentos traducidos a HTML, por ejemplo, que se obtienen a

base de una serie de transformaciones.

este planteamiento hace que los documentos XML se usen dentro de entornos de

Este entorno de aplicaciones permite publicar documentos XML, que, antes de ser enviados al cliente,

sufrirán una serie de transformaciones para adaptarlo a los requisitos del entorno.

Algunos ejemplos de entorno de aplicaciones son el Cocoon, un entorno basado en Java libre, que

permite no sólo publicar páginas XML, sino también incluir programas dentro de las páginas (XSP). No se

amigabilidad, pero es excelente como entorno de desarrollo. Otra

alternativa gratuita es el AxKit, escrito en Perl.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

validación.

Comprender la utilización de documentos XML y Schemas para la representación y estructura de

XML significa eXtensible Markup Language, o lenguaje de anotación extensible. Ya conocemos el

e HTML (hypertext markup language), lenguaje de anotación para página webs que permite

navegación tipo hipertexto, sin embargo, XML no es sólo un lenguaje, es una forma de especificar

forma determinada puede ser XML. Por lo tanto, XML no es un

lenguaje para hacer mejores páginas web, sino un lenguaje para información auto-descrita, o al menos,

o de SGML (Structured Generalized Markup Language), un standard

ISO para documentos estructurados que es sumamente complejo y que se utilizaba para poder servir

XML es una implementación de SGML simplificado, de manera que una aplicación no necesita

comprender SGML completo para interpretar un documento, sino sólo el subconjunto que se defina.

No debemos pensar que XML se utiliza para la creación de páginas web, o algo parecido a las páginas

XML es un lenguaje que cambia el paradigma de programación, que como ya sabemos, está basada

en funciones u objetos, y dicha programación utiliza los documentos para representar la información.

mente el paradigma de publicación de información. Podemos

pensar en un programa que recibe unas entradas y produce unas salidas, se envia un documento que

genera otro documento, o bien programas que toman documentos y producen otros documentos.

en general, exceptuando los entornos de servicios web, lo normal es que el documento XML se

use en el servidor, y se sirva otro tipo de documentos traducidos a HTML, por ejemplo, que se obtienen a

este planteamiento hace que los documentos XML se usen dentro de entornos de

Este entorno de aplicaciones permite publicar documentos XML, que, antes de ser enviados al cliente,

quisitos del entorno.

Algunos ejemplos de entorno de aplicaciones son el Cocoon, un entorno basado en Java libre, que

permite no sólo publicar páginas XML, sino también incluir programas dentro de las páginas (XSP). No se

amigabilidad, pero es excelente como entorno de desarrollo. Otra

Page 27: Java Modulo 7

Como alternativas de pago están el Bea Weblogic y el IBM WebSphere Transcoding Publisher. Podemos

incluir multitud de ejemplos basados en

basado en PHP, que incluye facilidades para ser usado a través del protocolo SOAP, un protocolo de

acceso remoto a documentos basado en XML.

Lo más normal es que la información esté almacenada en una base de datos, se convierta a XML y

luego se transforme para servirlo al cliente.

Dentro de estos entornos de desarrollo y/o publicación, o usándolo de cualquier otra forma, XML tiene

gran número de aplicaciones.

La mayor parte de los portales y sitios de noticias ya están basados en XML, porque permite estructurar

la información y luego aplicarle fácilmente transformaciones para su presentación.

Podemos poner como ejemplo las noticias RSS que in

internet. Es un ejemplo muy claro sobre la utilización de XML en internet y la facilidad que puede ofrecer

para la tecnología.

RSS es una forma muy sencilla para que podamos recibir, directamente en el ordenad

página web online (a través de un lector RSS) información actualizada sobre páginas web, sin

necesidad de tener que visitarlas una a una.

RSS utiliza una estructura específica y que no puede variar, por lo tanto, podemos afirmar que cualquier

rss tiene la misma serie de etiquetas, pero su contenido cambiará respecto al resto.

Esta información se actualiza automáticamente, sin incluir ninguna acción posterior y sin coste de

programación, simplemente se debe seguir la estructura y cambiar el cont

Para recibir las noticias RSS, el portal web deberá tener disponible el servicio RSS y podremos utilizar

páginas web o lectores Rss.

Gracias al RSS, no tendremos que visitar una a una todas las páginas web que ofrezcan información que

nos interesa para ver si han cambiado los contenidos o visualizar si se ha añadido algún artículo

interesante.

Estas páginas nos informarán a nosotros a través de un lector de RSS.

Cuando ingresemos una dirección a un lector RSS (o Rss Reader), estaremos automáticame

informados sobre todas las novedades que se han producido en todas las páginas web que hayamos

dado de alta.

Gracias al RSS, tendremos reunidas en un mismo lugar y a un solo clic de distancia, toda la información

actualizada de las páginas web (Fuentes

Podemos poner como ejemplo cualquier publicación de prensa via web. Por ejemplo, podemos

visualizar los rss de un periódico digital como El Pais y veremos lo siguiente:

Para uso exclusivo de los alumnos de CETICSA S.L.

Como alternativas de pago están el Bea Weblogic y el IBM WebSphere Transcoding Publisher. Podemos

incluir multitud de ejemplos basados en otros lenguajes tales como Krysalis, un entorno de publicación

basado en PHP, que incluye facilidades para ser usado a través del protocolo SOAP, un protocolo de

acceso remoto a documentos basado en XML.

Lo más normal es que la información esté almacenada en una base de datos, se convierta a XML y

luego se transforme para servirlo al cliente.

Dentro de estos entornos de desarrollo y/o publicación, o usándolo de cualquier otra forma, XML tiene

La mayor parte de los portales y sitios de noticias ya están basados en XML, porque permite estructurar

la información y luego aplicarle fácilmente transformaciones para su presentación.

Podemos poner como ejemplo las noticias RSS que incluyen la mayoría de medios de publicación de

internet. Es un ejemplo muy claro sobre la utilización de XML en internet y la facilidad que puede ofrecer

RSS es una forma muy sencilla para que podamos recibir, directamente en el ordenad

página web online (a través de un lector RSS) información actualizada sobre páginas web, sin

necesidad de tener que visitarlas una a una.

RSS utiliza una estructura específica y que no puede variar, por lo tanto, podemos afirmar que cualquier

rss tiene la misma serie de etiquetas, pero su contenido cambiará respecto al resto.

Esta información se actualiza automáticamente, sin incluir ninguna acción posterior y sin coste de

programación, simplemente se debe seguir la estructura y cambiar el contenido.

Para recibir las noticias RSS, el portal web deberá tener disponible el servicio RSS y podremos utilizar

Gracias al RSS, no tendremos que visitar una a una todas las páginas web que ofrezcan información que

para ver si han cambiado los contenidos o visualizar si se ha añadido algún artículo

Estas páginas nos informarán a nosotros a través de un lector de RSS.

Cuando ingresemos una dirección a un lector RSS (o Rss Reader), estaremos automáticame

informados sobre todas las novedades que se han producido en todas las páginas web que hayamos

Gracias al RSS, tendremos reunidas en un mismo lugar y a un solo clic de distancia, toda la información

actualizada de las páginas web (Fuentes o canales RSS) que más nos interesan.

Podemos poner como ejemplo cualquier publicación de prensa via web. Por ejemplo, podemos

visualizar los rss de un periódico digital como El Pais y veremos lo siguiente:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Como alternativas de pago están el Bea Weblogic y el IBM WebSphere Transcoding Publisher. Podemos

otros lenguajes tales como Krysalis, un entorno de publicación

basado en PHP, que incluye facilidades para ser usado a través del protocolo SOAP, un protocolo de

Lo más normal es que la información esté almacenada en una base de datos, se convierta a XML y

Dentro de estos entornos de desarrollo y/o publicación, o usándolo de cualquier otra forma, XML tiene

La mayor parte de los portales y sitios de noticias ya están basados en XML, porque permite estructurar

la información y luego aplicarle fácilmente transformaciones para su presentación.

cluyen la mayoría de medios de publicación de

internet. Es un ejemplo muy claro sobre la utilización de XML en internet y la facilidad que puede ofrecer

RSS es una forma muy sencilla para que podamos recibir, directamente en el ordenador o en una

página web online (a través de un lector RSS) información actualizada sobre páginas web, sin

RSS utiliza una estructura específica y que no puede variar, por lo tanto, podemos afirmar que cualquier

rss tiene la misma serie de etiquetas, pero su contenido cambiará respecto al resto.

Esta información se actualiza automáticamente, sin incluir ninguna acción posterior y sin coste de

enido.

Para recibir las noticias RSS, el portal web deberá tener disponible el servicio RSS y podremos utilizar

Gracias al RSS, no tendremos que visitar una a una todas las páginas web que ofrezcan información que

para ver si han cambiado los contenidos o visualizar si se ha añadido algún artículo

Cuando ingresemos una dirección a un lector RSS (o Rss Reader), estaremos automáticamente

informados sobre todas las novedades que se han producido en todas las páginas web que hayamos

Gracias al RSS, tendremos reunidas en un mismo lugar y a un solo clic de distancia, toda la información

Podemos poner como ejemplo cualquier publicación de prensa via web. Por ejemplo, podemos

Page 28: Java Modulo 7

Si entramos en cualquiera de los enlaces (despecífico para una página web:

En realidad, lo que estamos visualizando es un documento XML con una estructura específica. Dicha estructura está basada en un esquema que indica como debe formarse di

Si visualizamos el código fuente, podremos comprobar que tiene una estructura xml:

<?xml version="1.0" encoding="iso-8859<rss version="2.0"> <channel> <title>Titulo del RSS</title>

<link>Vinculo de acceso al RSS</link><description>Descripcion del conjunto</description><lastBuildDate>Fecha de actualización</lastBuildDate>

<language>es-es</language> <image> <url>Vinculo de la imagen</url> <title>Titulo de la imagen</title> </image> <item> <title>Noticia 1</title> <link>Vinculo 2</link>

Para uso exclusivo de los alumnos de CETICSA S.L.

Si entramos en cualquiera de los enlaces (documentos RSS), veremos la información con un formato

En realidad, lo que estamos visualizando es un documento XML con una estructura específica. Dicha estructura está basada en un esquema que indica como debe formarse dicho documento.

Si visualizamos el código fuente, podremos comprobar que tiene una estructura xml:

8859-1"?>

<link>Vinculo de acceso al RSS</link><description>Descripcion del conjunto</description><lastBuildDate>Fecha de actualización</lastBuildDate>

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

ocumentos RSS), veremos la información con un formato

En realidad, lo que estamos visualizando es un documento XML con una estructura específica. Dicha cho documento.

Si visualizamos el código fuente, podremos comprobar que tiene una estructura xml:

Page 29: Java Modulo 7

<description>Descripcion de la noticia</description><author>Nombre del autor</author><pubDate>Fecha de publicación</pubDate>

</item> <item> <title>Noticia 2</title> <link>Vinculo 2</link>

<description>Descripcion de la noticia</description><author>Nombre del autor</author><pubDate>Fecha de publicación</pubDate>

</item> </channel> </rss>

La estructura es la misma para cualquier documrss tendrá los mismos elementos pero con diferente información. Gracias a esta estructura, podemos afirmar que todos los documentos rss serán leidos de la misma forma, porque su estructura no cambi

Si probamos a visualizar cualquier otro artículo RSS, podremos comprobar que tendrá la misma estructura, aunque con diferentes noticias.

Lo importante de la afirmación de lo que acabamos de analizar con las noticias rss es su importancia para poder ofrecer información en un formato accesible y que está compuesto simplemente por etiquetas ilustrativas.

XML no tiene un formato cerrado ni un entorno sobre el cual se deba crear. Para editar documentos XML, al igual que para hacerlo con HTML, se puede hace de dos formas: editándolos como cualquier otro fichero ASCII (el bloc de notas de Windows, por ejemplo), utilizando cualquier editor estructurado como UltraEdit, o bien usar un editor específico para XML, que entiende las partlenguaje y ofrece ayuda en el momento de escribir el documento como puede ser el cierre de etiquetas de jerarquia.

Un ejemplo de la estructura de un documento XML sería el siguiente:

En el momento de definir las etiquetas XML, debemos dedecir, diferencia mayúsculas de minúsculas en los elementos y en los atributos del documento.

Para uso exclusivo de los alumnos de CETICSA S.L.

<description>Descripcion de la noticia</description><author>Nombre del autor</author><pubDate>Fecha de publicación</pubDate>

<description>Descripcion de la noticia</description><author>Nombre del autor</author><pubDate>Fecha de publicación</pubDate>

La estructura es la misma para cualquier documento rss, por lo tanto, cualquier publicación de noticias rss tendrá los mismos elementos pero con diferente información. Gracias a esta estructura, podemos afirmar que todos los documentos rss serán leidos de la misma forma, porque su estructura no cambi

Si probamos a visualizar cualquier otro artículo RSS, podremos comprobar que tendrá la misma estructura, aunque con diferentes noticias.

Lo importante de la afirmación de lo que acabamos de analizar con las noticias rss es su importancia recer información en un formato accesible y que está compuesto simplemente por

Estructura de documentos

XML no tiene un formato cerrado ni un entorno sobre el cual se deba crear. Para editar documentos cerlo con HTML, se puede hace de dos formas: editándolos como cualquier

otro fichero ASCII (el bloc de notas de Windows, por ejemplo), utilizando cualquier editor estructurado como UltraEdit, o bien usar un editor específico para XML, que entiende las partlenguaje y ofrece ayuda en el momento de escribir el documento como puede ser el cierre de

Un ejemplo de la estructura de un documento XML sería el siguiente:

En el momento de definir las etiquetas XML, debemos de saber que el lenguaje esw casesensitive, es decir, diferencia mayúsculas de minúsculas en los elementos y en los atributos del documento.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

ento rss, por lo tanto, cualquier publicación de noticias rss tendrá los mismos elementos pero con diferente información. Gracias a esta estructura, podemos afirmar que todos los documentos rss serán leidos de la misma forma, porque su estructura no cambiará.

Si probamos a visualizar cualquier otro artículo RSS, podremos comprobar que tendrá la misma

Lo importante de la afirmación de lo que acabamos de analizar con las noticias rss es su importancia recer información en un formato accesible y que está compuesto simplemente por

documentos XML

XML no tiene un formato cerrado ni un entorno sobre el cual se deba crear. Para editar documentos cerlo con HTML, se puede hace de dos formas: editándolos como cualquier

otro fichero ASCII (el bloc de notas de Windows, por ejemplo), utilizando cualquier editor estructurado como UltraEdit, o bien usar un editor específico para XML, que entiende las particularidades del lenguaje y ofrece ayuda en el momento de escribir el documento como puede ser el cierre de

saber que el lenguaje esw casesensitive, es decir, diferencia mayúsculas de minúsculas en los elementos y en los atributos del documento.

Page 30: Java Modulo 7

Los mismos entornos incluyen facilidades para validar el código XML resultante, pero esto se puede hacer también usando analizadores XML, de los cuales hay muchos, de bastante buena calidad, y la mayor parte de ellos gratuitos.

Uno de los más conocidos y usados es el Xerces, del cual hay versiones en Java, en Perl y en C++. Es adecuadamente rápido, y además incorpora tademás se puede usar desde Internet, es el XParse de Jeremie, que analiza directamente el documento y te lo presenta en forma de árbol, aunque elementos como exploradores web también incorporan validaciones de documentos XML, como por ejemplo, Internet Explorer.

La mayor parte de los validadores trabajan de forma independiente, y se pueden utilizar como librerías desde el lenguaje de programación de propia elección.

En muchos casos, como en el caso de C#definición de una clase, o bien, al revés, una clase o un objeto de una clase se puede generar automáticamente a partir de XML o a partir de un fichero.

Si nos centramos en los servicios web, podemoscreadas para ser expuestas hacia el cliente.

Podemos visualizar en éste código una respuesta de un documento XML generado a partir de un servicio web realizado en Java.

<?xml version="1.0" encoding="UTF-8"<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body>

<ns2:MensajeResponse xmlns:ns2="http://paquetewebservice/"><return>Servicio Web de Java</return>

</ns2:MensajeResponse> </S:Body> </S:Envelope>

Como lenguaje de anotación, las sentencias en XML consisten en una serie de etiquetas (llamadas elementos o nodos) con una serie de modificadores (llamados atributos).

Las etiquetas pueden estar anidadas unas dentro de otras, pero toda etiqueta que se acerrar de una forma jerarquica, es decir, siempre en el mismo orden.

En caso de que un elemento no tenga pareja (por no tener ningún contenido dentro), se le denomina elemento vacío y se indica con un simbolo por ejemplo el siguiente código:

<?xml version="1.0" encoding='iso-8859<listacompra> <productos id='limpieza'> <producto>Fairy</producto>

<producto>Lavavajilla</producto> </productos> <productos id='alimentacion'> <producto>huevos</producto>

<producto>mantequilla</producto> <producto></producto> </productos> </listacompra>

Todos los documentos XML deben estar bien formados, y este es el requisito mínimo que deben cumplir los documentos.

Para uso exclusivo de los alumnos de CETICSA S.L.

Los mismos entornos incluyen facilidades para validar el código XML resultante, pero esto se puede do analizadores XML, de los cuales hay muchos, de bastante buena calidad, y la

Uno de los más conocidos y usados es el Xerces, del cual hay versiones en Java, en Perl y en C++. Es adecuadamente rápido, y además incorpora todos los últimos estándares del W3. Otra opción, que además se puede usar desde Internet, es el XParse de Jeremie, que analiza directamente el documento y te lo presenta en forma de árbol, aunque elementos como exploradores web también incorporan

ones de documentos XML, como por ejemplo, Internet Explorer.

La mayor parte de los validadores trabajan de forma independiente, y se pueden utilizar como librerías desde el lenguaje de programación de propia elección.

En muchos casos, como en el caso de C#, el XML se puede generar automáticamente a partir de la definición de una clase, o bien, al revés, una clase o un objeto de una clase se puede generar automáticamente a partir de XML o a partir de un fichero.

Si nos centramos en los servicios web, podemos generar documentos xml que se basan en las clases creadas para ser expuestas hacia el cliente.

Podemos visualizar en éste código una respuesta de un documento XML generado a partir de un

8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

<ns2:MensajeResponse xmlns:ns2="http://paquetewebservice/"><return>Servicio Web de Java</return>

Como lenguaje de anotación, las sentencias en XML consisten en una serie de etiquetas (llamadas elementos o nodos) con una serie de modificadores (llamados atributos).

Las etiquetas pueden estar anidadas unas dentro de otras, pero toda etiqueta que se acerrar de una forma jerarquica, es decir, siempre en el mismo orden.

En caso de que un elemento no tenga pareja (por no tener ningún contenido dentro), se le denomina elemento vacío y se indica con un simbolo / al final. Los elementos se agrupan en documentos, como

8859-1' ?>

<producto>Lavavajilla</producto>

<producto>mantequilla</producto>

Todos los documentos XML deben estar bien formados, y este es el requisito mínimo que deben cumplir

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Los mismos entornos incluyen facilidades para validar el código XML resultante, pero esto se puede do analizadores XML, de los cuales hay muchos, de bastante buena calidad, y la

Uno de los más conocidos y usados es el Xerces, del cual hay versiones en Java, en Perl y en C++. Es odos los últimos estándares del W3. Otra opción, que

además se puede usar desde Internet, es el XParse de Jeremie, que analiza directamente el documento y te lo presenta en forma de árbol, aunque elementos como exploradores web también incorporan

La mayor parte de los validadores trabajan de forma independiente, y se pueden utilizar como librerías

, el XML se puede generar automáticamente a partir de la definición de una clase, o bien, al revés, una clase o un objeto de una clase se puede generar

generar documentos xml que se basan en las clases

Podemos visualizar en éste código una respuesta de un documento XML generado a partir de un

Como lenguaje de anotación, las sentencias en XML consisten en una serie de etiquetas (llamadas

Las etiquetas pueden estar anidadas unas dentro de otras, pero toda etiqueta que se abra se tiene que

En caso de que un elemento no tenga pareja (por no tener ningún contenido dentro), se le denomina agrupan en documentos, como

Todos los documentos XML deben estar bien formados, y este es el requisito mínimo que deben cumplir

Page 31: Java Modulo 7

Esta afirmación significa que debemos cumplor una serie de requisitos:

� Debemos indicar la codificación de caracteres que el documento XML utilizará, eso se realiza mediante la primera etiqueta del documento y que tiene como atributo encoding. Dicha codificación indicará los caracteres que podremos incluir dentro de las etiquetas del documento.

� Todas las etiquetas deben tener una jerarquía, es decir, todos los elementos que contengan datos de tipo carácter deben tener etiquetas de principio y fin.

� Todos los valores de los atributos deben ir entrecomillados (el carácter comilla simple puede utilizarse si el valor contiene caracteres comillas dobles, y viceversa.

� Cualquier elemento VACÍO (por ejemplo aquellos que no tienen etiqueta final como y otros tipos de HTM

vacíos añadiéndo una etiqueta de fin, tal como vemos en uno de los elementos producto.

� No podemos utilizar caracteres especiales que formen la estructura del documento, como por ejemplo si necesitamos incldichos caracteres, como por ejemplo &lt; o &amp;.

� Los elementos deben anidar dentro de sí sus propiedades (no se deben sobreponer etiquetas, como en documentos SGML).

� Los nombres de las etiquetasincluyendo los caracteres - y :, aunque este último tiene un significado especial.

Todo documento XML debe estar bien formado para poder ser utilizado y que sea funcional.

XML Namespace

Los espacios de nombres de un documento nos permiten poder definir la procedencia de un documento como también la estructura que sigue un documento.

Si en cualquier documento fueramos definiendo etiquetas sin sentido, a pesar de estar bien formado, el documento acabaría siendo un caos de diferentes etiquetas procedentes de diferentes sitios, y, lo que es peor, de etiquetas con el mismo nombre que, en realidad, significan cosas diferentes.

El concepto de espacios de nombres (namespaces) permite particionar el conjunto nombres posibles, de forma que se pueda definir a qué zona de ese espacio corresponde una etiqueta.

De esta forma, etiquetas con el mismo nombre, pero definidas por dos autores diferentes, pueden diferenciarse en el espacio de nombres.

El espacio de nombres no es esencial en todos los documentos, pero resulta útil cuando se usan etiquetas procedentes de diferentes procedencias (por ejemplo, etiquetas nuevas dentro de un documento XML), o etiquetas que se quieren procesar de forma diferente.

El espacio de nombres de una etiqueta se indica como

Por ejemplo, se usan espacios de nombres en el documento siguiente:

<?xml version="1.0" encoding='iso-8859<milista:listacompra xmlns:milista='http://www.ejemploxml/listacompra'> <milista:productos id='limpieza'>

<milista:producto>Fairy</milista:producto><milista:producto>Lavavajilla</milista:producto>

</milista:productos> <milista:productos id='alimentacion'>

Para uso exclusivo de los alumnos de CETICSA S.L.

afirmación significa que debemos cumplor una serie de requisitos:

Debemos indicar la codificación de caracteres que el documento XML utilizará, eso se realiza mediante la primera etiqueta del documento y que tiene como atributo encoding. Dicha

n indicará los caracteres que podremos incluir dentro de las etiquetas del

Todas las etiquetas deben tener una jerarquía, es decir, todos los elementos que contengan datos de tipo carácter deben tener etiquetas de principio y fin.

res de los atributos deben ir entrecomillados (el carácter comilla simple puede utilizarse si el valor contiene caracteres comillas dobles, y viceversa.

Cualquier elemento VACÍO (por ejemplo aquellos que no tienen etiqueta final como y otros tipos de HTML) deben terminar con o debemos crearlos como no

vacíos añadiéndo una etiqueta de fin, tal como vemos en uno de los elementos producto.

No podemos utilizar caracteres especiales que formen la estructura del documento, como por si necesitamos incluir dichos caracteres, se utilizan entidades que representan

dichos caracteres, como por ejemplo &lt; o &amp;.

Los elementos deben anidar dentro de sí sus propiedades (no se deben sobreponer etiquetas, como en documentos SGML).

Los nombres de las etiquetas pueden ser alfanuméricos, comenzando con una letra, e y :, aunque este último tiene un significado especial.

Todo documento XML debe estar bien formado para poder ser utilizado y que sea funcional.

e nombres de un documento nos permiten poder definir la procedencia de un documento como también la estructura que sigue un documento.

Si en cualquier documento fueramos definiendo etiquetas sin sentido, a pesar de estar bien formado, el ía siendo un caos de diferentes etiquetas procedentes de diferentes sitios, y, lo que

es peor, de etiquetas con el mismo nombre que, en realidad, significan cosas diferentes.

El concepto de espacios de nombres (namespaces) permite particionar el conjunto nombres posibles, de forma que se pueda definir a qué zona de ese espacio corresponde una etiqueta.

De esta forma, etiquetas con el mismo nombre, pero definidas por dos autores diferentes, pueden diferenciarse en el espacio de nombres.

pacio de nombres no es esencial en todos los documentos, pero resulta útil cuando se usan etiquetas procedentes de diferentes procedencias (por ejemplo, etiquetas nuevas dentro de un documento XML), o etiquetas que se quieren procesar de forma diferente.

El espacio de nombres de una etiqueta se indica como

Por ejemplo, se usan espacios de nombres en el documento siguiente:

8859-1' ?> <milista:listacompra xmlns:milista='http://www.ejemploxml/listacompra'>

<milista:producto>Fairy</milista:producto><milista:producto>Lavavajilla</milista:producto>

<milista:productos id='alimentacion'>

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Debemos indicar la codificación de caracteres que el documento XML utilizará, eso se realiza mediante la primera etiqueta del documento y que tiene como atributo encoding. Dicha

n indicará los caracteres que podremos incluir dentro de las etiquetas del

Todas las etiquetas deben tener una jerarquía, es decir, todos los elementos que contengan

res de los atributos deben ir entrecomillados (el carácter comilla simple puede

Cualquier elemento VACÍO (por ejemplo aquellos que no tienen etiqueta final como o debemos crearlos como no

vacíos añadiéndo una etiqueta de fin, tal como vemos en uno de los elementos producto.

No podemos utilizar caracteres especiales que formen la estructura del documento, como por uir dichos caracteres, se utilizan entidades que representan

Los elementos deben anidar dentro de sí sus propiedades (no se deben sobreponer etiquetas,

pueden ser alfanuméricos, comenzando con una letra, e y :, aunque este último tiene un significado especial.

Todo documento XML debe estar bien formado para poder ser utilizado y que sea funcional.

e nombres de un documento nos permiten poder definir la procedencia de un

Si en cualquier documento fueramos definiendo etiquetas sin sentido, a pesar de estar bien formado, el ía siendo un caos de diferentes etiquetas procedentes de diferentes sitios, y, lo que

es peor, de etiquetas con el mismo nombre que, en realidad, significan cosas diferentes.

El concepto de espacios de nombres (namespaces) permite particionar el conjunto de todos los nombres posibles, de forma que se pueda definir a qué zona de ese espacio corresponde una etiqueta.

De esta forma, etiquetas con el mismo nombre, pero definidas por dos autores diferentes, pueden

pacio de nombres no es esencial en todos los documentos, pero resulta útil cuando se usan etiquetas procedentes de diferentes procedencias (por ejemplo, etiquetas nuevas dentro de un

Page 32: Java Modulo 7

<milista:producto>huevos</milista:producto> <milista:producto>mantequilla</milista:producto> </milista:productos> </milista:listacompra>

No es necesario especificar un prefijo para las etiquetas, también podemos crear el documento sin necesidad de hacerlo, y el espacio de nombres indicará la procedencia del documque debe seguir:

<?xml version="1.0" encoding='iso-8859<listacompra xmlns='http://www.ejemploxml/listacompra'> <productos id='limpieza'> <producto>Fairy</producto>

<producto>Lavavajilla</producto> </productos> <productos id='alimentacion'> <producto>huevos</producto>

<producto>mantequilla</producto> </productos> </listacompra>

Un documento XML puede tener tantos espacios de nombres como se quieran declarar, y se pueden mezclar elementos de diferentes espacio

Por ejemplo, si visualizamos el resultado del mensaje SOAP de un documento XML, podremos comprobar que utiliza los espacios de nombres para definir la estructura y los prefijos para las etiquetas que utilizará en el momento de devolver la información a un cliente:

Validación de documentos XML

Cuando utilizamos documentos XML, una de las características que hemos analizado es su estructura, es decir, que el documento esté bien formado, que las etiquetas tengan una apertura y un cierre, se utilicen caracteres adecuados, etc.

Pero otra característica muy importante es la validación del documento, lo que quiere decir que la estructura que hemos creado siga unos pasos determinados, es decir, que las etiquetas sean las correctas o estén en el orden adecuado.

Dentro de la validación de documentos XML nos encontramos con dos tipos de elementos: DTD y Schema.

Las DTDs son los documentos que definen las etiquetas válidas dentro de un documento XML.

Para uso exclusivo de los alumnos de CETICSA S.L.

<milista:producto>huevos</milista:producto>>mantequilla</milista:producto>

No es necesario especificar un prefijo para las etiquetas, también podemos crear el documento sin necesidad de hacerlo, y el espacio de nombres indicará la procedencia del docum

8859-1' ?> <listacompra xmlns='http://www.ejemploxml/listacompra'>

<producto>Lavavajilla</producto>

<producto>mantequilla</producto>

Un documento XML puede tener tantos espacios de nombres como se quieran declarar, y se pueden mezclar elementos de diferentes espacios de nombres.

Por ejemplo, si visualizamos el resultado del mensaje SOAP de un documento XML, podremos comprobar que utiliza los espacios de nombres para definir la estructura y los prefijos para las etiquetas que utilizará

ormación a un cliente:

Cuando utilizamos documentos XML, una de las características que hemos analizado es su estructura, es decir, que el documento esté bien formado, que las etiquetas tengan una apertura y un cierre, se utilicen caracteres adecuados, etc.

Pero otra característica muy importante es la validación del documento, lo que quiere decir que la estructura que hemos creado siga unos pasos determinados, es decir, que las etiquetas sean las

den adecuado.

Dentro de la validación de documentos XML nos encontramos con dos tipos de elementos: DTD y

Las DTDs son los documentos que definen las etiquetas válidas dentro de un documento XML.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

No es necesario especificar un prefijo para las etiquetas, también podemos crear el documento sin necesidad de hacerlo, y el espacio de nombres indicará la procedencia del documento y las reglas

Un documento XML puede tener tantos espacios de nombres como se quieran declarar, y se pueden

Por ejemplo, si visualizamos el resultado del mensaje SOAP de un documento XML, podremos comprobar que utiliza los espacios de nombres para definir la estructura y los prefijos para las etiquetas que utilizará

Cuando utilizamos documentos XML, una de las características que hemos analizado es su estructura, es decir, que el documento esté bien formado, que las etiquetas tengan una apertura y un cierre, se

Pero otra característica muy importante es la validación del documento, lo que quiere decir que la estructura que hemos creado siga unos pasos determinados, es decir, que las etiquetas sean las

Dentro de la validación de documentos XML nos encontramos con dos tipos de elementos: DTD y

Las DTDs son los documentos que definen las etiquetas válidas dentro de un documento XML.

Page 33: Java Modulo 7

Un documento XML, usualmente puede tener asociado o

etiquetas que contendrá y el orden de las etiquetas en el documento.

Uno de los problemas de las DTDs es, que no son documentos XML en sí mismos, no son demasiado

extensibles y además, no nos permite establecer v

orden de los elementos y atributos.

Una DTD es un archivo que encierra una definición formal de un tipo de documento y, al mismo tiempo,

especifica la estructura lógica de cada documento.

Define tanto los elementos de un documento XML, como sus atributos.

Utilizar una DTD en un documento XML es opcional.

Un documento DTD permite poder diferenciar entre el concepto de documento "bien formado" y un

documento "válido".

Por ejemplo, podemos visualizar un d

compra que hemos visto anteriormente:

<?xml version='1.0' encoding='UTF-8'?>

<!ELEMENT listacompra (productos)*>

<!ATTLIST listacompra xmlns CDATA #IMPLIED>

<!ELEMENT productos (producto)*>

<!ATTLIST productos id CDATA #IMPLIED>

<!ELEMENT producto (#PCDATA)>

Dicha DTD indica el orden de los elementos del documento y el contenido (Atributos) de dichos

elementos, pero por ejemplo, no puede indicar el tipo de dato de los elementos o crear “relacione

entre dichos elementos.

Los documentos DTD son antiguos, era algo previsible que las DTDs evolucionasen, debido a temas

como tipos de datos o relación entre las etiquetas de los documentos. Esta evolución son los schemas

(Esquemas XML).

Al igual que las DTD, los Schemas describen el contenido y la estructura de la información, pero de una

froma más precisa.

Los esquemas indican tipos de dato, número mínimo y máximo de ocurrencias y otras características

más precisas.

Los esquemas expresan vocabulario

hechas por las personas.

Los esquemas proveen un significado para definir la estructura, contenido y semántica de los

documentos XML.

Un esquema XML (XML Schema) es algo similar a un DTD, es deci

contener un documento XML, cómo están organizados y qué atributos y de qué tipo pueden tener sus

elementos, pero la utilización de Schemas ofrece muchas más posibilidades a los documentos.

Los esquemas utilizan sintaxis XML, a

exgtensibles, es decir, permiten crear nuevos elementos.

Un Schema nos permite definir el tipo de contenido de elementos o atributos precisando si debe ser un

número entero, una cadena de texto, una fecha, etc.

Un ejemplo de Schema respecto al documento XML lista de la compra es el siguiente:

Para uso exclusivo de los alumnos de CETICSA S.L.

Un documento XML, usualmente puede tener asociado otro documento llamado DTD, que indicará las

etiquetas que contendrá y el orden de las etiquetas en el documento.

Uno de los problemas de las DTDs es, que no son documentos XML en sí mismos, no son demasiado

extensibles y además, no nos permite establecer validaciones más complejas que la propia existencia y

Una DTD es un archivo que encierra una definición formal de un tipo de documento y, al mismo tiempo,

especifica la estructura lógica de cada documento.

os elementos de un documento XML, como sus atributos.

Utilizar una DTD en un documento XML es opcional.

Un documento DTD permite poder diferenciar entre el concepto de documento "bien formado" y un

Por ejemplo, podemos visualizar un documento DTD basado en el documento XML de la lista de la

compra que hemos visto anteriormente:

8'?>

<!ELEMENT listacompra (productos)*>

<!ATTLIST listacompra xmlns CDATA #IMPLIED>

IST productos id CDATA #IMPLIED>

Dicha DTD indica el orden de los elementos del documento y el contenido (Atributos) de dichos

elementos, pero por ejemplo, no puede indicar el tipo de dato de los elementos o crear “relacione

Los documentos DTD son antiguos, era algo previsible que las DTDs evolucionasen, debido a temas

como tipos de datos o relación entre las etiquetas de los documentos. Esta evolución son los schemas

as DTD, los Schemas describen el contenido y la estructura de la información, pero de una

Los esquemas indican tipos de dato, número mínimo y máximo de ocurrencias y otras características

Los esquemas expresan vocabularios compartidos que permiten a las máquinas extraer las reglas

Los esquemas proveen un significado para definir la estructura, contenido y semántica de los

Un esquema XML (XML Schema) es algo similar a un DTD, es decir, define qué elementos puede

contener un documento XML, cómo están organizados y qué atributos y de qué tipo pueden tener sus

elementos, pero la utilización de Schemas ofrece muchas más posibilidades a los documentos.

Los esquemas utilizan sintaxis XML, al contratio que los DTD, permiten especificar los tipos de datos y son

exgtensibles, es decir, permiten crear nuevos elementos.

Un Schema nos permite definir el tipo de contenido de elementos o atributos precisando si debe ser un

de texto, una fecha, etc.

Un ejemplo de Schema respecto al documento XML lista de la compra es el siguiente:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

tro documento llamado DTD, que indicará las

Uno de los problemas de las DTDs es, que no son documentos XML en sí mismos, no son demasiado

alidaciones más complejas que la propia existencia y

Una DTD es un archivo que encierra una definición formal de un tipo de documento y, al mismo tiempo,

Un documento DTD permite poder diferenciar entre el concepto de documento "bien formado" y un

ocumento DTD basado en el documento XML de la lista de la

Dicha DTD indica el orden de los elementos del documento y el contenido (Atributos) de dichos

elementos, pero por ejemplo, no puede indicar el tipo de dato de los elementos o crear “relaciones”

Los documentos DTD son antiguos, era algo previsible que las DTDs evolucionasen, debido a temas

como tipos de datos o relación entre las etiquetas de los documentos. Esta evolución son los schemas

as DTD, los Schemas describen el contenido y la estructura de la información, pero de una

Los esquemas indican tipos de dato, número mínimo y máximo de ocurrencias y otras características

s compartidos que permiten a las máquinas extraer las reglas

Los esquemas proveen un significado para definir la estructura, contenido y semántica de los

r, define qué elementos puede

contener un documento XML, cómo están organizados y qué atributos y de qué tipo pueden tener sus

elementos, pero la utilización de Schemas ofrece muchas más posibilidades a los documentos.

l contratio que los DTD, permiten especificar los tipos de datos y son

Un Schema nos permite definir el tipo de contenido de elementos o atributos precisando si debe ser un

Un ejemplo de Schema respecto al documento XML lista de la compra es el siguiente:

Page 34: Java Modulo 7

<?xml version="1.0" encoding="iso-8859

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"

targetNamespace="http://www.ejemploxml/listacompra"

xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="listacompra">

<xs:complexType>

<xs:sequence>

<xs:element maxOccurs="unbounded" name="productos">

<xs:complexType>

<xs:sequence>

<xs:element maxOccurs="unbounded" name="producto" type="xs:string" />

</xs:sequence>

<xs:attribute name="id" type="xs:string" use="required" />

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

Como podemos observar, no solamente indica el orden de los elementos o el número de apariciones en

el documento, sino que también representa el tipo de datos de los atributos y

Es necesario comenzar el esquema definiendo los elementos más profundamente anidados dentro de

la estructura jerárquica de elementos del documento xml.

Las declaraciones de tipo ElementType y AttributeType deben preceder a las declaraciones

contenido element y attribute correspondiente.

Un esquemás también puede verse como una colección (vocabulario) de definiciones de tipos y

declaraciones de elementos cuyos nombres pertenecen a un determinado espacio de nombres.

Los espacios de nombres de destino hacen posible la distinción entre definiciones y declaraciones de

diferentes vocabularios.

La estructura de un documento XML aplicada a los servicios se define mediante SOAP.

La respuesta de cualquier servicio web viene ofrecida mediante datos

tipo de datos, el orden de los elementos ofrecidos por el servicio y el número de elementos se expresa

en un esquema definido como documento WSDL.

Podemos visulizar un ejemplo de WSDL a partir de un servicio web:

Para uso exclusivo de los alumnos de CETICSA S.L.

8859-1"?>

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"_

targetNamespace="http://www.ejemploxml/listacompra"

xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element maxOccurs="unbounded" name="productos">

<xs:element maxOccurs="unbounded" name="producto" type="xs:string" />

<xs:attribute name="id" type="xs:string" use="required" />

Como podemos observar, no solamente indica el orden de los elementos o el número de apariciones en

el documento, sino que también representa el tipo de datos de los atributos y los elementos.

Es necesario comenzar el esquema definiendo los elementos más profundamente anidados dentro de

la estructura jerárquica de elementos del documento xml.

Las declaraciones de tipo ElementType y AttributeType deben preceder a las declaraciones

contenido element y attribute correspondiente.

Un esquemás también puede verse como una colección (vocabulario) de definiciones de tipos y

declaraciones de elementos cuyos nombres pertenecen a un determinado espacio de nombres.

e destino hacen posible la distinción entre definiciones y declaraciones de

La estructura de un documento XML aplicada a los servicios se define mediante SOAP.

La respuesta de cualquier servicio web viene ofrecida mediante datos xml, y la estructura que definirá el

tipo de datos, el orden de los elementos ofrecidos por el servicio y el número de elementos se expresa

en un esquema definido como documento WSDL.

Podemos visulizar un ejemplo de WSDL a partir de un servicio web:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

_

<xs:element maxOccurs="unbounded" name="producto" type="xs:string" />

Como podemos observar, no solamente indica el orden de los elementos o el número de apariciones en

los elementos.

Es necesario comenzar el esquema definiendo los elementos más profundamente anidados dentro de

Las declaraciones de tipo ElementType y AttributeType deben preceder a las declaraciones de

Un esquemás también puede verse como una colección (vocabulario) de definiciones de tipos y

declaraciones de elementos cuyos nombres pertenecen a un determinado espacio de nombres.

e destino hacen posible la distinción entre definiciones y declaraciones de

La estructura de un documento XML aplicada a los servicios se define mediante SOAP.

xml, y la estructura que definirá el

tipo de datos, el orden de los elementos ofrecidos por el servicio y el número de elementos se expresa

Page 35: Java Modulo 7

Ahora que ya conocemos algo más sobre elementos XML, nos queda responder a la utilización de

dichos servicios dentro del entorno de los Servicios Web.

Las razones de la utilización de XML en los Servicios Web son las siguientes:

� Es un estándar abierto, es

tecnológicas integran en su software compatibilidad con dicho lenguaje de marcado.

Esto quiere decir que la gran mayoría de software de escritorio, de sistema operativo, software de

internet o aplicaciones móviles permiten la compatibilidad con XML.

Esto lo hace muy potente a la hora de permitir la comunicación entre distintas plataformas de software

y hardware, lo que es el producto final de los Servicios Web.

� La simplicidad de sintaxis XML, lo

la representación de los datos es casi entendible por cualquier ser humano.

Esto lo hace muy flexible a la hora de querer representar datos de cualquier tipo, con lo que

unicamente bastaría con contar con cualquier editor de texto y aprender unas cuantas instrucciones

básicas.

El hecho de que XML sea tan fácil de codificar y de entender lo hace el lenguaje ideal para utilizarlo en

los servicios Web.

� Independencia del protocolo de Transporte.

de Texto significa que no necesita de ningún protocolo de transporte especial, solo necesita de

un protocolo que pueda trasferir texto o documentos simples.

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora que ya conocemos algo más sobre elementos XML, nos queda responder a la utilización de

dichos servicios dentro del entorno de los Servicios Web.

Las razones de la utilización de XML en los Servicios Web son las siguientes:

decir, es reconocido mundialmente ya que muchas compañías

tecnológicas integran en su software compatibilidad con dicho lenguaje de marcado.

Esto quiere decir que la gran mayoría de software de escritorio, de sistema operativo, software de

icaciones móviles permiten la compatibilidad con XML.

Esto lo hace muy potente a la hora de permitir la comunicación entre distintas plataformas de software

y hardware, lo que es el producto final de los Servicios Web.

La simplicidad de sintaxis XML, lo que quiere decir que es muy fácil de escribir código en XML, y

la representación de los datos es casi entendible por cualquier ser humano.

Esto lo hace muy flexible a la hora de querer representar datos de cualquier tipo, con lo que

on contar con cualquier editor de texto y aprender unas cuantas instrucciones

El hecho de que XML sea tan fácil de codificar y de entender lo hace el lenguaje ideal para utilizarlo en

Independencia del protocolo de Transporte. El hecho de que XML sea un lenguaje de Marcado

de Texto significa que no necesita de ningún protocolo de transporte especial, solo necesita de

un protocolo que pueda trasferir texto o documentos simples.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora que ya conocemos algo más sobre elementos XML, nos queda responder a la utilización de

decir, es reconocido mundialmente ya que muchas compañías

tecnológicas integran en su software compatibilidad con dicho lenguaje de marcado.

Esto quiere decir que la gran mayoría de software de escritorio, de sistema operativo, software de

Esto lo hace muy potente a la hora de permitir la comunicación entre distintas plataformas de software

que quiere decir que es muy fácil de escribir código en XML, y

la representación de los datos es casi entendible por cualquier ser humano.

Esto lo hace muy flexible a la hora de querer representar datos de cualquier tipo, con lo que

on contar con cualquier editor de texto y aprender unas cuantas instrucciones

El hecho de que XML sea tan fácil de codificar y de entender lo hace el lenguaje ideal para utilizarlo en

El hecho de que XML sea un lenguaje de Marcado

de Texto significa que no necesita de ningún protocolo de transporte especial, solo necesita de

Page 36: Java Modulo 7

Podemos compararlo con protocolos conocidos y que

marcado especial, como son HTTP o SMTP, por nombrar algunos.

Una de las características más importantes de los Servicios Web es su independencia del protocolo de

transporte.

Ver Video: Estructura y Validación en el Módulo 7. Unidad 4, en la plataforma elearning.

Para uso exclusivo de los alumnos de CETICSA S.L.

Podemos compararlo con protocolos conocidos y que si necesitan de un transporte especial y un

marcado especial, como son HTTP o SMTP, por nombrar algunos.

Una de las características más importantes de los Servicios Web es su independencia del protocolo de

Estructura y Validación de documentos XMLen el Módulo 7. Unidad 4, en la plataforma elearning.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

si necesitan de un transporte especial y un

Una de las características más importantes de los Servicios Web es su independencia del protocolo de

de documentos XML,

en el Módulo 7. Unidad 4, en la plataforma elearning.

Page 37: Java Modulo 7

Unidad 4: Examinando mensajes SOAP

Objetivos

� Comprender la arquitectura de protocolo de mensajes SOAP en los Servicios Web

� Entender el uso de SOAP dentro de los mensajes cliente

� Analizar las características de SOAP en el envío y la recepción de datos en Web Services.

Introducción

SOAP (Simple Object Access Protocol) es un protocolo basado en XML para el intercambio de

información.

Implementar una arquitectura orientada a servicio

usen los servicios, aplicaciones disponibles como servicios para

Un servicio web SOAP es una función de aplicación empaquetada como un componente reutilizab

para ser usado en proceso de negocio.

El servicio proporciona información o facilita el cambio de datos de negocio en un estado válido y

consistente a otro.

La característica principal de SOA es que es una arquitectura con acoplamiento débil.

Acoplamiento débil significa que el cliente de un servicio es “casi” completamente independiente de la

construcción de ese servicio.

Un Web Service es un servicio que se comunica con los clientes a través de un conjunto estándar de

protocolos y tecnología.

Estos estándares están implementados en las plataformas y productos de los principales proveedores de

software, lo que hace de los Web Services la principal opción para lo construcción de arquitecturas

SOAP

Existen varias razones por las que una empresa adopte un

Web Services:

� Reutilización.

Para uso exclusivo de los alumnos de CETICSA S.L.

Examinando mensajes SOAP

Comprender la arquitectura de protocolo de mensajes SOAP en los Servicios Web

Entender el uso de SOAP dentro de los mensajes cliente en Web Service.

Analizar las características de SOAP en el envío y la recepción de datos en Web Services.

SOAP (Simple Object Access Protocol) es un protocolo basado en XML para el intercambio de

entada a servicio (SOAP) comprende el desarrollo de aplicaciones

isponibles como servicios para otras o ambas aplicaciones

Un servicio web SOAP es una función de aplicación empaquetada como un componente reutilizab

para ser usado en proceso de negocio.

El servicio proporciona información o facilita el cambio de datos de negocio en un estado válido y

La característica principal de SOA es que es una arquitectura con acoplamiento débil.

to débil significa que el cliente de un servicio es “casi” completamente independiente de la

Un Web Service es un servicio que se comunica con los clientes a través de un conjunto estándar de

stándares están implementados en las plataformas y productos de los principales proveedores de

software, lo que hace de los Web Services la principal opción para lo construcción de arquitecturas

Existen varias razones por las que una empresa adopte un desarrollo de arquitectura SOAP basado en

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Examinando mensajes SOAP

Comprender la arquitectura de protocolo de mensajes SOAP en los Servicios Web

Analizar las características de SOAP en el envío y la recepción de datos en Web Services.

SOAP (Simple Object Access Protocol) es un protocolo basado en XML para el intercambio de

omprende el desarrollo de aplicaciones que

aplicaciones.

Un servicio web SOAP es una función de aplicación empaquetada como un componente reutilizable

El servicio proporciona información o facilita el cambio de datos de negocio en un estado válido y

La característica principal de SOA es que es una arquitectura con acoplamiento débil.

to débil significa que el cliente de un servicio es “casi” completamente independiente de la

Un Web Service es un servicio que se comunica con los clientes a través de un conjunto estándar de

stándares están implementados en las plataformas y productos de los principales proveedores de

software, lo que hace de los Web Services la principal opción para lo construcción de arquitecturas

desarrollo de arquitectura SOAP basado en

Page 38: Java Modulo 7

El factor fundamental en el cambio a una arquitectura SOAP es la reutilización de los servicios de

negocio.

Las funciones de negocio dentro de una empresa pueden ser expuestos como we

reutilizados para cubrir las diferentes necesidades de negocio de soluciones.

� Interoperabilidad

El objetivo de una arquitectura débilmente acopada es que los clientes y servicios se comunican

independientemente de la plataforma en la que r

Los protocolos de comunicación con Web Services son independientes de la plataforma, lenguaje de

codificación y sistema operativo, por lo que facilitan la comunicación con los procesos de negocio.

� Escalabilidad

Como los servicios de SOAP están débi

escalan fácilmente.

Esto se puede realizar porque existe una mínima dependencia entre las aplicaciones clientes y los

servicios que las utilizan.

� Flexibilidad

Es otra de las características que proporciona el acoplamiento débil entre los servicios.

Cualquier cambio en la implementación de uno de ellos, no afectaría al resto, siempre y cuando se

mantengan en la interfaz.

� Eficiencia de coste

Las arquitecturas SOAP se basan en la exposición de servicios ya existentes para ser reutilizados.

Al usar Web Services para exponer estos servicios, se reutiliza la infraestructura web existente en casi

todas las organizaciones, por lo que se limita considerablemente el cost

SOAP soporta dos modelos de intercambio:

1) Orientado a documentos

� Generalmente operan en forma asincrónica

� El mensaje de respuesta no es fundamental, y si existe

o acuse de recibo.

� La construcción del mensaje y su

información que se transmite excluyendo aquella que es específica del protocolo de transmisión.

Características importantes:

- Medio de transporte.

- Destino del documento (endpoint)

2) Orientado a llamadas remotas (RPC, remote procedure call)

Generalmente operan en forma sincrónica.

Las operaciones llamadas contienen parámetros de entrada y de salida.

Los parámetros de salida suelen modelarse como una estructura de retorno (mensaje de respuesta).

Para uso exclusivo de los alumnos de CETICSA S.L.

El factor fundamental en el cambio a una arquitectura SOAP es la reutilización de los servicios de

Las funciones de negocio dentro de una empresa pueden ser expuestos como we

reutilizados para cubrir las diferentes necesidades de negocio de soluciones.

El objetivo de una arquitectura débilmente acopada es que los clientes y servicios se comunican

independientemente de la plataforma en la que residan.

Los protocolos de comunicación con Web Services son independientes de la plataforma, lenguaje de

codificación y sistema operativo, por lo que facilitan la comunicación con los procesos de negocio.

Como los servicios de SOAP están débilmente acoplados, las aplicaciones que usan dichos servicios se

Esto se puede realizar porque existe una mínima dependencia entre las aplicaciones clientes y los

Es otra de las características que proporciona el acoplamiento débil entre los servicios.

Cualquier cambio en la implementación de uno de ellos, no afectaría al resto, siempre y cuando se

AP se basan en la exposición de servicios ya existentes para ser reutilizados.

Al usar Web Services para exponer estos servicios, se reutiliza la infraestructura web existente en casi

todas las organizaciones, por lo que se limita considerablemente el coste.

SOAP soporta dos modelos de intercambio:

Generalmente operan en forma asincrónica

El mensaje de respuesta no es fundamental, y si existe, actúa como forma de devolver un ticket

La construcción del mensaje y su carga útil (payload). La carga útil del mensaje es la

se transmite excluyendo aquella que es específica del protocolo de transmisión.

Destino del documento (endpoint)

remotas (RPC, remote procedure call)

Generalmente operan en forma sincrónica.

Las operaciones llamadas contienen parámetros de entrada y de salida.

Los parámetros de salida suelen modelarse como una estructura de retorno (mensaje de respuesta).

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

El factor fundamental en el cambio a una arquitectura SOAP es la reutilización de los servicios de

Las funciones de negocio dentro de una empresa pueden ser expuestos como web services y ser

El objetivo de una arquitectura débilmente acopada es que los clientes y servicios se comunican

Los protocolos de comunicación con Web Services son independientes de la plataforma, lenguaje de

codificación y sistema operativo, por lo que facilitan la comunicación con los procesos de negocio.

lmente acoplados, las aplicaciones que usan dichos servicios se

Esto se puede realizar porque existe una mínima dependencia entre las aplicaciones clientes y los

Es otra de las características que proporciona el acoplamiento débil entre los servicios.

Cualquier cambio en la implementación de uno de ellos, no afectaría al resto, siempre y cuando se

AP se basan en la exposición de servicios ya existentes para ser reutilizados.

Al usar Web Services para exponer estos servicios, se reutiliza la infraestructura web existente en casi

actúa como forma de devolver un ticket

carga útil (payload). La carga útil del mensaje es la

se transmite excluyendo aquella que es específica del protocolo de transmisión.

Los parámetros de salida suelen modelarse como una estructura de retorno (mensaje de respuesta).

Page 39: Java Modulo 7

Características importantes:

- La operación particular que se invoca.

- El conjunto de valores de entrada.

- El conjunto de valores de salida.

- La correlación entre los mensajes de pedidos (requests) con los mensajes de respuesta (

SOAP está diseñado para comunicaciones punto a punto.

Fue desarrollado a finales de 1999 por DevelopMentor (http://www.develop.com), Microsoft y UserLand

(http://www.userland.com) como un protocolo

XML.

En el año 2000 Lotus e IBM se unieron a este

especificación abierta, extensible e independiente de lenguaje y plataforma.

La primera versión de SOAP, 1.1, fue aprobada como estándar por la organización W3C

Web Consortium) en Mayo del mismo año.

En el interior de los servicios Web se

mecanismo estándar de empaquetar mensajes.

SOAP ha recibido una gran atención debido a que facil

entre un cliente y un servidor remoto.

Existen multitud de protocolos creados para facilitar la comunicación entre aplicaciones, incluyendo

RPC de Sum, DCE de Microsoft, RMI de Java y ORPC de CORBA.

Una de las razones más importantes para la utilización y la extensión de SOAP en los Servicios Web

que SOAP ha recibido un increíble apoyo por parte de la industria.

SOAP es el primer protocolo de su tipo que ha sido aceptado prácticamente por todas las grandes

compañías de software del mundo.

Dichas compañías no suelen colaborar o cooperar

protocolo.

Algunas de las mayores Compañías que soportan SOAP son Microsoft, IBM, SUN, Microsystems, SAP y

Ariba.

Ventajas de la utilización de SOAP

Una de las mayores ventajas en la utilización del protocolo SOAP es que no

lenguaje.

SOAP no especifica ninguna API, por lo que la implementación de la API se deja al lenguaje de

programación elegido para desarrollar el servicio web

SOAP no está asociado a ningún protocolo de transporte.

La especificación de SOAP no describe como se deberían asociar los mensajes de SOAP con HTTP.

Un mensaje SOAP no es más que un documento XML,

cualquier protocolo capaz de transmitir texto.

SOAP no está asociado a ninguna infraestructura de objeto distribuido

La mayoría de los sistemas de objetos distribuidos se pueden extender, y ya lo están alguno de

que admitan SOAP.

Para uso exclusivo de los alumnos de CETICSA S.L.

La operación particular que se invoca.

El conjunto de valores de entrada.

El conjunto de valores de salida.

La correlación entre los mensajes de pedidos (requests) con los mensajes de respuesta (

SOAP está diseñado para comunicaciones punto a punto.

Fue desarrollado a finales de 1999 por DevelopMentor (http://www.develop.com), Microsoft y UserLand

(http://www.userland.com) como un protocolo específico de Windows para ejecutar llamadas RPC con

En el año 2000 Lotus e IBM se unieron a este esfuerzo y el objetivo se amplió a producir una

especificación abierta, extensible e independiente de lenguaje y plataforma.

versión de SOAP, 1.1, fue aprobada como estándar por la organización W3C

Web Consortium) en Mayo del mismo año.

localiza el protocolo simple de acceso a datos SOAP, que

mecanismo estándar de empaquetar mensajes.

gran atención debido a que facilita el uso de una comunicación del estilo RPC

entre un cliente y un servidor remoto.

xisten multitud de protocolos creados para facilitar la comunicación entre aplicaciones, incluyendo

RPC de Sum, DCE de Microsoft, RMI de Java y ORPC de CORBA.

más importantes para la utilización y la extensión de SOAP en los Servicios Web

que SOAP ha recibido un increíble apoyo por parte de la industria.

SOAP es el primer protocolo de su tipo que ha sido aceptado prácticamente por todas las grandes

compañías de software del mundo.

no suelen colaborar o cooperar entre sí, pero están ofreciendo su apoyo a este

Algunas de las mayores Compañías que soportan SOAP son Microsoft, IBM, SUN, Microsystems, SAP y

Una de las mayores ventajas en la utilización del protocolo SOAP es que no

API, por lo que la implementación de la API se deja al lenguaje de

arrollar el servicio web, como en Java, y Microsoft .Net.

ningún protocolo de transporte.

La especificación de SOAP no describe como se deberían asociar los mensajes de SOAP con HTTP.

Un mensaje SOAP no es más que un documento XML, por lo que puede transportarse utilizando

cualquier protocolo capaz de transmitir texto.

a ninguna infraestructura de objeto distribuido.

La mayoría de los sistemas de objetos distribuidos se pueden extender, y ya lo están alguno de

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

La correlación entre los mensajes de pedidos (requests) con los mensajes de respuesta (response)

Fue desarrollado a finales de 1999 por DevelopMentor (http://www.develop.com), Microsoft y UserLand

específico de Windows para ejecutar llamadas RPC con

esfuerzo y el objetivo se amplió a producir una

versión de SOAP, 1.1, fue aprobada como estándar por la organización W3C (World Wide

el protocolo simple de acceso a datos SOAP, que ofrece un

una comunicación del estilo RPC

xisten multitud de protocolos creados para facilitar la comunicación entre aplicaciones, incluyendo

más importantes para la utilización y la extensión de SOAP en los Servicios Web es

SOAP es el primer protocolo de su tipo que ha sido aceptado prácticamente por todas las grandes

están ofreciendo su apoyo a este

Algunas de las mayores Compañías que soportan SOAP son Microsoft, IBM, SUN, Microsystems, SAP y

esta asociado a ningún

API, por lo que la implementación de la API se deja al lenguaje de

, como en Java, y Microsoft .Net.

La especificación de SOAP no describe como se deberían asociar los mensajes de SOAP con HTTP.

por lo que puede transportarse utilizando

La mayoría de los sistemas de objetos distribuidos se pueden extender, y ya lo están alguno de ellos para

Page 40: Java Modulo 7

SOAP utiliza los estándares existentes en la industria

Los principales contribuyentes a la especificación SOAP evitaron, intencionadamente, reinventar las

cosas. Cada uno de ellos tenía unas características diferentes en su t

decidieron extender los estándares existentes para que coincidieran con sus necesidades.

SOAP aprovecha XML para la codificación de los mensajes, en lugar de

por lo que los tipos de datos ya están definido

Servicio Web.

Como ya hemos comentado, SOAP no define un

enviados por el protocolo SOAP se pueden asociar a los protocolos de transporte existentes como HTTP y

SMTP.

SOAP permite la interoperabilidad entre múltiples entornos.

El desarrollo del protocolo se hizo bajo

aplicaciones que se ejecuten en plataformas con dicho estándares pueden comunicarse mediante

mensajes SOAP con aplicaciones que se ejecuten en otras plataformas.

Por ejemplo, una aplicación de escritorio que se ejecute en un ordenador,

aplicación que esté sirviendo información desde internet

Estructura de los mensajes SOAP

La estructura de un mensaje SOAP

Cliente hacia el web service y viceversa.

En toda solicitud a un Servicio Web, siempre tendremos la estructura de los elementos que veremos en el

cliente y los datos que visualizaremos posteriormente desde el servicio web.

Vamos a poner como ejemplo un servicio

año determinado.

Por ejemplo, lo que necesitaríamos recibir desde el cliente sería la región, el mes y el año que desea

averiguar el cliente para el resultado.

La solicitud del cliente en el mensaje SOAP sería la siguiente:

<?xml version="1.0" encoding="UTF-8"?>

<SOAP- ENVIO:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:SOAP-ENVIO="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema

<SOAP- ENVIO:Body>

<ns1:temperaturas xmlns:ns1="Datos">

<op1 xsi:type="xsd:string"> Madrid </op1>

<op2 xsi:type="xsd:integer"> Julio </op2>

<op2 xsi:type="xsd:integer"> 2005 </op2>

</ns1:temperaturas>

</SOAP- ENVIO:Body>

</SOAP- ENVIO:Envelope>

Si analizamos el código de la solicitud del cliente veremos los siguientes elementos:

Primeramente es definido el clásico elemento para un documento/fr

<?xml version="1.0" encoding="UTF-8"?>

Posteriormente, es definido el elemento raíz SOAP

(Envelope=Sobre), es empleado para describir e

Para uso exclusivo de los alumnos de CETICSA S.L.

los estándares existentes en la industria.

Los principales contribuyentes a la especificación SOAP evitaron, intencionadamente, reinventar las

Cada uno de ellos tenía unas características diferentes en su tecnología y distribución, por lo que

extender los estándares existentes para que coincidieran con sus necesidades.

SOAP aprovecha XML para la codificación de los mensajes, en lugar de usar un sistema

s ya están definidos en la especificación del esquema XML

SOAP no define un modelo de transporte para los mensajes

SOAP se pueden asociar a los protocolos de transporte existentes como HTTP y

ilidad entre múltiples entornos.

del protocolo se hizo bajo los estándares existentes de la industria, por lo que las

que se ejecuten en plataformas con dicho estándares pueden comunicarse mediante

SOAP con aplicaciones que se ejecuten en otras plataformas.

scritorio que se ejecute en un ordenador, puede comunicarse con una

que esté sirviendo información desde internet capaz de enviar y recibir XML sobre HTTP.

a estructura de un mensaje SOAP indica como se encuentra compuesta la solicitud enviada del

e hacia el web service y viceversa.

En toda solicitud a un Servicio Web, siempre tendremos la estructura de los elementos que veremos en el

cliente y los datos que visualizaremos posteriormente desde el servicio web.

Vamos a poner como ejemplo un servicio web que indica la temperatura de una región en un mes y un

Por ejemplo, lo que necesitaríamos recibir desde el cliente sería la región, el mes y el año que desea

averiguar el cliente para el resultado.

e SOAP sería la siguiente:

8"?>

ENVIO:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"

ENVIO="http://schemas.xmlsoap.org/soap/envelope/"

="http://www.w3.org/2001/XMLSchema-instance">

<ns1:temperaturas xmlns:ns1="Datos">

<op1 xsi:type="xsd:string"> Madrid </op1>

<op2 xsi:type="xsd:integer"> Julio </op2>

teger"> 2005 </op2>

Si analizamos el código de la solicitud del cliente veremos los siguientes elementos:

Primeramente es definido el clásico elemento para un documento/fragmento XML:

8"?>

es definido el elemento raíz SOAP-ENVIO:Envelope que como su nombre lo indica

(Envelope=Sobre), es empleado para describir el mensaje SOAP que será enviado.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Los principales contribuyentes a la especificación SOAP evitaron, intencionadamente, reinventar las

ecnología y distribución, por lo que

extender los estándares existentes para que coincidieran con sus necesidades.

usar un sistema propio de tipo,

esquema XML asociado al

los mensajes, los mensajes

SOAP se pueden asociar a los protocolos de transporte existentes como HTTP y

los estándares existentes de la industria, por lo que las

que se ejecuten en plataformas con dicho estándares pueden comunicarse mediante

puede comunicarse con una

capaz de enviar y recibir XML sobre HTTP.

como se encuentra compuesta la solicitud enviada del

En toda solicitud a un Servicio Web, siempre tendremos la estructura de los elementos que veremos en el

web que indica la temperatura de una región en un mes y un

Por ejemplo, lo que necesitaríamos recibir desde el cliente sería la región, el mes y el año que desea

ENVIO="http://schemas.xmlsoap.org/soap/envelope/"

Si analizamos el código de la solicitud del cliente veremos los siguientes elementos:

agmento XML:

:Envelope que como su nombre lo indica

l mensaje SOAP que será enviado.

Page 41: Java Modulo 7

Dentro del elemento SOAP-ENVIO son definidos tres Namespaces, una para el mismo SOAP

para el Schema y uno más para una instancia de

Terminada la definición del elemento Envelope se declara el elemento SOAP

podemos comprobar, pertenece al mismo Name

mensaje SOAP.

Dentro del elemento Body se anida el elemento ns1:temperaturas

hacia el web service llamado temperaturas

al nombre Datos, tal y como fue definido en el Cliente.

A continuación, son definidos los tres

service, uno de tipo string y otros dos de tipo

datos proporcionados por el usuario del web service.

Finalizando la estructura, son definidos los elementos necesarios para cerrar las descripciones de

ns1:temperaturas, SOAP-ENVIO:Body y SOAP

SOAP proporciona un mecanismo estándar de empaquetar un mensaje.

Un mensaje SOAP se compone de un sobre que contiene el cuerpo del mensaje y cualquier información

de cabecera que se utiliza para describir el

Un mensaje debe estar dentro de sobre

Un sobre se compone de un único elemento envelope

y puede contener un elemento body.

Si existe, la cabecera debe ser el elemento hijo inmediato del sobre, con el cuerpo siguiendo

inmediatamente a la cabecera.

El cuerpo contiene la carga de datos del mensaje y la cabecera contiene los datos adicionales que no

pertenecen necesariamente al cuerpo del mensaje.

Además de definir un sobre de SOAP, la especificación de SOAP define una form

contenidos en un mensaje.

La codificación SOAP proporciona un mecanismo estándar para

la primera parte de la especificación del esquema XML.

La especificación de SOAP también proporciona

comportamiento de tipo RPC.

Se emparejan dos mensajes de SOAP para facilitar la asociación de un mensaje de petición con un

mensaje de respuesta.

La llamada a un método y sus parámetros se serializan en el

de una estructura.

El elemento raíz tiene el mismo nombre que el método objetivo, con cada uno de los parámetros

codificado como un subelemento.

El mensaje de respuesta puede contener los resultados de la llamada a

fallo bien definida.

Los resultados de la llamada a un método se serializan en el cuerpo de la petición como una estructura.

Vamos a visualizar como sería la respuesta de una petición sobre el servicio de temperaturas que hem

puesto a modo de ejemplo:

<?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENVIO:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:SOAP-ENVIO="http://schemas.xmlsoap.org/soap/envelope/"

Para uso exclusivo de los alumnos de CETICSA S.L.

son definidos tres Namespaces, una para el mismo SOAP

Schema y uno más para una instancia del Schema.

Terminada la definición del elemento Envelope se declara el elemento SOAP

pertenece al mismo Namespace que Envelope) que contiene el cuerpo del

Dentro del elemento Body se anida el elemento ns1:temperaturas, que indica el inicio del mensaje

temperaturas, debemos dfijarnos en que el Namespace ns1 corresponde

tal y como fue definido en el Cliente.

tres elementos que contienen los parámetros de entrada para el web

s dos de tipo integer. Los valores Madrid, Julio

datos proporcionados por el usuario del web service.

on definidos los elementos necesarios para cerrar las descripciones de

:Body y SOAP-ENVIO:Envelope.

SOAP proporciona un mecanismo estándar de empaquetar un mensaje.

Un mensaje SOAP se compone de un sobre que contiene el cuerpo del mensaje y cualquier información

que se utiliza para describir el mensaje.

Un mensaje debe estar dentro de sobre de SOAP bien construido.

Un sobre se compone de un único elemento envelope, y el sobre puede contener un elemento Header

y puede contener un elemento body.

Si existe, la cabecera debe ser el elemento hijo inmediato del sobre, con el cuerpo siguiendo

El cuerpo contiene la carga de datos del mensaje y la cabecera contiene los datos adicionales que no

pertenecen necesariamente al cuerpo del mensaje.

Además de definir un sobre de SOAP, la especificación de SOAP define una form

La codificación SOAP proporciona un mecanismo estándar para serializar tipos de datos no definidos en

de la especificación del esquema XML.

La especificación de SOAP también proporciona un patrón de mensaje estándar para facilitar el

Se emparejan dos mensajes de SOAP para facilitar la asociación de un mensaje de petición con un

La llamada a un método y sus parámetros se serializan en el cuerpo del mensaje de petición en forma

El elemento raíz tiene el mismo nombre que el método objetivo, con cada uno de los parámetros

El mensaje de respuesta puede contener los resultados de la llamada al método o una estructura de

Los resultados de la llamada a un método se serializan en el cuerpo de la petición como una estructura.

Vamos a visualizar como sería la respuesta de una petición sobre el servicio de temperaturas que hem

8"?>

ENVIO:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"

ENVIO="http://schemas.xmlsoap.org/soap/envelope/"

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

son definidos tres Namespaces, una para el mismo SOAP-ENVIO, otro

Terminada la definición del elemento Envelope se declara el elemento SOAP-ENVIO:Body (Como

space que Envelope) que contiene el cuerpo del

que indica el inicio del mensaje

que el Namespace ns1 corresponde

elementos que contienen los parámetros de entrada para el web

Madrid, Julio y 2005 representan los

on definidos los elementos necesarios para cerrar las descripciones de

Un mensaje SOAP se compone de un sobre que contiene el cuerpo del mensaje y cualquier información

el sobre puede contener un elemento Header

Si existe, la cabecera debe ser el elemento hijo inmediato del sobre, con el cuerpo siguiendo

El cuerpo contiene la carga de datos del mensaje y la cabecera contiene los datos adicionales que no

Además de definir un sobre de SOAP, la especificación de SOAP define una forma de codificar los datos

tipos de datos no definidos en

un patrón de mensaje estándar para facilitar el

Se emparejan dos mensajes de SOAP para facilitar la asociación de un mensaje de petición con un

cuerpo del mensaje de petición en forma

El elemento raíz tiene el mismo nombre que el método objetivo, con cada uno de los parámetros

l método o una estructura de

Los resultados de la llamada a un método se serializan en el cuerpo de la petición como una estructura.

Vamos a visualizar como sería la respuesta de una petición sobre el servicio de temperaturas que hemos

Page 42: Java Modulo 7

xmlns:xsi="http://www.w3.org/2001/XMLSchema

<SOAP-ENVIO:Body>

<ns1:temperaturasResponse xmlns:ns1="Datos">

<result xsi:type="xsd:double"> 32.6 </result>

</ns1: temperaturasResponse>

</SOAP-ENVIO:Body>

</SOAP- ENVIO:Envelope>

Primeramente es definido el clásico elemento para un documento/fragmento XML:

<?xml version="1.0" encoding="UTF-8"?>

Posteriormente, es definido el elemento raíz SOAP

(Envelope=Sobre), es empleado para describir el mensaje SOAP que será enviado como respuesta

Dentro de este elemento son definidos tres Namespaces, una para el mismo SOAP

Schema y uno más para una instancia de Schema.

Terminada la definición del elemento

el cuerpo del mensaje SOAP.

Dentro del elemento Body se anida el elemento ns1:

web service llamado temperaturas

nombre Datos tal y como fue definido en el Cliente.

A continuación, es definido el elemento que contiene el parámetro de respuesta del web service, el

cual es del tipo doublé con el valor

Por último, son definidos los elementos necesarios para cerrar las descripciones de

ns1:temperaturasResponse, SOAP-ENV

Por convenio, el elemento raíz tiene el mismo nombre que el método original al que se aña

Los parámetros de retorno se serializan como elementos hijo, con el parámetro de retorno en primer

lugar.

Si se encuentra un error el cuerpo del mensaje de respuesta contendrá una estructura de fallo bien

definida.

Podemos comprobar fácilmente que la estructura de los mensajes SOAP es independiente al lenguaje

de programación.

Por ejemplo, vamos a visualizar el mensaje SOAP de un Servicio Web creado en Java y otro realizado en

Net.

Si tenemos un Servicio Web que devuelve el doble de un número

siguiente solicitud SOAP del servicio:

Para uso exclusivo de los alumnos de CETICSA S.L.

/www.w3.org/2001/XMLSchema-instance">

<ns1:temperaturasResponse xmlns:ns1="Datos">

<result xsi:type="xsd:double"> 32.6 </result>

Primeramente es definido el clásico elemento para un documento/fragmento XML:

8"?>

es definido el elemento raíz SOAP-ENVIO:Envelope que como su nombre lo indica

empleado para describir el mensaje SOAP que será enviado como respuesta

entro de este elemento son definidos tres Namespaces, una para el mismo SOAP

Schema y uno más para una instancia de Schema.

Terminada la definición del elemento Envelope se declara el elemento SOAP-ENV

Dentro del elemento Body se anida el elemento ns1:temperaturasResponse que indica

temperaturas, como podemos comprobar, el Namespa

tal y como fue definido en el Cliente.

s definido el elemento que contiene el parámetro de respuesta del web service, el

32.6, que representa el resultado procesado po

on definidos los elementos necesarios para cerrar las descripciones de

ENVIO:Body y SOAP-ENVIO:Envelope.

Por convenio, el elemento raíz tiene el mismo nombre que el método original al que se aña

Los parámetros de retorno se serializan como elementos hijo, con el parámetro de retorno en primer

Si se encuentra un error el cuerpo del mensaje de respuesta contendrá una estructura de fallo bien

e que la estructura de los mensajes SOAP es independiente al lenguaje

Por ejemplo, vamos a visualizar el mensaje SOAP de un Servicio Web creado en Java y otro realizado en

Si tenemos un Servicio Web que devuelve el doble de un número realizado en Java, veremos la

siguiente solicitud SOAP del servicio:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Primeramente es definido el clásico elemento para un documento/fragmento XML:

:Envelope que como su nombre lo indica

empleado para describir el mensaje SOAP que será enviado como respuesta.

entro de este elemento son definidos tres Namespaces, una para el mismo SOAP-ENVIO, otro para

ENVIO:Body que contiene

Response que indica la respuesta del

el Namespace ns1 corresponde al

s definido el elemento que contiene el parámetro de respuesta del web service, el

representa el resultado procesado por el web service.

on definidos los elementos necesarios para cerrar las descripciones de

Por convenio, el elemento raíz tiene el mismo nombre que el método original al que se añade result.

Los parámetros de retorno se serializan como elementos hijo, con el parámetro de retorno en primer

Si se encuentra un error el cuerpo del mensaje de respuesta contendrá una estructura de fallo bien

e que la estructura de los mensajes SOAP es independiente al lenguaje

Por ejemplo, vamos a visualizar el mensaje SOAP de un Servicio Web creado en Java y otro realizado en

realizado en Java, veremos la

Page 43: Java Modulo 7

Como podemos comprobar, contiene el elemento “sobre” (envelope) dentro del documento, incluye

un Header y un body con el contenido que hemos enviado a la solicitud del servicio.

Si ahora visualizamos la respuesta que nos ha ofrecido el servicio:

Comprobaremos que los datos expuestos son los mismos que en la solicitud, incluyendo la respuesta

dentro de la etiqueda Return.

Si visualizamos la arquitectura SOAP de un servicio web reali

veremos lo siguiente.

Mismo servicio web con un número como recepción y devolución del doble del número recibido como

parámetro:

SOLICITUD SOAP

RESPUESTA SOAP

Para uso exclusivo de los alumnos de CETICSA S.L.

Como podemos comprobar, contiene el elemento “sobre” (envelope) dentro del documento, incluye

un Header y un body con el contenido que hemos enviado a la solicitud del servicio.

ahora visualizamos la respuesta que nos ha ofrecido el servicio:

Comprobaremos que los datos expuestos son los mismos que en la solicitud, incluyendo la respuesta

Si visualizamos la arquitectura SOAP de un servicio web realizado con la plataforma Visual Studio

Mismo servicio web con un número como recepción y devolución del doble del número recibido como

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Como podemos comprobar, contiene el elemento “sobre” (envelope) dentro del documento, incluye

un Header y un body con el contenido que hemos enviado a la solicitud del servicio.

Comprobaremos que los datos expuestos son los mismos que en la solicitud, incluyendo la respuesta

zado con la plataforma Visual Studio

Mismo servicio web con un número como recepción y devolución del doble del número recibido como

Page 44: Java Modulo 7

Podremos comprobar que la estructura es la misma, por lo

entre servicios es muy sencilla, lo que quiere decir, que al utilizar la misma estructura en su arquitectura,

los servicios se pueden comunicar entre diferentes lenguajes intercambiando su información.

SOA es una arquitectura que permite organizar mucho mejor los sistemas IT de una compañía.

La organización y la utilización de SOAP dentro de cualquier arquitectura de negocio ofrecerá las

siguientes características:

� Escalabilidad

� Robustez

� Homogeneidad

� Facilidad en la adaptación de nuevos servicios

� Facilidad en la reestructuración de sistemas

� Aplicar la lógica en el middleware pudiendo implementar procesos de negocios.

� Recoger información y procesarla para obtener resultados más utiles

� Ahorro en tiempos de implantac

� Ahorro en tiempos de mantenimiento y operación

A pesar de obtener todas estas ventajas, no siempre hay que utilizar los servicios web porque tengamos

una estructura que necesitamos que sea estándar. También tiene sus desventajas la arquitectura.

Por ejemplo, una de las más importantes es la velocidad en el intercambio de información entre

sistemas, ya que es más lenta que si utilizamos un intercambio de información directo de punto a punto

como en aplicaciones cliente-bases de datos, por ejemplo.

El que SOAP sea una arquitectura muy estudiada y utilizada por todos los proveedores de arquitecturas

de desarrollo, no implica que sea recomendable en cualquier escenario.

Ver Video: Estructura SOAP de un Servicio Web Java

en el Modulo 7. Unidad 4, en la p

Para uso exclusivo de los alumnos de CETICSA S.L.

Podremos comprobar que la estructura es la misma, por lo que la escalabilidad y la interoperabilidad

entre servicios es muy sencilla, lo que quiere decir, que al utilizar la misma estructura en su arquitectura,

los servicios se pueden comunicar entre diferentes lenguajes intercambiando su información.

a arquitectura que permite organizar mucho mejor los sistemas IT de una compañía.

La organización y la utilización de SOAP dentro de cualquier arquitectura de negocio ofrecerá las

la adaptación de nuevos servicios

Facilidad en la reestructuración de sistemas

Aplicar la lógica en el middleware pudiendo implementar procesos de negocios.

Recoger información y procesarla para obtener resultados más utiles

Ahorro en tiempos de implantación

Ahorro en tiempos de mantenimiento y operación

A pesar de obtener todas estas ventajas, no siempre hay que utilizar los servicios web porque tengamos

una estructura que necesitamos que sea estándar. También tiene sus desventajas la arquitectura.

ejemplo, una de las más importantes es la velocidad en el intercambio de información entre

sistemas, ya que es más lenta que si utilizamos un intercambio de información directo de punto a punto

bases de datos, por ejemplo.

ue SOAP sea una arquitectura muy estudiada y utilizada por todos los proveedores de arquitecturas

de desarrollo, no implica que sea recomendable en cualquier escenario.

Estructura SOAP de un Servicio Web Java

en el Modulo 7. Unidad 4, en la plataforma elearning

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

que la escalabilidad y la interoperabilidad

entre servicios es muy sencilla, lo que quiere decir, que al utilizar la misma estructura en su arquitectura,

los servicios se pueden comunicar entre diferentes lenguajes intercambiando su información.

a arquitectura que permite organizar mucho mejor los sistemas IT de una compañía.

La organización y la utilización de SOAP dentro de cualquier arquitectura de negocio ofrecerá las

Aplicar la lógica en el middleware pudiendo implementar procesos de negocios.

A pesar de obtener todas estas ventajas, no siempre hay que utilizar los servicios web porque tengamos

una estructura que necesitamos que sea estándar. También tiene sus desventajas la arquitectura.

ejemplo, una de las más importantes es la velocidad en el intercambio de información entre

sistemas, ya que es más lenta que si utilizamos un intercambio de información directo de punto a punto

ue SOAP sea una arquitectura muy estudiada y utilizada por todos los proveedores de arquitecturas

Estructura SOAP de un Servicio Web Java,

lataforma elearning

Page 45: Java Modulo 7

Unidad 5: Desarrollando Servicios Web usando SOAP

Objetivo

Explicar las alternativas técnicas para el envío de documentos adjuntos en una estructura XML.

Introducción

En aplicaciones de Arquitectura orientada a servicios (SOA) suele requerirse que los datos relacionados

con aplicaciones se encuentren asociados con los archivos XML (Lenguaje de marcado extensible)

usados en la aplicación.

Por ejemplo, la foto de un empleado podría estar asociada con el currículum del empleado o una serie

de archivos de datos financieros podrían estar asociados con una aplicación que analice los registros

de las cuentas de la empresa.

Una forma eficaz de enviar estos datos asociados es m

acceso a objetos (Simple Object Access Protocol o SOAP).

Desde el punto de vista del desarrollo, los adjuntos aportan una mayor adaptabilidad y mejoran el

rendimiento de las aplicaciones, lo cual se traduce en

Los adjuntos permiten a sus aplicaciones solicitar los tipos de archivos que sus usuarios podrían asociar a

su aplicación adaptando la aplicación al entorno específico de cada usuario.

En realidad, al enviar información los datos

binario, lo que conforma que el adjunto en sí se encuentra separado

lo tanto, no se analiza como parte del mensaje y esto elimina la costosa sobrecarga de proc

Un adjunto es un conjunto de datos asociados con una aplicación,

“adjuntos” al mensaje que usa la aplicación.

En el momento de trabajar con elementos adjuntos dentro de los servicios web podem

formas diferentes:

� Adjunto con enlace implicito

Un adjunto con enlace explícito es un adjunto modelado como

Descripción de Servicios Web) que está enlazada como parte MIME (Extensiones de Correo de Int

Multipropósito) en un enlace SOAP WSDL.

El protocolo SOAP no contiene ningún elemento que haga referencia al adjunto y el adjunto se

encuentra dentro del soporte SOAP

Los datos son enviados en modo binario y se recuperan

� Adjunto con enlace explicito

Un adjunto referenciado mediante un elemento

usa el tipo de adjunción definido por WS

El cuerpo SOAP incluye una referencia al adjunto.

modelado fuera del archivo WSDL.

Para uso exclusivo de los alumnos de CETICSA S.L.

Desarrollando Servicios Web usando SOAP

con adjuntos

Explicar las alternativas técnicas para el envío de documentos adjuntos en una estructura XML.

En aplicaciones de Arquitectura orientada a servicios (SOA) suele requerirse que los datos relacionados

con aplicaciones se encuentren asociados con los archivos XML (Lenguaje de marcado extensible)

eado podría estar asociada con el currículum del empleado o una serie

de archivos de datos financieros podrían estar asociados con una aplicación que analice los registros

estos datos asociados es mediante un adjunto en Protocolo simple de

acceso a objetos (Simple Object Access Protocol o SOAP).

Desde el punto de vista del desarrollo, los adjuntos aportan una mayor adaptabilidad y mejoran el

rendimiento de las aplicaciones, lo cual se traduce en aplicaciones más usables.

Los adjuntos permiten a sus aplicaciones solicitar los tipos de archivos que sus usuarios podrían asociar a

su aplicación adaptando la aplicación al entorno específico de cada usuario.

En realidad, al enviar información los datos se codifican bajo base 64, es decir se convierten lo

forma que el adjunto en sí se encuentra separado del cuerpo de

como parte del mensaje y esto elimina la costosa sobrecarga de proc

Tipos de adjuntos

os asociados con una aplicación, es decir,

“adjuntos” al mensaje que usa la aplicación.

En el momento de trabajar con elementos adjuntos dentro de los servicios web podem

implicito

es un adjunto modelado como parte del lenguaje

Descripción de Servicios Web) que está enlazada como parte MIME (Extensiones de Correo de Int

Multipropósito) en un enlace SOAP WSDL.

SOAP no contiene ningún elemento que haga referencia al adjunto y el adjunto se

SOAP y dentro del Schema WSDL.

Los datos son enviados en modo binario y se recuperan en el cliente de la misma forma.

explicito

Un adjunto referenciado mediante un elemento href (Referencia SOAP con adjuntos) es un adjunto que

usa el tipo de adjunción definido por WS-I.

El cuerpo SOAP incluye una referencia al adjunto. El adjunto se encuentra fuera del cuerpo SOAP

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Desarrollando Servicios Web usando SOAP

Explicar las alternativas técnicas para el envío de documentos adjuntos en una estructura XML.

En aplicaciones de Arquitectura orientada a servicios (SOA) suele requerirse que los datos relacionados

con aplicaciones se encuentren asociados con los archivos XML (Lenguaje de marcado extensible)

eado podría estar asociada con el currículum del empleado o una serie

de archivos de datos financieros podrían estar asociados con una aplicación que analice los registros

ediante un adjunto en Protocolo simple de

Desde el punto de vista del desarrollo, los adjuntos aportan una mayor adaptabilidad y mejoran el

aplicaciones más usables.

Los adjuntos permiten a sus aplicaciones solicitar los tipos de archivos que sus usuarios podrían asociar a

se codifican bajo base 64, es decir se convierten los datos en

del cuerpo del mensaje SOAP, por

como parte del mensaje y esto elimina la costosa sobrecarga de procesamiento.

Tipos de adjuntos

los datos se encuentran

En el momento de trabajar con elementos adjuntos dentro de los servicios web podemos hacerlo de dos

del lenguaje WSDL (Lenguaje de

Descripción de Servicios Web) que está enlazada como parte MIME (Extensiones de Correo de Internet

SOAP no contiene ningún elemento que haga referencia al adjunto y el adjunto se

en el cliente de la misma forma.

(Referencia SOAP con adjuntos) es un adjunto que

El adjunto se encuentra fuera del cuerpo SOAP y está

Page 46: Java Modulo 7

Para leer la definición de los adjuntos referenciados,

encuentran en direcciones href.

Existen momentos de arquitectura d

incorporar piezas adjuntas o documentos como parte de la estructura de datos a manejar, unos de los

ejemplos más frecuente es adjuntar documentos escaneados en formato de imagen.

Para resolver la solución de adjuntos dentro de documentos y servicios web xml existen

� Incluir los documentos adjuntos en el XML.

� Apuntar desde el XML a un repositorio donde se encuentren almacenados los documentos

(Adjunto Explicito)

En el momento de modelar el documento XML en la etapa de creación del esquema, se deben

considerar las características del proceso de negocio que se quiere desarrollar y de las características

de los documentos a incluir para tomar la decisión correcta.

Al incluir un documento dentro de una representación XML se ve como una cadena de caracteres

como se muestra a continuación:

<documentoXML>

<nombre>Usuario</nombre>

<adjunto>BJkkEI@DsERtgY.....</adjunto>

</documentoXML>

Cuando incluimos documentos adjun

ventajas y desventajas:

Ventajas de adjuntos implícitos

� El documento XML contiene

� Cuando se intercambia (enviamos/recibimos) el documento XML, se transfiere un solo

documento.

� Si el documento se debe firmar con Firma Electrónica Avanzada, la aplicación de firma tiene

todos los elementos para el procesamiento.

� Agiliza la arquitectura de repositorio y el flujo de trabajo basados en el documento XML.

Desventajas de adjuntos implícitos

� La incorporación de archivos binarios puede aumentar el tamaño del archivo XML hasta un

punto que dificulta el procesamiento o intercambio

� La respuesta del servicio web que devuelve el documento xml con adjunto es más lenta y la

transferencia de información se realiza de forma menos óptima debido a la lentitud del envío.

XML permite la inclusión de archivos binarios a través del tipo de da

W3C en la dirección:

http://www.w3.org/TR/2001/REC-xmlschema

El tipo de dato base64binary representa al archivo binario codificado en base64.

Para uso exclusivo de los alumnos de CETICSA S.L.

Para leer la definición de los adjuntos referenciados, debemos acceder a elementos de terceros que se

de la información en algunos documentos XML

incorporar piezas adjuntas o documentos como parte de la estructura de datos a manejar, unos de los

ejemplos más frecuente es adjuntar documentos escaneados en formato de imagen.

la solución de adjuntos dentro de documentos y servicios web xml existen

Incluir los documentos adjuntos en el XML. (Adjunto Implicito)

Apuntar desde el XML a un repositorio donde se encuentren almacenados los documentos

Modelo de adjuntos implicitos

momento de modelar el documento XML en la etapa de creación del esquema, se deben

considerar las características del proceso de negocio que se quiere desarrollar y de las características

de los documentos a incluir para tomar la decisión correcta.

cluir un documento dentro de una representación XML se ve como una cadena de caracteres

<nombre>Usuario</nombre>

<adjunto>BJkkEI@DsERtgY.....</adjunto>

Cuando incluimos documentos adjuntos dentro del propio documento XML existen una serie de

todos los datos modelados. (Ej: datos modelados+

Cuando se intercambia (enviamos/recibimos) el documento XML, se transfiere un solo

Si el documento se debe firmar con Firma Electrónica Avanzada, la aplicación de firma tiene

todos los elementos para el procesamiento.

de repositorio y el flujo de trabajo basados en el documento XML.

La incorporación de archivos binarios puede aumentar el tamaño del archivo XML hasta un

punto que dificulta el procesamiento o intercambio de información.

La respuesta del servicio web que devuelve el documento xml con adjunto es más lenta y la

transferencia de información se realiza de forma menos óptima debido a la lentitud del envío.

XML permite la inclusión de archivos binarios a través del tipo de datos: xs: base64Binary definido por la

xmlschema-2-20010502/#base64Binary

representa al archivo binario codificado en base64.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

debemos acceder a elementos de terceros que se

información en algunos documentos XML en los que se requiere

incorporar piezas adjuntas o documentos como parte de la estructura de datos a manejar, unos de los

ejemplos más frecuente es adjuntar documentos escaneados en formato de imagen.

la solución de adjuntos dentro de documentos y servicios web xml existen dos opciones:

Apuntar desde el XML a un repositorio donde se encuentren almacenados los documentos

Modelo de adjuntos implicitos

momento de modelar el documento XML en la etapa de creación del esquema, se deben

considerar las características del proceso de negocio que se quiere desarrollar y de las características

cluir un documento dentro de una representación XML se ve como una cadena de caracteres

tos dentro del propio documento XML existen una serie de

: datos modelados+nombre+adjunto).

Cuando se intercambia (enviamos/recibimos) el documento XML, se transfiere un solo

Si el documento se debe firmar con Firma Electrónica Avanzada, la aplicación de firma tiene

de repositorio y el flujo de trabajo basados en el documento XML.

La incorporación de archivos binarios puede aumentar el tamaño del archivo XML hasta un

La respuesta del servicio web que devuelve el documento xml con adjunto es más lenta y la

transferencia de información se realiza de forma menos óptima debido a la lentitud del envío.

tos: xs: base64Binary definido por la

representa al archivo binario codificado en base64.

Page 47: Java Modulo 7

Se codifica en base64 para tener una cadena de ca

el lenguaje XML como son:

Por ejemplo, la estructura de un esquema

imagen asociada dentro del documento sería la siguiente:

Y el documento XML que tendría la referencia al resultado sería el siguiente:

<Adjuntos>

<imagen>

<Nro>1</Nro>

<Nombre>Usuario</Nombre>

<MimeType>image/jpeg</MimeType>

<DataCodificada>/9j/4AAQSkZJRgABAAEAyADIAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW

5jLiBWMS4wMQD/_

2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIrIhscKDYoKy8xMzQzHyY4PD

gyPC4yMzEBC_

AkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMf

/EaaI_

AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF

CQoLEAACAQMDAgQD_

BQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1

Njc4OTpDREVGR0h_

JSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w

sPExcbHyMnK0tPU1dbX2N_

na4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBR

CkaGxwQ ……

</DataCodificada>

</imagen>

</Adjuntos>

Vamos a visualizar un ejemplo para enviar un texto como adjunto dentro de un servicio web.

Vamos a a crearnos un nuevo proyecto en Netbeans del tipo Java Web y seleccionamos Web

Application:

Para uso exclusivo de los alumnos de CETICSA S.L.

Se codifica en base64 para tener una cadena de caracteres donde ningún carácter sea prohibido por

esquema WSDL para enviar una información de un contacto con

asociada dentro del documento sería la siguiente:

tendría la referencia al resultado sería el siguiente:

<Nombre>Usuario</Nombre>

<MimeType>image/jpeg</MimeType>

<DataCodificada>/9j/4AAQSkZJRgABAAEAyADIAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW

2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIrIhscKDYoKy8xMzQzHyY4PD

AkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMf

AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF

BQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1

JSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w

na4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBR

Vamos a visualizar un ejemplo para enviar un texto como adjunto dentro de un servicio web.

proyecto en Netbeans del tipo Java Web y seleccionamos Web

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

racteres donde ningún carácter sea prohibido por

enviar una información de un contacto con una

<DataCodificada>/9j/4AAQSkZJRgABAAEAyADIAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW

2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIrIhscKDYoKy8xMzQzHyY4PD

AkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMf

AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI

BQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1

JSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w

na4eLj5OXm5+jp6vHy8/T19vf4+foRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBR

Vamos a visualizar un ejemplo para enviar un texto como adjunto dentro de un servicio web.

proyecto en Netbeans del tipo Java Web y seleccionamos Web

Page 48: Java Modulo 7

Llamaremos al proyecto EjemploAdjuntos

Utilizaremos el servidor de aplicaciones GlasshFish y no agregaremos ningún Framework al proyecto.

Sobre el proyecto vamos a agregar un nuevo

Para uso exclusivo de los alumnos de CETICSA S.L.

EjemploAdjuntos

Utilizaremos el servidor de aplicaciones GlasshFish y no agregaremos ningún Framework al proyecto.

Sobre el proyecto vamos a agregar un nuevo elemento:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Utilizaremos el servidor de aplicaciones GlasshFish y no agregaremos ningún Framework al proyecto.

Page 49: Java Modulo 7

En la carpeta Web Services, seleccionaremos Web Service.

Lo llamaremos ServicioAdjunto

Ahora en nuestro código del servicio, lo que haremos será agregar un método que nos devolverá los

datos de un fichero de texto plano, en el envío, tendr

filtrados y decodificados en base 64.

El método que agregaremos devolverá un array del tipo de dato byte:

Para uso exclusivo de los alumnos de CETICSA S.L.

En la carpeta Web Services, seleccionaremos Web Service.

Ahora en nuestro código del servicio, lo que haremos será agregar un método que nos devolverá los

datos de un fichero de texto plano, en el envío, tendremos los datos codificados, y al cliente le llegarán

filtrados y decodificados en base 64.

El método que agregaremos devolverá un array del tipo de dato byte:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora en nuestro código del servicio, lo que haremos será agregar un método que nos devolverá los

emos los datos codificados, y al cliente le llegarán

Page 50: Java Modulo 7

Una vez que hemos agregado el método, vamos a implementarlo para devolver un texto codificado

binario.

Para ello, debemos utilizar la clase base64 para que en la salida del flujo binario no existan caracteres

especiales que no admitan el protocolo http de los servicios web.

El código de la clase del Servicio Web quedará de la siguiente forma:

package paquetews;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

import javax.jws.WebMethod;

import javax.jws.WebService;

@WebService()

public class ServicioAdjunto {

/**

* Web service operation

*/

@WebMethod(operationName = "adjuntoBinario")

public byte[] adjuntoBinario() {

String texto = "java";

byte[] salida = Base64.decode(texto);

return salida;

}

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que hemos agregado el método, vamos a implementarlo para devolver un texto codificado

Para ello, debemos utilizar la clase base64 para que en la salida del flujo binario no existan caracteres

especiales que no admitan el protocolo http de los servicios web.

El código de la clase del Servicio Web quedará de la siguiente forma:

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

@WebMethod(operationName = "adjuntoBinario")

byte[] salida = Base64.decode(texto);

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que hemos agregado el método, vamos a implementarlo para devolver un texto codificado en

Para ello, debemos utilizar la clase base64 para que en la salida del flujo binario no existan caracteres

Page 51: Java Modulo 7

}

Debemos agregar el espacio de nombres de apache para poder env

binarios:

Ahora vamos a probar el servicio web para mostrar el envío de información codificada y la

decodificación en el cliente. Para ello vamos a recuperar el Tester de Netbeans para mostrar los datos

del servicio:

Veremos la pantalla de presentación del servicio:

Para uso exclusivo de los alumnos de CETICSA S.L.

Debemos agregar el espacio de nombres de apache para poder enviar la codificación de datos

Ahora vamos a probar el servicio web para mostrar el envío de información codificada y la

decodificación en el cliente. Para ello vamos a recuperar el Tester de Netbeans para mostrar los datos

os la pantalla de presentación del servicio:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

iar la codificación de datos

Ahora vamos a probar el servicio web para mostrar el envío de información codificada y la

decodificación en el cliente. Para ello vamos a recuperar el Tester de Netbeans para mostrar los datos

Page 52: Java Modulo 7

Cuando pulsemos sobre el botón para visualizar los datos en binario, veremos el resultado de enviar los

datos en binario:

Si visualizamos la respuesta, veremos que el texto llegará al cliente decodificado:

Modelo adjuntos referenciados (Explícitos)

Apuntar o referenciar un documento adjunto, significa indicar la URL en la cual se encuentra dicho

documento.

Para uso exclusivo de los alumnos de CETICSA S.L.

Cuando pulsemos sobre el botón para visualizar los datos en binario, veremos el resultado de enviar los

Si visualizamos la respuesta, veremos que el texto llegará al cliente decodificado:

Modelo adjuntos referenciados (Explícitos)

Apuntar o referenciar un documento adjunto, significa indicar la URL en la cual se encuentra dicho

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Cuando pulsemos sobre el botón para visualizar los datos en binario, veremos el resultado de enviar los

Si visualizamos la respuesta, veremos que el texto llegará al cliente decodificado:

Modelo adjuntos referenciados (Explícitos)

Apuntar o referenciar un documento adjunto, significa indicar la URL en la cual se encuentra dicho

Page 53: Java Modulo 7

La forma correcta de referenciar los documentos en un XML, puede ser de las siguientes formas:

� Utilizando href

<documentoXML>

<nombre>Usuario</nombre>

< adjunto href=“http://www.ejemplos.com/documento.doc”/>

</documentoXML>

� XLink

<documentoXML>

<nombre>Usuario</nombre>

<adjunto xmlns:xlink="http://www.w3.org/XML/XLink/0.9" _

xlink:type="simple" xlink:href=" http://www.ejemplos.com/documento.doc”/>

</documentoXML>

Al igual que sucede con los documentos XML que contienen la información de forma implícita, los

documentos XML con adjuntos explícitos tienen sus ventajas y desven

Ventajas adjuntos explicitos

� Permite no cargar la instancia XML en término de tamaño.

� Permite tener extensibilidad en caso de lista (el documento XML puede apuntar tanto a 10

documentos como a 10.000)

Desventajas adjuntos explicitos

� El documento XML no contiene todos los datos modelados.

� Cuando se intercambia (enviar/recibir) el documento XML, se transfiere un documento.

el receptor debe pedir los documentos relacionados según necesidades.

� Si el documento se firma con Firma Electrónica

todos los documentos antes de generar una representación del objeto a firmar.

� Esto en el caso de que los adjuntos sean parte de los datos que se requiere firmar.

� Requiere de un repositorio permanentemente disponible y de simple acceso, especialmente

cuando se intercambian estos documentos XML.

� Requiere una gestión de cambios de los adjuntos y permanencia de todas las versiones en

repositorio.

� Si un documento en formato XML firmado con Firma Electrónica Avanzada apunta a adjuntos en

un repositorio, al momento de verificar la firma electrónica 2 años después de su creación, los

adjuntos a los cuales apunta el XML deben ser los originales

Formato de adjuntos en Servicios Web

En el proceso de intercambio de información entre instituciones, se debe resolver el problema de

transferir un expediente de documentación asociado a un proceso de negocio.

Este intercambio de información actualmente se realiz

La estructura SOAP es un documento XML, donde se pueden incluir otro documento XML como parte

del SOAP o como archivo binario.

Para uso exclusivo de los alumnos de CETICSA S.L.

La forma correcta de referenciar los documentos en un XML, puede ser de las siguientes formas:

< adjunto href=“http://www.ejemplos.com/documento.doc”/>

<nombre>Usuario</nombre>

<adjunto xmlns:xlink="http://www.w3.org/XML/XLink/0.9" _

xlink:href=" http://www.ejemplos.com/documento.doc”/>

Al igual que sucede con los documentos XML que contienen la información de forma implícita, los

documentos XML con adjuntos explícitos tienen sus ventajas y desventajas:

Permite no cargar la instancia XML en término de tamaño.

Permite tener extensibilidad en caso de lista (el documento XML puede apuntar tanto a 10

documentos como a 10.000)

XML no contiene todos los datos modelados.

Cuando se intercambia (enviar/recibir) el documento XML, se transfiere un documento.

el receptor debe pedir los documentos relacionados según necesidades.

Si el documento se firma con Firma Electrónica Avanzada, la aplicación de firma debe pedir

todos los documentos antes de generar una representación del objeto a firmar.

Esto en el caso de que los adjuntos sean parte de los datos que se requiere firmar.

Requiere de un repositorio permanentemente disponible y de simple acceso, especialmente

cuando se intercambian estos documentos XML.

Requiere una gestión de cambios de los adjuntos y permanencia de todas las versiones en

formato XML firmado con Firma Electrónica Avanzada apunta a adjuntos en

un repositorio, al momento de verificar la firma electrónica 2 años después de su creación, los

adjuntos a los cuales apunta el XML deben ser los originales, no modificados.

de adjuntos en Servicios Web

En el proceso de intercambio de información entre instituciones, se debe resolver el problema de

transferir un expediente de documentación asociado a un proceso de negocio.

Este intercambio de información actualmente se realiza a través de Servicios Web con estructura SOAP.

La estructura SOAP es un documento XML, donde se pueden incluir otro documento XML como parte

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

La forma correcta de referenciar los documentos en un XML, puede ser de las siguientes formas:

Al igual que sucede con los documentos XML que contienen la información de forma implícita, los

Permite tener extensibilidad en caso de lista (el documento XML puede apuntar tanto a 10

Cuando se intercambia (enviar/recibir) el documento XML, se transfiere un documento. Luego,

el receptor debe pedir los documentos relacionados según necesidades.

Avanzada, la aplicación de firma debe pedir

todos los documentos antes de generar una representación del objeto a firmar.

Esto en el caso de que los adjuntos sean parte de los datos que se requiere firmar.

Requiere de un repositorio permanentemente disponible y de simple acceso, especialmente

Requiere una gestión de cambios de los adjuntos y permanencia de todas las versiones en un

formato XML firmado con Firma Electrónica Avanzada apunta a adjuntos en

un repositorio, al momento de verificar la firma electrónica 2 años después de su creación, los

modificados.

En el proceso de intercambio de información entre instituciones, se debe resolver el problema de

transferir un expediente de documentación asociado a un proceso de negocio.

a a través de Servicios Web con estructura SOAP.

La estructura SOAP es un documento XML, donde se pueden incluir otro documento XML como parte

Page 54: Java Modulo 7

En un mensaje SOAP, se ocupa la misma técnica de incorporación del archivo bin

Base64binary como se indicó anteriormente.

Este método es el mismo que utilizan

un email, dicha transformación se hace a nivel del servidor y es transparente al nivel del

Al nivel de la interfaz del servicio Web, se pueden especificar los métodos de envío que optimizan el

mensaje cuando contiene archivos.

Los estándares de optimización de transferencia de archivos binarios han ido evolucionando para

incorporar compatibilidad con los estándares de Web Services.

Cronológicamente, los estándares de transferencia de archivos en servicios Web SOAP son:

� SOAP Messages with Attachments (SwA)

� Direct Internet Message Encapsulation (DIME)

� WS-Attachments

� XML-binary Optimized Packaging (XOP)

� SOAP Message Transmission Optimization Mechanism (MTOM)

Se sugiere utilizar el estándar MTOM por las siguientes características:

� MTOM optimiza la transferencia de binarios (de tipo base64Binary en el XML)

� MTOM es un mecanismo implementado al nivel del servicio Web (en la práctica, es el servidor

que se encarga de implementar MTOM).

� MTOM opera al nivel de la transmisión del mensaje, eso es, entre el servicio web SOAP y el

consumidor del servicio web.

� MTOM serializa el mensaje en formato “MIME Multipart/Related” utilizando XOP

Laboratorio: Adjuntos explícitos en Servicios Web

Objetivo

Visualizar el funcionamiento de los adjuntos en los servicios web.

Enunciado

Vamos a realizar un nuevo proyecto en el que

El servicio web será algo muy sencillo, simplemente devolveremos el texto que hace referencia a un

fichero adjunto dentro de una página web.

Para ello, nos crearemos una nueva tabla en la que tendremos los da

referencias http de dónde están ubicadas sus imágenes.

Recibiremos el dato del usuario y devolveremos en el servicio la dirección http dónde está ubicada su

imagen.

Para uso exclusivo de los alumnos de CETICSA S.L.

En un mensaje SOAP, se ocupa la misma técnica de incorporación del archivo bin

Base64binary como se indicó anteriormente.

el mismo que utilizan los servidores de correo cuando transfieren los archivos adjuntos de

, dicha transformación se hace a nivel del servidor y es transparente al nivel del

Al nivel de la interfaz del servicio Web, se pueden especificar los métodos de envío que optimizan el

mensaje cuando contiene archivos.

Los estándares de optimización de transferencia de archivos binarios han ido evolucionando para

compatibilidad con los estándares de Web Services.

Cronológicamente, los estándares de transferencia de archivos en servicios Web SOAP son:

SOAP Messages with Attachments (SwA)

Direct Internet Message Encapsulation (DIME)

binary Optimized Packaging (XOP)

SOAP Message Transmission Optimization Mechanism (MTOM)

Se sugiere utilizar el estándar MTOM por las siguientes características:

MTOM optimiza la transferencia de binarios (de tipo base64Binary en el XML)

mecanismo implementado al nivel del servicio Web (en la práctica, es el servidor

que se encarga de implementar MTOM).

MTOM opera al nivel de la transmisión del mensaje, eso es, entre el servicio web SOAP y el

consumidor del servicio web.

el mensaje en formato “MIME Multipart/Related” utilizando XOP

Laboratorio: Adjuntos explícitos en Servicios Web

Visualizar el funcionamiento de los adjuntos en los servicios web.

Vamos a realizar un nuevo proyecto en el que enviaremos una imagen dentro del documento XML.

El servicio web será algo muy sencillo, simplemente devolveremos el texto que hace referencia a un

fichero adjunto dentro de una página web.

Para ello, nos crearemos una nueva tabla en la que tendremos los datos de unos usuarios y las

referencias http de dónde están ubicadas sus imágenes.

Recibiremos el dato del usuario y devolveremos en el servicio la dirección http dónde está ubicada su

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

En un mensaje SOAP, se ocupa la misma técnica de incorporación del archivo binario en formato

los servidores de correo cuando transfieren los archivos adjuntos de

, dicha transformación se hace a nivel del servidor y es transparente al nivel del usuario.

Al nivel de la interfaz del servicio Web, se pueden especificar los métodos de envío que optimizan el

Los estándares de optimización de transferencia de archivos binarios han ido evolucionando para

Cronológicamente, los estándares de transferencia de archivos en servicios Web SOAP son:

MTOM optimiza la transferencia de binarios (de tipo base64Binary en el XML)

mecanismo implementado al nivel del servicio Web (en la práctica, es el servidor

MTOM opera al nivel de la transmisión del mensaje, eso es, entre el servicio web SOAP y el

el mensaje en formato “MIME Multipart/Related” utilizando XOP.

Laboratorio: Adjuntos explícitos en Servicios Web

enviaremos una imagen dentro del documento XML.

El servicio web será algo muy sencillo, simplemente devolveremos el texto que hace referencia a un

tos de unos usuarios y las

Recibiremos el dato del usuario y devolveremos en el servicio la dirección http dónde está ubicada su

Page 55: Java Modulo 7

Debemos realizar la siguiente base de datos para poder acceder

CREATE TABLE USUARIOS

(ID_USUARIO INT

, USUARIO VARCHAR2(30)

, DIRECCIONIMAGEN VARCHAR2(200));

insert into usuarios values (1,'Xabi Alonso','http://3.bp.blogspot.com/

DHheOC5uJKg/TZkK3VFRzuI/AAAAAAAAAJg/dALQcYUax4I/_

s1600/xabi-alonso-real-madrid.jpg');

insert into usuarios values (2,'Villa','http://www.noticias112.com/wp

content/uploads/2010/06/07_Villa_espana_rusia_celebracion_2.jpg');

insert into usuarios values (3,'Casillas','http://4.bp.blogspot.com/_

Fo2nyMBaH8/TC_Ad1obWyI/AAAAAAAAAqQ/V

Casillas_987861.jpg');

insert into usuarios values (4,'Iniesta','http://www.experienciapersonal.es/wp

content/uploads/2010/07/Gol-de-Iniesta.jpg');

COMMIT;

A continuación, nos crearemos un nuevo proyecto en Netbea

Llamaremos al proyecto ProyectoAdjuntos

Para uso exclusivo de los alumnos de CETICSA S.L.

Debemos realizar la siguiente base de datos para poder acceder a los datos de los usuarios:

, DIRECCIONIMAGEN VARCHAR2(200));

insert into usuarios values (1,'Xabi Alonso','http://3.bp.blogspot.com/-

DHheOC5uJKg/TZkK3VFRzuI/AAAAAAAAAJg/dALQcYUax4I/_

insert into usuarios values (2,'Villa','http://www.noticias112.com/wp-

content/uploads/2010/06/07_Villa_espana_rusia_celebracion_2.jpg');

insert into usuarios values (3,'Casillas','http://4.bp.blogspot.com/_-

C_Ad1obWyI/AAAAAAAAAqQ/V-J7aScm8Hc/s1600/_

insert into usuarios values (4,'Iniesta','http://www.experienciapersonal.es/wp-

Iniesta.jpg');

A continuación, nos crearemos un nuevo proyecto en Netbeans de tipo Web Application.

Llamaremos al proyecto ProyectoAdjuntos

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

a los datos de los usuarios:

ns de tipo Web Application.

Page 56: Java Modulo 7

Utilizaremos el servidor de aplicaciones GlassFish y no utilizaremos Frameworks.

Sobre el proyecto, vamos a agregar la librería para trabajar con Oracle.

Para uso exclusivo de los alumnos de CETICSA S.L.

Utilizaremos el servidor de aplicaciones GlassFish y no utilizaremos Frameworks.

Sobre el proyecto, vamos a agregar la librería para trabajar con Oracle.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 57: Java Modulo 7

Sobre el proyecto vamos a agregar un nuevo Servicio Web

Lo llamaremos ServicioAdjuntos

Para uso exclusivo de los alumnos de CETICSA S.L.

a agregar un nuevo Servicio Web

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 58: Java Modulo 7

Vamos a agregar una nueva operación:

Añadimos un método que recibirá el Id del usuario y devolverá la dirección del adjunto explicito.

También crearemos un método para poder devolver e

El código del Servicio Web quedará de la siguiente forma:

package paquete;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

import java.sql.*;

@WebService()

public class ServicioAdjuntos {

public enum TipoConsulta

{

NOMBREUSUARIO, DIRECCIONIMAGEN

};

@WebMethod(operationName = "datosUsuarios")

public String datosUsuarios(@WebParam(name = "idusuario")

int idusuario) {

return this.getDato(idusuario, TipoConsulta.DIRECCIONIMAGEN);

}

@WebMethod(operationName = "nombreUsuarios")

Para uso exclusivo de los alumnos de CETICSA S.L.

Vamos a agregar una nueva operación:

Añadimos un método que recibirá el Id del usuario y devolverá la dirección del adjunto explicito.

También crearemos un método para poder devolver el nombre del usuario a través de su ID.

El código del Servicio Web quedará de la siguiente forma:

NOMBREUSUARIO, DIRECCIONIMAGEN

@WebMethod(operationName = "datosUsuarios")

public String datosUsuarios(@WebParam(name = "idusuario")

return this.getDato(idusuario, TipoConsulta.DIRECCIONIMAGEN);

@WebMethod(operationName = "nombreUsuarios")

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Añadimos un método que recibirá el Id del usuario y devolverá la dirección del adjunto explicito.

l nombre del usuario a través de su ID.

Page 59: Java Modulo 7

public String nombreUsuarios(@WebParam(name = "idusuario")

int idusuario) {

return this.getDato(idusuario, Tip

}

private String getDato(int idusuario, TipoConsulta tipo)

{

try

{

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

Connection conn = DriverManager.getConnec

"java");

Statement stmt = conn.createStatement();

String consulta;

consulta = "SELECT * FROM USUARIOS WHERE ID_USUARIO=?";

PreparedStatement smt = conn.pre

smt.setInt(1, idusuario);

ResultSet rs = smt.executeQuery();

rs.next();

String dato="";

if (tipo == TipoConsulta.NOMBREUSUARIO)

{

dato = rs.getString("USUARIO");

}else

{

dato = rs.getString("DIRECCIONIMAGEN");

}

rs.close();

return dato;

}catch (Exception ex)

{

return ex.getMessage();

}

}

}

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

Para uso exclusivo de los alumnos de CETICSA S.L.

public String nombreUsuarios(@WebParam(name = "idusuario")

return this.getDato(idusuario, TipoConsulta.NOMBREUSUARIO);

private String getDato(int idusuario, TipoConsulta tipo)

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system",

Statement stmt = conn.createStatement();

consulta = "SELECT * FROM USUARIOS WHERE ID_USUARIO=?";

PreparedStatement smt = conn.prepareCall(consulta);

ResultSet rs = smt.executeQuery();

if (tipo == TipoConsulta.NOMBREUSUARIO)

dato = rs.getString("USUARIO");

dato = rs.getString("DIRECCIONIMAGEN");

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

tion("jdbc:oracle:thin:@localhost:1521:XE","system",

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

Page 60: Java Modulo 7

Veremos la pantalla de presentación del servicio:

Si invocamos el servicio, comprobaremos que el dato es devuelto:

Y el adjunto va en la respuesta XML del servicio

Para uso exclusivo de los alumnos de CETICSA S.L.

Veremos la pantalla de presentación del servicio:

Si invocamos el servicio, comprobaremos que el dato es devuelto:

va en la respuesta XML del servicio

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 61: Java Modulo 7

Unidad 6: Explicando el lenguaje de Servicios Web

Objetivos

� Aprender los conceptos de fundamentales de los documentos WSDL.

� Conocer la estructura de cualquier documento WSDL dentro de los Servicios Web.

� Visualizar la relación de los esquemas XSD con los Servicios Web.

Introducción

WSDL es un protocolo basado en XML que describe los accesos al Web Service.

Podriamos decir que es el manual de operación del web service, porque nos indica cuales son las

interfaces que provee el Servicio web y los tipos de datos necesarios para la utilización del mismo.

WSDL es el lenguaje propuesto por el W3C para la descripción de Servicios Web y permite describir la

interfaz de un servicio web en un formato XML.

Una de las ventajas de WSDL es que permite separar la

ofrecida por un servicio, es decir, de los detalles concretos del mismo,

protocolo de red o un formato de mensaje concreto que puede ser SOAP, HTTP o MIME

WSDL describe los servicios Web a través de los mensajes que se intercambian entre el proveedor del

servicio y el cliente.

El intercambio de mensajes se define mediante operaciones.

Una colección de operaciones forma un tipo de puerto.

Un tipo de puerto constituye la descripción completa de la interfaz del

Esta descripción abstracta es unida luego a un formato de mensaje

una interfaz “concreta” del servicio.

Cada servicio contiene uno o varios

del servicio.

Podemos visualizar los elementos de un documento WSDL en la siguiente figura:

Para uso exclusivo de los alumnos de CETICSA S.L.

Explicando el lenguaje de Servicios Web

(WSDL)

los conceptos de fundamentales de los documentos WSDL.

Conocer la estructura de cualquier documento WSDL dentro de los Servicios Web.

Visualizar la relación de los esquemas XSD con los Servicios Web.

s un protocolo basado en XML que describe los accesos al Web Service.

Podriamos decir que es el manual de operación del web service, porque nos indica cuales son las

rfaces que provee el Servicio web y los tipos de datos necesarios para la utilización del mismo.

WSDL es el lenguaje propuesto por el W3C para la descripción de Servicios Web y permite describir la

en un formato XML.

ventajas de WSDL es que permite separar la descripción abstracta de la funcionalidad

de los detalles concretos del mismo, como puede ser

formato de mensaje concreto que puede ser SOAP, HTTP o MIME

WSDL describe los servicios Web a través de los mensajes que se intercambian entre el proveedor del

El intercambio de mensajes se define mediante operaciones.

operaciones forma un tipo de puerto.

Un tipo de puerto constituye la descripción completa de la interfaz del servicio de manera “abstracta”.

Esta descripción abstracta es unida luego a un formato de mensaje concreto, lo cual permite describir

interfaz “concreta” del servicio.

Cada servicio contiene uno o varios puertos y cada puerto indica la localización de la interfaz concreta

Podemos visualizar los elementos de un documento WSDL en la siguiente figura:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Explicando el lenguaje de Servicios Web

Conocer la estructura de cualquier documento WSDL dentro de los Servicios Web.

Podriamos decir que es el manual de operación del web service, porque nos indica cuales son las

rfaces que provee el Servicio web y los tipos de datos necesarios para la utilización del mismo.

WSDL es el lenguaje propuesto por el W3C para la descripción de Servicios Web y permite describir la

descripción abstracta de la funcionalidad

puede ser el enlace a un

formato de mensaje concreto que puede ser SOAP, HTTP o MIME.

WSDL describe los servicios Web a través de los mensajes que se intercambian entre el proveedor del

servicio de manera “abstracta”.

concreto, lo cual permite describir

ada puerto indica la localización de la interfaz concreta

Page 62: Java Modulo 7

Un documento WSDL contiene un número de versión y un componente raíz

nombre, Name y un atributo TargetNameSpace, que declara el espacio de nombres al que

pertenecerán todos los nombres de componentes definidos en el documento.

Un componente Definition puede contener un componente

o más componentes Message, Porttype

Todos los componentes de WSDL pueden tener asociado un componente

Un componente Types se utiliza para

envío de mensajes.

Para esta definición, WSDL se basa en el estándar XML Schema

Por ello contiene un componente

cada uno de los tipos de datos, de acuerdo al estándar

WSDL permite incluir documentos XML Schemas definido

Include, a través del cual se indica la localización del

De la misma forma, un componente

documentos WSDL, indicando el nombre y localización del documento que se desea importar.

El componente PortType se utiliza para describir el conjunto de mensajes que serán interc

entre el proveedor del servicio y el cliente.

Los mensajes se agrupan en operaciones,

Cada operación contiene un nombre y puede tener uno, dos o tres mensajes asociados, es decir, un

mensaje de entrada, mensaje de salido o los dos al mismo tiempo

excepción.

Un mensaje está definido con la etiqueta

contiene un nombre y parámetros con la etiqueta Part

El tipo asociado a un Part puede ser un tipo base XSD

tipo definido en la sección de tipos

En este último caso, el tipo de dato puede ser asociado a través de un atribut

dependiendo del tipo de dato que se desea asociar.

Para uso exclusivo de los alumnos de CETICSA S.L.

ntiene un número de versión y un componente raíz Definition

nombre, Name y un atributo TargetNameSpace, que declara el espacio de nombres al que

todos los nombres de componentes definidos en el documento.

contener un componente Types y, además podrá contener uno,

Porttype, Binding, Service e import.

Todos los componentes de WSDL pueden tener asociado un componente Documentation

se utiliza para la definición de los tipos de datos que serán necesarios para el

a en el estándar XML Schema.

Schema y asociado a éste, componentes

datos, de acuerdo al estándar de los esquemas XML.

WSDL permite incluir documentos XML Schemas definidos previamente y para ello utiliza un componente

, a través del cual se indica la localización del documento.

un componente Import se utiliza para reutilizar definiciones hechas en

documentos WSDL, indicando el nombre y localización del documento que se desea importar.

se utiliza para describir el conjunto de mensajes que serán interc

entre el proveedor del servicio y el cliente.

Los mensajes se agrupan en operaciones, es decir, etiquetas Operation.

operación contiene un nombre y puede tener uno, dos o tres mensajes asociados, es decir, un

salido o los dos al mismo tiempo, y opcionalmente

Un mensaje está definido con la etiqueta message y contiene una definición similar a la de una función,

contiene un nombre y parámetros con la etiqueta Part.

puede ser un tipo base XSD de los esquemas XML (int, float, string, etc.) o un

creados en el propio Servicio Web y enviado en éste

último caso, el tipo de dato puede ser asociado a través de un atribut

de dato que se desea asociar.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Definition, que posee un

nombre, Name y un atributo TargetNameSpace, que declara el espacio de nombres al que

, además podrá contener uno, cero

Documentation.

la definición de los tipos de datos que serán necesarios para el

y asociado a éste, componentes Element que describen

previamente y para ello utiliza un componente

se utiliza para reutilizar definiciones hechas en otros

documentos WSDL, indicando el nombre y localización del documento que se desea importar.

se utiliza para describir el conjunto de mensajes que serán intercambiados

operación contiene un nombre y puede tener uno, dos o tres mensajes asociados, es decir, un

, y opcionalmente, un mensaje de

una definición similar a la de una función,

(int, float, string, etc.) o un

creados en el propio Servicio Web y enviado en éste.

último caso, el tipo de dato puede ser asociado a través de un atributo type o element,

Page 63: Java Modulo 7

El componente PortType describe completamente la interfaz del servicio de manera abstracta.

El componente Binding describe un formato de mensaje y protocolo de transmisión concretos (SOAP

HTTP o MIME) para el enlace con un componente

WSDL define diferentes componentes para describ

El componente Port define el punto concreto de acceso al servicio.

Contiene un nombre y combina un

implementación del servicio.

Por último, el componente Service, contiene un nombre, que será el nombre del servicio y uno o varios

puertos, con la etiqueta Port, asociados.

Un ejemplo de documento WSDL es el siguie

<?xml version="1.0">

<definitions>

<types>

...

</types>

<message>

...

</message>

<portType>

...

</portType>

<binding>

...

</binding>

</definitions>

En esta tabla podemos visualizar el significado de cada elemento dentro del documento

Elemento WSDL

<?xml version="1.0">

<definitions>

<types>

</types>

<message>

Para uso exclusivo de los alumnos de CETICSA S.L.

describe completamente la interfaz del servicio de manera abstracta.

describe un formato de mensaje y protocolo de transmisión concretos (SOAP

HTTP o MIME) para el enlace con un componente PortType.

componentes para describir cada uno de estos protocolos

define el punto concreto de acceso al servicio.

Contiene un nombre y combina un componente Binding con la dirección donde se accede a la

, contiene un nombre, que será el nombre del servicio y uno o varios

, con la etiqueta Port, asociados.

Un ejemplo de documento WSDL es el siguiente:

En esta tabla podemos visualizar el significado de cada elemento dentro del documento

Descripción

Un documento WSDL es como cualquier documento xml y se

basa en los esquemas, por lo que debe comenzar con el tag

Comienzo del documento, este tag agrupa a todos los demás

elementos

Se definen los tipos de datos utilizados en el Web Service

Fin de la definición de tipos

Se definen los métodos y parámetros para realizar la

operación.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

describe completamente la interfaz del servicio de manera abstracta.

describe un formato de mensaje y protocolo de transmisión concretos (SOAP,

ir cada uno de estos protocolos.

con la dirección donde se accede a la

, contiene un nombre, que será el nombre del servicio y uno o varios

En esta tabla podemos visualizar el significado de cada elemento dentro del documento WSDL anterior.

Un documento WSDL es como cualquier documento xml y se

debe comenzar con el tag

Comienzo del documento, este tag agrupa a todos los demás

Se definen los tipos de datos utilizados en el Web Service

Se definen los métodos y parámetros para realizar la

Page 64: Java Modulo 7

</message>

<portType>

</portType>

<binding>

</binding>

En la estructura de cualquier Servicio Web, el fichero WSDL se basa en enviar la información y los

mensajes de entrada y respuesta al cliente que realiza la petición.

Los pasos que se realizan al consumir el servicio son los siguientes:

1) Lo primero que realiza el cliente al

archivo WSDL.

2) El servidor entrega el fichero WSDL. Este archivo indica a la petición los métodos y propiedades

de ese servicio que están disponibles.

3) El cliente hace la petición en el formato que

fichero WSDL en el que se dice qué parámetros acepta y de qué tipo.

4) El servidor entrega el resultado de la consulta.

El fichero WSDL es del tipo XML por eso su primera línea será la siguiente:

Para uso exclusivo de los alumnos de CETICSA S.L.

Cada message puede consistir en una o más partes

(parámetros).

Fin de la definición de los parámetros

Esta sección es la más importante, ya que se definen las

operaciones que pueden ser realizadas, y los mensajes que

involucran (por ejemplo el mensaje de petición y el de

respuesta).

Fin de la definición de las operaciones y mensajes

Se definen el formato del mensaje y detalles del protocolo

para cada portType.

Fin de la definición del formato del mensaje y detalles del

protocolo para cada PortType

Utilización de WSDL en los Servicios Web

cualquier Servicio Web, el fichero WSDL se basa en enviar la información y los

mensajes de entrada y respuesta al cliente que realiza la petición.

Los pasos que se realizan al consumir el servicio son los siguientes:

realiza el cliente al hacer una solicitud al servicio es tomar la definición del

El servidor entrega el fichero WSDL. Este archivo indica a la petición los métodos y propiedades

de ese servicio que están disponibles.

El cliente hace la petición en el formato que espera el servidor según las especificaciones del

fichero WSDL en el que se dice qué parámetros acepta y de qué tipo.

El servidor entrega el resultado de la consulta.

El fichero WSDL es del tipo XML por eso su primera línea será la siguiente:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

puede consistir en una o más partes

Esta sección es la más importante, ya que se definen las

operaciones que pueden ser realizadas, y los mensajes que

involucran (por ejemplo el mensaje de petición y el de

Fin de la definición de las operaciones y mensajes

Se definen el formato del mensaje y detalles del protocolo

Fin de la definición del formato del mensaje y detalles del

Utilización de WSDL en los Servicios Web

cualquier Servicio Web, el fichero WSDL se basa en enviar la información y los

es tomar la definición del

El servidor entrega el fichero WSDL. Este archivo indica a la petición los métodos y propiedades

espera el servidor según las especificaciones del

Page 65: Java Modulo 7

<?xml version="1.0" ?>

A continuación se escriben las definiciones en la que se establece el namespace al que pertenece

cada uno de los formatos XML que usamos.

Un fichero tipo WSDL pertenece al namespace http://schemas.xmlsoap.org/wsdl/

El código estructurado quedaría de la siguiente forma:

<?xml version="1.0" ?>

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/">

</definitions>

También nos podemos encontrar con la posibilidad de que el Servicio Web introduzca el nombre del

propio servicio en el momento de c

<?xml version="1.0" ?>

<definitions name="MiServicioWeb”

xmlns="http://schemas.xmlsoap.org/wsdl/">

</definitions>

En realidad, la definición de un servicio no se realiza sobre la definic

service para indicar el nombre del servicio, depende de la antigüedad del servicio y de la tecnología

que se haya utilizado para crearlo.

Cualquier servicio SOAP quedaría con la siguiente estructura:

<?xml version="1.0" ?>

<definitions name=" MiServicioWeb

xmlns="http://schemas.xmlsoap.org/wsdl/">

<service name="MiServicioWeb">

</service>

</definitions>

Dentro del arbol del Servicio se puede abrir otra etiqueta para incluir una descripción del servicio

<?xml version="1.0" ?>

<definitions name="MiServicioWeb”

xmlns="http://schemas.xmlsoap.org/wsdl/">

<service name=" MiServicioWeb ">

<documentation>Este es un servicio que muestra el factorial de un número.

</documentation>

</service>

</definitions>

En el momento de trabajar con Servicios Web, dicho servicios van alojados en

indicará la dirección del servicio y el tipo de acceso.

Estos puertos junto a la dirección propiamente dicha tienen que tener un n

<?xml version="1.0" ?>

<definitions name="MiServicioWeb”

xmlns=”http://schemas.xmlsoap.org/wsdl/” xmlns:soap=”http://schemas.xmlsoap.org/wsdl/soap/” >

<service name="MiServicioWeb">

<documentation>Este es un servicio que muestra

</documentation>

<port name="MiServicioWebPort">

<soap:address location="http://localhost:8082/MiServicio/Servicio1.wsdl" />

Para uso exclusivo de los alumnos de CETICSA S.L.

las definiciones en la que se establece el namespace al que pertenece

cada uno de los formatos XML que usamos.

Un fichero tipo WSDL pertenece al namespace http://schemas.xmlsoap.org/wsdl/

quedaría de la siguiente forma:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/">

También nos podemos encontrar con la posibilidad de que el Servicio Web introduzca el nombre del

rear el WSDL, de forma que también podríamos verlo asi:

<definitions name="MiServicioWeb”

xmlns="http://schemas.xmlsoap.org/wsdl/">

En realidad, la definición de un servicio no se realiza sobre la definición, sino que se utiliza la etiqueta

service para indicar el nombre del servicio, depende de la antigüedad del servicio y de la tecnología

Cualquier servicio SOAP quedaría con la siguiente estructura:

xmlns="http://schemas.xmlsoap.org/wsdl/">

se puede abrir otra etiqueta para incluir una descripción del servicio

xmlns="http://schemas.xmlsoap.org/wsdl/">

<service name=" MiServicioWeb ">

<documentation>Este es un servicio que muestra el factorial de un número.

En el momento de trabajar con Servicios Web, dicho servicios van alojados en

indicará la dirección del servicio y el tipo de acceso.

Estos puertos junto a la dirección propiamente dicha tienen que tener un nombre.

xmlns=”http://schemas.xmlsoap.org/wsdl/” xmlns:soap=”http://schemas.xmlsoap.org/wsdl/soap/” >

<documentation>Este es un servicio que muestra el factorial de un número.

<port name="MiServicioWebPort">

<soap:address location="http://localhost:8082/MiServicio/Servicio1.wsdl" />

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

las definiciones en la que se establece el namespace al que pertenece

Un fichero tipo WSDL pertenece al namespace http://schemas.xmlsoap.org/wsdl/

También nos podemos encontrar con la posibilidad de que el Servicio Web introduzca el nombre del

rear el WSDL, de forma que también podríamos verlo asi:

ión, sino que se utiliza la etiqueta

service para indicar el nombre del servicio, depende de la antigüedad del servicio y de la tecnología

se puede abrir otra etiqueta para incluir una descripción del servicio.

<documentation>Este es un servicio que muestra el factorial de un número.

En el momento de trabajar con Servicios Web, dicho servicios van alojados en puertos, dónde se

ombre.

xmlns=”http://schemas.xmlsoap.org/wsdl/” xmlns:soap=”http://schemas.xmlsoap.org/wsdl/soap/” >

el factorial de un número.

Page 66: Java Modulo 7

</port>

</service>

</definitions>

Un Servicio Web no tiene que estar ob

puede exponer mediante el protocolo HTTP GET, en este caso el elemento contendría un

con un código de la siguiente forma:

http:address location="http://localhost:8082/MiServicio/wsdl/Servicio.jsp"/

Los métodos y parámetros de recepción y entrega de información se envían en elementos con la

etiqueta message.

Los métodos se llaman Mensajes y, n

salida, aunque las posibilidades de definir estrucuturas complejas por parte de cada uno de ellos es

bastante amplia.

Si tuviéramos un método llamado getDatos() que recibe un parámetro String con el apellido en el

Servicio Web, la forma de definirlo sería la siguiente:

La definición del método de entrada sería la siguiente:

<message name="getDatosRequest">

<part name="Apellido" type="xsd:string" />

</message>

Y la definición para el método de salida sería también parecida a la siguiente

<message name="getDatosResponse">

<part name="return" type="xsd:string" />

</message>

Todos los parámetros que utilizamos en nuestro ejemplo utilizan datos de la clase String, tanto en la

entrega como en la devolución, pero podríamos haber

estructura de Schemas XML.

<part name=”numero” type='xsd:int'/>

<part name='resultado' type='xsd:float'/>

Los tipos de datos que podemos definir en un

cualquier WSDL. Algunos tipos de datos más comunes dentro de los esquemas XSD son los siguientes,

con su transformación al tipo de dato correspondiente en Java:

XSD Schema XML

anyURI

base64Binary

boolean

byte

date

double

Para uso exclusivo de los alumnos de CETICSA S.L.

Un Servicio Web no tiene que estar obligatoriamente expuesto mediante el uso de SOAP, también se

puede exponer mediante el protocolo HTTP GET, en este caso el elemento contendría un

con un código de la siguiente forma:

location="http://localhost:8082/MiServicio/wsdl/Servicio.jsp"/

Los métodos y parámetros de recepción y entrega de información se envían en elementos con la

étodos se llaman Mensajes y, normalmente, suele haber dos mensajes, uno de

aunque las posibilidades de definir estrucuturas complejas por parte de cada uno de ellos es

Si tuviéramos un método llamado getDatos() que recibe un parámetro String con el apellido en el

e definirlo sería la siguiente:

La definición del método de entrada sería la siguiente:

<message name="getDatosRequest">

<part name="Apellido" type="xsd:string" />

Y la definición para el método de salida sería también parecida a la siguiente:

<message name="getDatosResponse">

<part name="return" type="xsd:string" />

Todos los parámetros que utilizamos en nuestro ejemplo utilizan datos de la clase String, tanto en la

entrega como en la devolución, pero podríamos haber utilizado cualquier tipo de dato definido en la

<part name=”numero” type='xsd:int'/>

<part name='resultado' type='xsd:float'/>

Los tipos de datos que podemos definir en un XSD (Schema XML) son los mismos que podemos incluir en

alquier WSDL. Algunos tipos de datos más comunes dentro de los esquemas XSD son los siguientes,

con su transformación al tipo de dato correspondiente en Java:

Tipo dato Java

String

byte[]

boolean

int

java.util.Date

double

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

ligatoriamente expuesto mediante el uso de SOAP, también se

puede exponer mediante el protocolo HTTP GET, en este caso el elemento contendría un

Los métodos y parámetros de recepción y entrega de información se envían en elementos con la

uno de entrada y otro de

aunque las posibilidades de definir estrucuturas complejas por parte de cada uno de ellos es

Si tuviéramos un método llamado getDatos() que recibe un parámetro String con el apellido en el

Todos los parámetros que utilizamos en nuestro ejemplo utilizan datos de la clase String, tanto en la

utilizado cualquier tipo de dato definido en la

(Schema XML) son los mismos que podemos incluir en

alquier WSDL. Algunos tipos de datos más comunes dentro de los esquemas XSD son los siguientes,

Page 67: Java Modulo 7

float

int

string

long

También podemos definir clases que sean devueltas en el servicio. Dichas clases devolverán al final de

todo, tipos de datos primitivos.

Tenemos que tener en cuenta que en el momento de definir las devoluciones de parámetros dentro de

un Servicio Web, debemos devolver siempre tipos primitivos, ya que cualquier lenguaje podrá leerlos

independientemente del lenguaje en el que se haya construi

Aunque devolvamos clases personalizadas por nosotros, dichas clases devolverán primitivos en sus

métodos y propiedades.

Si devolvierarmos, por ejemplo, un objeto ResultSet de java, Visual Studio Net no sería capaz de

“traducirlo” aunque viniera escrito en el esquema WSDL.

Lo que nos quedaría para comprender completamente la estructura de los documentos WSDL es la

definición de los parámetros de entrada y salida en los mensajes.

Para poder indicar si los parámetros son input o output, se utiliza la eti

el input message y el message de output.

El código sería de la siguiente forma

<operation name="getDatos">

<input message="namespace:getDatosRequest" />

<output message="namespace:getDatosResponse" />

</operation>

El valor de namespace va incluido en la cabecera de la definición del servicio.

La colección de todas las operaciones (métodos) expuestos por un servicio se llama portType y se

definen dentro de WSDL con la etiqueta

<portType name="MiServicioWebPortType">

<operation name="getDatos">

<input message="namespace:getDatosRequest" />

<output message="namespace:getDatosResponse" />

</operation>

</portType>

Para acabar con la definición de un

establece la transición desde tipos de datos abstractos a tipos de datos concretos.

<binding name="MiServicioWebBinding" type="namespace:MiServicioWebPortType">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/" />

<operation name="getDatos">

<soap:operation soapAction="url:localhost:8082#MiServicioWeb" />

<input>

<soap:body use="encoded" namespace="url:localhost:MiServicioWeb"

Para uso exclusivo de los alumnos de CETICSA S.L.

float

int

String

long

También podemos definir clases que sean devueltas en el servicio. Dichas clases devolverán al final de

Tenemos que tener en cuenta que en el momento de definir las devoluciones de parámetros dentro de

un Servicio Web, debemos devolver siempre tipos primitivos, ya que cualquier lenguaje podrá leerlos

independientemente del lenguaje en el que se haya construido.

Aunque devolvamos clases personalizadas por nosotros, dichas clases devolverán primitivos en sus

Si devolvierarmos, por ejemplo, un objeto ResultSet de java, Visual Studio Net no sería capaz de

to en el esquema WSDL.

Lo que nos quedaría para comprender completamente la estructura de los documentos WSDL es la

definición de los parámetros de entrada y salida en los mensajes.

Para poder indicar si los parámetros son input o output, se utiliza la etiqueta

el input message y el message de output.

El código sería de la siguiente forma:

<input message="namespace:getDatosRequest" />

<output message="namespace:getDatosResponse" />

namespace va incluido en la cabecera de la definición del servicio.

La colección de todas las operaciones (métodos) expuestos por un servicio se llama portType y se

definen dentro de WSDL con la etiqueta

<portType name="MiServicioWebPortType">

<input message="namespace:getDatosRequest" />

<output message="namespace:getDatosResponse" />

Para acabar con la definición de un fichero WSDL, solo quedaría el Binding,

n desde tipos de datos abstractos a tipos de datos concretos.

<binding name="MiServicioWebBinding" type="namespace:MiServicioWebPortType">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/" />

<soap:operation soapAction="url:localhost:8082#MiServicioWeb" />

<soap:body use="encoded" namespace="url:localhost:MiServicioWeb"

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

También podemos definir clases que sean devueltas en el servicio. Dichas clases devolverán al final de

Tenemos que tener en cuenta que en el momento de definir las devoluciones de parámetros dentro de

un Servicio Web, debemos devolver siempre tipos primitivos, ya que cualquier lenguaje podrá leerlos

Aunque devolvamos clases personalizadas por nosotros, dichas clases devolverán primitivos en sus

Si devolvierarmos, por ejemplo, un objeto ResultSet de java, Visual Studio Net no sería capaz de

Lo que nos quedaría para comprender completamente la estructura de los documentos WSDL es la

, dónde se indica

La colección de todas las operaciones (métodos) expuestos por un servicio se llama portType y se

, que es el enlace que

n desde tipos de datos abstractos a tipos de datos concretos.

<binding name="MiServicioWebBinding" type="namespace:MiServicioWebPortType">

Page 68: Java Modulo 7

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</input>

<output>

<soap:body use="encoded" namespace=" url:localhost:MiServicioWeb"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

</output>

</operation>

</binding>

Después de analizar todo el contenido de los mensajes

quedado claro el contenido de WSDL, pero gracias a los editores tales como NetBeans o Eclipse, no es

necesario generar un WSDL, sino que bastaría con crear el Servicio y el propio editor nos creará el

fichero wsdl asociado a dicho servicio.

Vamos a visualizar un ejemplo en el que mostraremos el contenido de un WSDL cuando devolvamos

una clase creada por nosotros y devuelta en el servicio.

Nos creamos un nuevo proyecto Web en NetBeans:

Lo llamaremos AgendaContactos

Utilizaremos el servidor GlassFish y no utilizaremos Frameworks.

Para uso exclusivo de los alumnos de CETICSA S.L.

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

<soap:body use="encoded" namespace=" url:localhost:MiServicioWeb"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />

Después de analizar todo el contenido de los mensajes WSDL generados por un Servicio Web, habrá

quedado claro el contenido de WSDL, pero gracias a los editores tales como NetBeans o Eclipse, no es

necesario generar un WSDL, sino que bastaría con crear el Servicio y el propio editor nos creará el

asociado a dicho servicio.

Vamos a visualizar un ejemplo en el que mostraremos el contenido de un WSDL cuando devolvamos

una clase creada por nosotros y devuelta en el servicio.

Nos creamos un nuevo proyecto Web en NetBeans:

Utilizaremos el servidor GlassFish y no utilizaremos Frameworks.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

WSDL generados por un Servicio Web, habrá

quedado claro el contenido de WSDL, pero gracias a los editores tales como NetBeans o Eclipse, no es

necesario generar un WSDL, sino que bastaría con crear el Servicio y el propio editor nos creará el

Vamos a visualizar un ejemplo en el que mostraremos el contenido de un WSDL cuando devolvamos

Page 69: Java Modulo 7

Vamos a realizar una sencilla aplicación en la que tendremos una Clase llamada Contacto.

Los contactos estarán formados por un nombre, un identificador y un número de

Devolveremos los datos de un contacto en un método en el que recibiremos su identificador.

Comenzamos creando la clase Contacto:

Implementaremos el siguiente código:

package paquetews;

public class Contacto {

private int IdContacto;

private String Nombre;

private int Telefono;

public int getIdContacto() {

return IdContacto;

}

public void setIdContacto(int idcontacto) {

this.IdContacto = idcontacto;

}

public String getNombre() {

return Nombre;

}

public void setNombre(String nombre) {

this.Nombre = nombre;

}

public int getTelefono() {

return Telefono;

}

public void setTelefono(int telefono) {

this.Telefono = telefono;

}

}

Ahora nos crearemos un nuevo Servicio Web llamado

Para uso exclusivo de los alumnos de CETICSA S.L.

Vamos a realizar una sencilla aplicación en la que tendremos una Clase llamada Contacto.

Los contactos estarán formados por un nombre, un identificador y un número de

Devolveremos los datos de un contacto en un método en el que recibiremos su identificador.

Comenzamos creando la clase Contacto:

Implementaremos el siguiente código:

public void setIdContacto(int idcontacto) {

public void setNombre(String nombre) {

public void setTelefono(int telefono) {

Ahora nos crearemos un nuevo Servicio Web llamado ServicioContactos

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Vamos a realizar una sencilla aplicación en la que tendremos una Clase llamada Contacto.

Los contactos estarán formados por un nombre, un identificador y un número de télefono.

Devolveremos los datos de un contacto en un método en el que recibiremos su identificador.

Page 70: Java Modulo 7

Nos crearemos una operación llamada getContacto()

Incluiremos el siguiente código en el servicio:

package paquetews;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

import java.util.*;

@WebService()

public class ServicioContactos {

ArrayList<Contacto> listacontactos = new ArrayList<Contacto>();

public ServicioContactos()

{

Contacto c = new Contacto(1, "Lucia", 917654455);

this.listacontactos.add(c);

Para uso exclusivo de los alumnos de CETICSA S.L.

Nos crearemos una operación llamada getContacto()

Incluiremos el siguiente código en el servicio:

ArrayList<Contacto> listacontactos = new ArrayList<Contacto>();

Contacto c = new Contacto(1, "Lucia", 917654455);

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 71: Java Modulo 7

c = new Contacto(2, "Adrian", 687564333);

this.listacontactos.add(c);

c = new Contacto(3, "Ana", 789776655);

this.listacontactos.add(c);

c = new Contacto(4, "Carlos", 12345678);

this.listacontactos.add(c);

c = new Contacto(5, "Pedro", 4567899);

this.listacontactos.add(c);

c = new Contacto(6, "Raul", 677554433);

this.listacontactos.add(c);

}

@WebMethod(operationName = "getContacto")

public Contacto getContacto(@WebParam(name = "idcontacto")

int idcontacto) {

Contacto c = this.listacontactos.get(idcontacto);

return c;

}

}

Al visualizar el WSDL resultante, veremos que tenemos el siguiente resultado:

Y como podemos visualizar, la respuesta SOAP en el cliente devolverá los tipos de datos primitivos que

son los datos de un contacto buscado.

Ver Video: Crear Servicio Web a partir de documento WSDL

en el Módulo 7. Unidad 6, en la plataforma elearning

Para uso exclusivo de los alumnos de CETICSA S.L.

c = new Contacto(2, "Adrian", 687564333);

c = new Contacto(3, "Ana", 789776655);

c = new Contacto(4, "Carlos", 12345678);

c = new Contacto(5, "Pedro", 4567899);

c = new Contacto(6, "Raul", 677554433);

@WebMethod(operationName = "getContacto")

public Contacto getContacto(@WebParam(name = "idcontacto")

Contacto c = this.listacontactos.get(idcontacto);

Al visualizar el WSDL resultante, veremos que tenemos el siguiente resultado:

odemos visualizar, la respuesta SOAP en el cliente devolverá los tipos de datos primitivos que

son los datos de un contacto buscado.

Crear Servicio Web a partir de documento WSDL

7. Unidad 6, en la plataforma elearning

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

odemos visualizar, la respuesta SOAP en el cliente devolverá los tipos de datos primitivos que

Crear Servicio Web a partir de documento WSDL,

7. Unidad 6, en la plataforma elearning

Page 72: Java Modulo 7

Laboratorio: Servicio Web Datos de Empleados

Objetivo

Conocer el funcionamiento de los Servicios Web utilizando clases personalizadas y bases de datos.

Enunciado

Vamos a realizar un laboratorio en el que crearemos una clase Empleado y la devolveremos con los

datos de los empleados que encontremos en la base de datos a partir de un método.

Buscaremos los empleados por su número de departamento.

Crearemos un nuevo proyecto web.

Llamaremos al proyecto ProyectoEmpleados

Utilizaremos el servidor de aplicaciones GlassFish y no utilizaremos Frameworks.

Sobre el proyecto, vamos a agregar la librería para trabajar con Oracle.

Para uso exclusivo de los alumnos de CETICSA S.L.

Laboratorio: Servicio Web Datos de Empleados

Conocer el funcionamiento de los Servicios Web utilizando clases personalizadas y bases de datos.

Vamos a realizar un laboratorio en el que crearemos una clase Empleado y la devolveremos con los

datos de los empleados que encontremos en la base de datos a partir de un método.

Buscaremos los empleados por su número de departamento.

royecto web.

Llamaremos al proyecto ProyectoEmpleados

Utilizaremos el servidor de aplicaciones GlassFish y no utilizaremos Frameworks.

Sobre el proyecto, vamos a agregar la librería para trabajar con Oracle.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Laboratorio: Servicio Web Datos de Empleados

Conocer el funcionamiento de los Servicios Web utilizando clases personalizadas y bases de datos.

Vamos a realizar un laboratorio en el que crearemos una clase Empleado y la devolveremos con los

datos de los empleados que encontremos en la base de datos a partir de un método.

Page 73: Java Modulo 7

Ahora nos crearemos una nueva clase llam

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora nos crearemos una nueva clase llamada Empleado

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 74: Java Modulo 7

Implementaremos los atributos de un empleado y los métodos getter y setter de cada atributo. La clase

quedará de la siguiente forma:

package paquetews;

public class Empleado {

private String nombre;

private String oficio;

private int salario;

private int departamento;

public Empleado()

{

this.nombre = "";

this.oficio = "";

this.salario = 0;

this.departamento = 0;

}

public Empleado(String nombre, String oficio, int salario, int departamento)

{

this.nombre = nombre;

this.oficio = oficio;

this.salario = salario;

this.departamento = departamento;

}

public String getNombre() {

return nombre;

}

public void setNombre(String nombre) {

Para uso exclusivo de los alumnos de CETICSA S.L.

Implementaremos los atributos de un empleado y los métodos getter y setter de cada atributo. La clase

public Empleado(String nombre, String oficio, int salario, int departamento)

this.departamento = departamento;

public void setNombre(String nombre) {

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Implementaremos los atributos de un empleado y los métodos getter y setter de cada atributo. La clase

Page 75: Java Modulo 7

this.nombre = nombre;

}

public String getOficio() {

return oficio;

}

public void setOficio(String oficio) {

this.oficio = oficio;

}

public int getSalario() {

return salario;

}

public void setSalario(int salario) {

this.salario = salario;

}

public int getDepartamento() {

return departamento;

}

public void setDepartamento(int departamento) {

this.departamento = departamento;

}

}

Ahora nos crearemos el Servicio Web. Sobre el proyecto vamos a agregar un nuevo Servicio Web

Lo llamaremos ServicioEmpleados

Para uso exclusivo de los alumnos de CETICSA S.L.

public void setOficio(String oficio) {

departamento) {

this.departamento = departamento;

Ahora nos crearemos el Servicio Web. Sobre el proyecto vamos a agregar un nuevo Servicio Web

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora nos crearemos el Servicio Web. Sobre el proyecto vamos a agregar un nuevo Servicio Web

Page 76: Java Modulo 7

Vamos a agregar una nueva operación:

Añadimos un método que recibirá el Id del departamento y devolverá los empleados que pertenecen a

dicho departamento en objetos de la clase Empleado.

Para uso exclusivo de los alumnos de CETICSA S.L.

Vamos a agregar una nueva operación:

que recibirá el Id del departamento y devolverá los empleados que pertenecen a

dicho departamento en objetos de la clase Empleado.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

que recibirá el Id del departamento y devolverá los empleados que pertenecen a

Page 77: Java Modulo 7

El código del Servicio Web quedará de la siguiente forma:

package paquetews;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

import java.util.*;

import java.sql.*;

@WebService()

public class ServicioEmpleados {

@WebMethod(operationName = "getEmpleados")

public Empleado[] getEmpleados(@WebParam(name = "iddepartamento")

int iddepartamento) {

try

{

ArrayList<Empleado> listaempleados = new ArrayList<Empleado>();

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

Connection conn = DriverManager.getConnection("

"java");

Statement stmt = conn.createStatement();

String consulta;

consulta = "SELECT ENAME, JOB, SAL, COMM, DEPTNO FROM EMP WHERE DEPTNO=?";

PreparedStatement smt = conn.prepareCall(consulta);

smt.setInt(1, iddepartamento);

ResultSet rs = smt.executeQuery();

while (rs.next())

{

Empleado emp = new Empleado();

emp.setNombre(rs.getString("ENAME"));

emp.setOficio(rs.getString("JOB"));

emp.setSalario(rs.getInt("SAL"));

Para uso exclusivo de los alumnos de CETICSA S.L.

El código del Servicio Web quedará de la siguiente forma:

@WebMethod(operationName = "getEmpleados")

public Empleado[] getEmpleados(@WebParam(name = "iddepartamento")

ArrayList<Empleado> listaempleados = new ArrayList<Empleado>();

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system",

Statement stmt = conn.createStatement();

consulta = "SELECT ENAME, JOB, SAL, COMM, DEPTNO FROM EMP WHERE DEPTNO=?";

mt = conn.prepareCall(consulta);

smt.setInt(1, iddepartamento);

ResultSet rs = smt.executeQuery();

Empleado emp = new Empleado();

emp.setNombre(rs.getString("ENAME"));

emp.setOficio(rs.getString("JOB"));

emp.setSalario(rs.getInt("SAL"));

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

jdbc:oracle:thin:@localhost:1521:XE","system",

consulta = "SELECT ENAME, JOB, SAL, COMM, DEPTNO FROM EMP WHERE DEPTNO=?";

Page 78: Java Modulo 7

emp.setDepartamento(rs.getInt("DEPTNO"));

listaempleados.add(emp);

}

rs.close();

int longitud = listaempleados.size();

Empleado arrayempleados[] = new Empleado[longitud];

listaempleados.toArray(arrayempleados);

return arrayempleados;

}catch (Exception ex)

{

System.out.println("Excepcion: " + ex);

return null;

}

}

}

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

Veremos la pantalla de presentación del servicio:

Si invocamos el servicio, comprobaremos que los datos de los empleados son devueltos:

Para uso exclusivo de los alumnos de CETICSA S.L.

emp.setDepartamento(rs.getInt("DEPTNO"));

listaempleados.add(emp);

int longitud = listaempleados.size();

Empleado arrayempleados[] = new Empleado[longitud];

listaempleados.toArray(arrayempleados);

System.out.println("Excepcion: " + ex);

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

Veremos la pantalla de presentación del servicio:

i invocamos el servicio, comprobaremos que los datos de los empleados son devueltos:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que lo tengamos, será el momento de probar el servicio y su funcionamiento:

i invocamos el servicio, comprobaremos que los datos de los empleados son devueltos:

Page 79: Java Modulo 7

Si nos fijamos en el documento WSDL, veremos los mensajes de Empleado en las etiquetas message:

Para uso exclusivo de los alumnos de CETICSA S.L.

Si nos fijamos en el documento WSDL, veremos los mensajes de Empleado en las etiquetas message:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Si nos fijamos en el documento WSDL, veremos los mensajes de Empleado en las etiquetas message:

Page 80: Java Modulo 7

Unidad 7: Reconociendo el papel de los servicios

Objetivo

Conocer el funcionamiento de los directorios UDDI dentro de la tecnología de los Servicios Web.

Introducción

Los Servicios Web en Internet están tomando cada vez más importancia.

Se diseñan como sistemas transparentes de información que ocultan

finales y permiten una fácil comunicación.

Los problemas que existen en el mundo de los Servicios Web no son su creación ni su implementación

final, problemas que se pueden resolver con sintaxis del lenguaje e implementacion

Servicio y con la documentación propia del lenguaje creador del servicio.

Su principal problema es el “descubrimiento”. Lo que quiere decir al final, es que existen multitud de

Servicios Web en internet, pero si no están ubicados en ni

“descubrirlos”.

De ahí nació UDDI (Description Discovery And Integration), que es una especie de localizador dónde se

pueden especificar las descripciones de los servicios web y su localización en internet.

Es algo fundamental tener un medio de localizar esos servicios, tarea más difícil conforme crece el

número de servicios disponibles.

Si quiero buscar Servicios Web en internet, tendré que utilizar la tecnología UDDI para poder acceder a

la información que necesito encontrar.

De esta forma, si tuviéramos varios Web Services tales como:

� Estado de tiempo

� Descripción de productos comerciales,

� Operaciones de transacciones financieras

Sería posible publicarlos a un directorio UDDI, permitiendo que sean descubierto

conocido y centralizado.

Para uso exclusivo de los alumnos de CETICSA S.L.

Reconociendo el papel de los servicios

de registro

Conocer el funcionamiento de los directorios UDDI dentro de la tecnología de los Servicios Web.

Los Servicios Web en Internet están tomando cada vez más importancia.

Se diseñan como sistemas transparentes de información que ocultan la complejidad de los sistemas

finales y permiten una fácil comunicación.

Los problemas que existen en el mundo de los Servicios Web no son su creación ni su implementación

final, problemas que se pueden resolver con sintaxis del lenguaje e implementacion

Servicio y con la documentación propia del lenguaje creador del servicio.

Su principal problema es el “descubrimiento”. Lo que quiere decir al final, es que existen multitud de

Servicios Web en internet, pero si no están ubicados en ningún lugar ni en ningún buscador, es difícil

De ahí nació UDDI (Description Discovery And Integration), que es una especie de localizador dónde se

pueden especificar las descripciones de los servicios web y su localización en internet.

lgo fundamental tener un medio de localizar esos servicios, tarea más difícil conforme crece el

Si quiero buscar Servicios Web en internet, tendré que utilizar la tecnología UDDI para poder acceder a

sito encontrar.

De esta forma, si tuviéramos varios Web Services tales como:

productos comerciales,

Operaciones de transacciones financieras

Sería posible publicarlos a un directorio UDDI, permitiendo que sean descubierto

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Reconociendo el papel de los servicios

Conocer el funcionamiento de los directorios UDDI dentro de la tecnología de los Servicios Web.

la complejidad de los sistemas

Los problemas que existen en el mundo de los Servicios Web no son su creación ni su implementación

final, problemas que se pueden resolver con sintaxis del lenguaje e implementaciones de código de los

Su principal problema es el “descubrimiento”. Lo que quiere decir al final, es que existen multitud de

ngún lugar ni en ningún buscador, es difícil

De ahí nació UDDI (Description Discovery And Integration), que es una especie de localizador dónde se

pueden especificar las descripciones de los servicios web y su localización en internet.

lgo fundamental tener un medio de localizar esos servicios, tarea más difícil conforme crece el

Si quiero buscar Servicios Web en internet, tendré que utilizar la tecnología UDDI para poder acceder a

Sería posible publicarlos a un directorio UDDI, permitiendo que sean descubiertos en un directorio

Page 81: Java Modulo 7

Directorio UDDI

UDDI apareció en el entorno tenológico con la intención de centralizar web services comunes, así como

ofrecer un deposito central donde se puede acudir a

UDDI ha sido desarrollado por un grupo de empresas entre las que figuran principalmente Microsoft, IBM

y SAP, estas compañias así como algunos otros consorcios se encargan de mantener y ofrecer este tipo

de servicios en Internet.

UDDI es uno de los estándares básicos de los servicios Web cuyo objetivo es ser accedido por los

mensajes SOAP y dar paso a documentos WSDL, en los que se describen los requisitos del protocolo y los

formatos del mensaje solicitado para interactuar con los servicios Web del catálogo de registros.

La especificación UDDI simplifica la tarea de publicación de Web Services, permitiendo a una

organización publicar información sobre los servicios que ofrece y localizar información sobre ser

web que necesita utilizar.

UDDI describe el interfaz externo de un Web Service y como debería ser utilizado.

Podemos definir un archivo WSDL como un documento XML que describe un conjunto de mensajes

SOAP y la forma en que éstos se intercambian.

Puesto que la notación que utiliza WSDL es XML, esto significa que es un idioma de programación

neutral, basado en estándares (W3C) y que puede utilizarse desde una gran variedad de plataformas y

lenguajes.

Un servicio UDDI, además de describir el contenido W

utilizar el servicio, es decir, interfaz, lugar en el que está disponible, protocolo de comunicaciones, etc.

UDDI es, simplemente, un repositorio de documentos XML con sus Schemas XML que define un mensaje

SOAP para el registro y petición de información.

Un fichero de registro es un documento XML

� Páginas blancas: Indican la dirección, contactos, e identificadores de empresa la empresa que

ofrece el Servicio Web.

Para uso exclusivo de los alumnos de CETICSA S.L.

Directorio UDDI (Description Discovery a

UDDI apareció en el entorno tenológico con la intención de centralizar web services comunes, así como

ofrecer un deposito central donde se puede acudir a realizar búsquedas de web services específicos.

UDDI ha sido desarrollado por un grupo de empresas entre las que figuran principalmente Microsoft, IBM

y SAP, estas compañias así como algunos otros consorcios se encargan de mantener y ofrecer este tipo

UDDI es uno de los estándares básicos de los servicios Web cuyo objetivo es ser accedido por los

mensajes SOAP y dar paso a documentos WSDL, en los que se describen los requisitos del protocolo y los

ara interactuar con los servicios Web del catálogo de registros.

La especificación UDDI simplifica la tarea de publicación de Web Services, permitiendo a una

organización publicar información sobre los servicios que ofrece y localizar información sobre ser

UDDI describe el interfaz externo de un Web Service y como debería ser utilizado.

Podemos definir un archivo WSDL como un documento XML que describe un conjunto de mensajes

SOAP y la forma en que éstos se intercambian.

sto que la notación que utiliza WSDL es XML, esto significa que es un idioma de programación

neutral, basado en estándares (W3C) y que puede utilizarse desde una gran variedad de plataformas y

Un servicio UDDI, además de describir el contenido WSDL, define todos los elementos necesarios para

utilizar el servicio, es decir, interfaz, lugar en el que está disponible, protocolo de comunicaciones, etc.

UDDI es, simplemente, un repositorio de documentos XML con sus Schemas XML que define un mensaje

AP para el registro y petición de información.

Un fichero de registro es un documento XML-UDDI que consta de tres elementos principales:

Páginas blancas: Indican la dirección, contactos, e identificadores de empresa la empresa que

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

nd Integration)

UDDI apareció en el entorno tenológico con la intención de centralizar web services comunes, así como

realizar búsquedas de web services específicos.

UDDI ha sido desarrollado por un grupo de empresas entre las que figuran principalmente Microsoft, IBM

y SAP, estas compañias así como algunos otros consorcios se encargan de mantener y ofrecer este tipo

UDDI es uno de los estándares básicos de los servicios Web cuyo objetivo es ser accedido por los

mensajes SOAP y dar paso a documentos WSDL, en los que se describen los requisitos del protocolo y los

ara interactuar con los servicios Web del catálogo de registros.

La especificación UDDI simplifica la tarea de publicación de Web Services, permitiendo a una

organización publicar información sobre los servicios que ofrece y localizar información sobre servicios

UDDI describe el interfaz externo de un Web Service y como debería ser utilizado.

Podemos definir un archivo WSDL como un documento XML que describe un conjunto de mensajes

sto que la notación que utiliza WSDL es XML, esto significa que es un idioma de programación

neutral, basado en estándares (W3C) y que puede utilizarse desde una gran variedad de plataformas y

SDL, define todos los elementos necesarios para

utilizar el servicio, es decir, interfaz, lugar en el que está disponible, protocolo de comunicaciones, etc.

UDDI es, simplemente, un repositorio de documentos XML con sus Schemas XML que define un mensaje

UDDI que consta de tres elementos principales:

Páginas blancas: Indican la dirección, contactos, e identificadores de empresa la empresa que

Page 82: Java Modulo 7

� Páginas amarillas: Ofrecen la categoría industrial basada en la estructura propuesta por el

repositorio UDDI.

� Páginas verdes: Contienen la información técnica que describe los servicios web.

Características de los directorios UDDI

� UDDI es un sistema ideado

ofrezcan estos servicios.

� UDDI significa “Descripción, Localización e Integración Universales”.

� Es un directorio para almacenar información sobre servicios web.

guarda las interfaces de esos servicios descritas en el documento WSDL.

� UDDI utiliza SOAP para llevar a cabo las comunicaciones.

� Está desarrollado e integrado en la plataforma .NET de Microsoft.

� UDDI ha sido propuesto por Dell, Fujitsu, HP, Hitachi, IBM

otros fabricantes.

Gracias al directorio UDDI, podemos realizar una sería de operaciones que nos sería imposible sin tener

un repositorio de Web Services:

� Podemos descubrir la empresa más adecuada a nuestra

presentes en Internet.

� Podemos obtener información sobre cómo contactar con esa empresa

� Conseguir nuevos clientes y facilitar el acceso a los actuales

� Incremento de los servicios ofertados y extendiendo el mercado al q

� Describir servicios y procesos empresariales en un entorno seguro y fácil de utilizar.

Un ejemplo de cómo se podría utilizar el repositorio UDDI sería el siguiente:

Pongamos un ejemplo en el que se creara un estándar UDDI para reserva y

Los cines podrían registrar sus servicios en un directorio UDDI siguiendo ese estándar e interface UDDI.

De esta forma, las páginas web de reserva de entradas online, podrían obtener acceso al repositorio

UDDI a través de la interfaz, y podrían comunicarse con el servicio ofrecido por cualquier cine para

hacer las reservas y ventas de entradas, manteniendo la misma estructura para todos.

La estructura de UDDI para acceder a los servicios como para publicarlos es la siguiente:

El Servicio UDDI contiene seis entidades:

Para uso exclusivo de los alumnos de CETICSA S.L.

áginas amarillas: Ofrecen la categoría industrial basada en la estructura propuesta por el

Páginas verdes: Contienen la información técnica que describe los servicios web.

Características de los directorios UDDI

para describir servicios, junto con WSDL, y localizar empresas que

UDDI significa “Descripción, Localización e Integración Universales”.

Es un directorio para almacenar información sobre servicios web. Entre otras característica

guarda las interfaces de esos servicios descritas en el documento WSDL.

UDDI utiliza SOAP para llevar a cabo las comunicaciones.

Está desarrollado e integrado en la plataforma .NET de Microsoft.

UDDI ha sido propuesto por Dell, Fujitsu, HP, Hitachi, IBM, Intel, Microsoft, Oracle, SAP y Sun, entre

Gracias al directorio UDDI, podemos realizar una sería de operaciones que nos sería imposible sin tener

Podemos descubrir la empresa más adecuada a nuestra lógica de negocio de entre las muchas

Podemos obtener información sobre cómo contactar con esa empresa

Conseguir nuevos clientes y facilitar el acceso a los actuales

Incremento de los servicios ofertados y extendiendo el mercado al que se puede acceder

Describir servicios y procesos empresariales en un entorno seguro y fácil de utilizar.

Un ejemplo de cómo se podría utilizar el repositorio UDDI sería el siguiente:

Pongamos un ejemplo en el que se creara un estándar UDDI para reserva y venta de entradas de cine.

Los cines podrían registrar sus servicios en un directorio UDDI siguiendo ese estándar e interface UDDI.

De esta forma, las páginas web de reserva de entradas online, podrían obtener acceso al repositorio

nterfaz, y podrían comunicarse con el servicio ofrecido por cualquier cine para

hacer las reservas y ventas de entradas, manteniendo la misma estructura para todos.

La estructura de UDDI para acceder a los servicios como para publicarlos es la siguiente:

El Servicio UDDI contiene seis entidades:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

áginas amarillas: Ofrecen la categoría industrial basada en la estructura propuesta por el

Páginas verdes: Contienen la información técnica que describe los servicios web.

para describir servicios, junto con WSDL, y localizar empresas que

Entre otras características,

, Intel, Microsoft, Oracle, SAP y Sun, entre

Gracias al directorio UDDI, podemos realizar una sería de operaciones que nos sería imposible sin tener

lógica de negocio de entre las muchas

ue se puede acceder

Describir servicios y procesos empresariales en un entorno seguro y fácil de utilizar.

venta de entradas de cine.

Los cines podrían registrar sus servicios en un directorio UDDI siguiendo ese estándar e interface UDDI.

De esta forma, las páginas web de reserva de entradas online, podrían obtener acceso al repositorio

nterfaz, y podrían comunicarse con el servicio ofrecido por cualquier cine para

hacer las reservas y ventas de entradas, manteniendo la misma estructura para todos.

La estructura de UDDI para acceder a los servicios como para publicarlos es la siguiente:

Page 83: Java Modulo 7

� Provider

� Persona, grupo u organización que ofrece una serie de Servicios Web XML.

� Contact

� Persona de contacto para informar sobre los temas relacionados con los Servicios del proveedor

correspondiente.

� Service

� El propio Servicio Web

� Binding

� El punto de acceso al Servicio Web o URL del Servicio.

� Instace info

� Referencia a un tModel que contiene información técnica relevante sobre un Binding.

� tModel

Información técnica sobre la interfaz, incluida dentro del docum

También puede representar una unidad organizativa con datos descriptivos, como un identificador.

Otros Repositorios de Servicios Web

ebXML es otro tipo de registro para

("Organization for the Advancement of Structured Information Standards") asi como la división de las

Naciones Unidas CEFACT ("United Nations Centre for the Facilitation of Procedures and Practices in

Administration, Commerce and Transport").

Para accesar un directorio UDDI o ebXML generalmente se utiliza cualquier navegador de internet para

dar de alta los respectivos web services por lo que su uso es relativamente sencillo.

Aunque un Navegador sea la forma clásica de acceder a los D

mecansimos como JAXM ("Java API for XML Registries") que permiten el acceso a este tipo de directorios

de una manera programática.

WSIL-Web Service Inspection Language

WSIL es una especificación muy reciente ini

complementario a UDDI y ebXML para encontrar web services en una red como Internet.

Existen dos razones principales por las que surgió WSIL:

� Falta de Moderación: Debido a la misma escalabilidad con la que

clara falta por moderar los web services que son publicados en este tipo de Directorios, lo

anterior trae consigo la publicación de "Web Services Description Language/(WSDL)" invalidos, la

duplicidad de WSDL e incluso la publi

� Falta de Calidad de Servicio (QoS) : Este punto aunque relacionado con el anterior se refiere a la

garantia del servicio ofrecido por el proveedor del web service, esto es, debido a que UDDI es un

directorio público en Internet, nadie garantiza que el web service utilizado o comprado cumpla

con determinados requisitos.

Esto nos lleva al antiguo concepto de negocios: Comprar o adquirir a quien ya conocemos, y es

precisamente en este principio en el que esta

A diferencia de UDDI donde se realizan busquedas en un directorio centralizado, mediante WSIL se

inspecciona un "Web-Server" conocido realizando una búsqueda por web services y es mediante

archivos escritos en WSIL que se logra su descubrimie

Para uso exclusivo de los alumnos de CETICSA S.L.

Persona, grupo u organización que ofrece una serie de Servicios Web XML.

Persona de contacto para informar sobre los temas relacionados con los Servicios del proveedor

El punto de acceso al Servicio Web o URL del Servicio.

Referencia a un tModel que contiene información técnica relevante sobre un Binding.

Información técnica sobre la interfaz, incluida dentro del documento WSDL.

También puede representar una unidad organizativa con datos descriptivos, como un identificador.

Otros Repositorios de Servicios Web

es otro tipo de registro para Web Services que surgió previo a UDDI y fue

("Organization for the Advancement of Structured Information Standards") asi como la división de las

Naciones Unidas CEFACT ("United Nations Centre for the Facilitation of Procedures and Practices in

nsport").

Para accesar un directorio UDDI o ebXML generalmente se utiliza cualquier navegador de internet para

dar de alta los respectivos web services por lo que su uso es relativamente sencillo.

Aunque un Navegador sea la forma clásica de acceder a los Directorios para web services, existen otros

mecansimos como JAXM ("Java API for XML Registries") que permiten el acceso a este tipo de directorios

Web Service Inspection Language

WSIL es una especificación muy reciente iniciada por IBM y Microsoft que ofrece un mecanismo

complementario a UDDI y ebXML para encontrar web services en una red como Internet.

Existen dos razones principales por las que surgió WSIL:

Falta de Moderación: Debido a la misma escalabilidad con la que fue diseñado UDDI, existe una

clara falta por moderar los web services que son publicados en este tipo de Directorios, lo

anterior trae consigo la publicación de "Web Services Description Language/(WSDL)" invalidos, la

duplicidad de WSDL e incluso la publicación de Servicios Web que no están disponibles.

Falta de Calidad de Servicio (QoS) : Este punto aunque relacionado con el anterior se refiere a la

garantia del servicio ofrecido por el proveedor del web service, esto es, debido a que UDDI es un

o público en Internet, nadie garantiza que el web service utilizado o comprado cumpla

con determinados requisitos.

Esto nos lleva al antiguo concepto de negocios: Comprar o adquirir a quien ya conocemos, y es

precisamente en este principio en el que esta basado WSIL.

A diferencia de UDDI donde se realizan busquedas en un directorio centralizado, mediante WSIL se

Server" conocido realizando una búsqueda por web services y es mediante

archivos escritos en WSIL que se logra su descubrimiento.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Persona, grupo u organización que ofrece una serie de Servicios Web XML.

Persona de contacto para informar sobre los temas relacionados con los Servicios del proveedor

Referencia a un tModel que contiene información técnica relevante sobre un Binding.

También puede representar una unidad organizativa con datos descriptivos, como un identificador.

fue desarrollado por OASIS

("Organization for the Advancement of Structured Information Standards") asi como la división de las

Naciones Unidas CEFACT ("United Nations Centre for the Facilitation of Procedures and Practices in

Para accesar un directorio UDDI o ebXML generalmente se utiliza cualquier navegador de internet para

dar de alta los respectivos web services por lo que su uso es relativamente sencillo.

irectorios para web services, existen otros

mecansimos como JAXM ("Java API for XML Registries") que permiten el acceso a este tipo de directorios

ciada por IBM y Microsoft que ofrece un mecanismo

complementario a UDDI y ebXML para encontrar web services en una red como Internet.

fue diseñado UDDI, existe una

clara falta por moderar los web services que son publicados en este tipo de Directorios, lo

anterior trae consigo la publicación de "Web Services Description Language/(WSDL)" invalidos, la

cación de Servicios Web que no están disponibles.

Falta de Calidad de Servicio (QoS) : Este punto aunque relacionado con el anterior se refiere a la

garantia del servicio ofrecido por el proveedor del web service, esto es, debido a que UDDI es un

o público en Internet, nadie garantiza que el web service utilizado o comprado cumpla

Esto nos lleva al antiguo concepto de negocios: Comprar o adquirir a quien ya conocemos, y es

A diferencia de UDDI donde se realizan busquedas en un directorio centralizado, mediante WSIL se

Server" conocido realizando una búsqueda por web services y es mediante

Page 84: Java Modulo 7

Sin embargo, es tan reciente dicha especificación que sus implementaciones son minimas.

Publicación de Servicios Web en UDDI

Actualmente los servicios UDDI están desapareciendo de las páginas debido a alojamientos Web que

contienen toda la información sobre servicios y se han especializado en búsquedas y alojamiento sin

utilizar la tecnología de directorio, por lo que pondremos este caso a modo de información en la

unidad. Otra de las razones del desgaste en su uso es la falta de control de los ser

aparición de nuevas tecnologías en el momento de la creación de Servicios Web como son los Servicios

RestFul, que son servicios que no utilizan protocolo SOAP.

Si queremos descubir sitios web SOAP, existen multitud de sitios que se han

servicios web y su disponibilidad, tales como:

http://webservices.seekda.com/

La publicación en UDDI es un proceso relativamente sencillo.

El primer paso consiste en determinar información básica sobre cómo definir la empresa y l

UDDI.

El siguiente paso, una vez determinada esta información, consiste en llevar a cabo el registro, ya sea

mediante programación o a través de una interfaz de usuario basada en el Web.

Por último, se debe probar la entrada para asegurar

como se esperaba en diferentes tipos de búsquedas y herramientas.

Definir la entrada de UDDI

Partiendo del modelo de datos descrito anteriormente, se debe recopilar cierta información importante

antes de establecer una entrada de UDDI.

Determinaremos los tModels (archivos WSDL) que utilizan las implementaciones del servicio Web.

Al igual que sucede en el desarrollo de un componente COM, el servicio Web se ha desarrollado a partir

de una interfaz existente o de una interfaz de diseño propio.

En el caso de un servicio Web basado en una interfaz WSDL existente, deberemos determinar si el

archivo WSDL se ha registrado en UDDI.

Si es así, debemos comprobar su nombre y tModelKey, que es el identificador GUID que generó UDDI

cuando se produjo el registro.

Si el servicio Web se basa en un archivo WSDL que no se ha registrado en UDDI, debermos crear un

nuevo tModel para representar esta interfaz.

Para uso exclusivo de los alumnos de CETICSA S.L.

Sin embargo, es tan reciente dicha especificación que sus implementaciones son minimas.

Publicación de Servicios Web en UDDI

Actualmente los servicios UDDI están desapareciendo de las páginas debido a alojamientos Web que

ión sobre servicios y se han especializado en búsquedas y alojamiento sin

utilizar la tecnología de directorio, por lo que pondremos este caso a modo de información en la

unidad. Otra de las razones del desgaste en su uso es la falta de control de los ser

aparición de nuevas tecnologías en el momento de la creación de Servicios Web como son los Servicios

RestFul, que son servicios que no utilizan protocolo SOAP.

Si queremos descubir sitios web SOAP, existen multitud de sitios que se han especialidado en exponer

servicios web y su disponibilidad, tales como:

La publicación en UDDI es un proceso relativamente sencillo.

El primer paso consiste en determinar información básica sobre cómo definir la empresa y l

El siguiente paso, una vez determinada esta información, consiste en llevar a cabo el registro, ya sea

mediante programación o a través de una interfaz de usuario basada en el Web.

Por último, se debe probar la entrada para asegurar que se registró correctamente y que aparece tal y

como se esperaba en diferentes tipos de búsquedas y herramientas.

Partiendo del modelo de datos descrito anteriormente, se debe recopilar cierta información importante

antes de establecer una entrada de UDDI.

Determinaremos los tModels (archivos WSDL) que utilizan las implementaciones del servicio Web.

ede en el desarrollo de un componente COM, el servicio Web se ha desarrollado a partir

de una interfaz existente o de una interfaz de diseño propio.

En el caso de un servicio Web basado en una interfaz WSDL existente, deberemos determinar si el

DL se ha registrado en UDDI.

Si es así, debemos comprobar su nombre y tModelKey, que es el identificador GUID que generó UDDI

Si el servicio Web se basa en un archivo WSDL que no se ha registrado en UDDI, debermos crear un

nuevo tModel para representar esta interfaz.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Sin embargo, es tan reciente dicha especificación que sus implementaciones son minimas.

Actualmente los servicios UDDI están desapareciendo de las páginas debido a alojamientos Web que

ión sobre servicios y se han especializado en búsquedas y alojamiento sin

utilizar la tecnología de directorio, por lo que pondremos este caso a modo de información en la

unidad. Otra de las razones del desgaste en su uso es la falta de control de los servicios, además de la

aparición de nuevas tecnologías en el momento de la creación de Servicios Web como son los Servicios

especialidado en exponer

El primer paso consiste en determinar información básica sobre cómo definir la empresa y los servicios en

El siguiente paso, una vez determinada esta información, consiste en llevar a cabo el registro, ya sea

mediante programación o a través de una interfaz de usuario basada en el Web.

que se registró correctamente y que aparece tal y

Partiendo del modelo de datos descrito anteriormente, se debe recopilar cierta información importante

Determinaremos los tModels (archivos WSDL) que utilizan las implementaciones del servicio Web.

ede en el desarrollo de un componente COM, el servicio Web se ha desarrollado a partir

En el caso de un servicio Web basado en una interfaz WSDL existente, deberemos determinar si el

Si es así, debemos comprobar su nombre y tModelKey, que es el identificador GUID que generó UDDI

Si el servicio Web se basa en un archivo WSDL que no se ha registrado en UDDI, debermos crear un

Page 85: Java Modulo 7

El nombre de este tModel debería tener un formato URI (identificador de recursos uniforme), como

MiEmpresa-com:EjemploWebService

Si el servicio Web es un servicio de Microsoft Visual Studio .NET, podremos generar una descripción WSDL

utilizando una cadena de consulta desde el archivo .ASMX.

No obstante, el archivo WSDL generado por Visual Studio .NET se relaciona estrechamente con el punto

de acceso para la invocación del servicio Web, lo cual puede no resultar adecuado cuando la interfaz

del servicio tiene varias implementaciones.

Determinaremos el nombre de la empresa y una breve descripción de la misma en varios idiomas, si es

necesario, así como los contactos principales para los servicios Web que ofrece.

UDDI es compatible con el espacio de nombre xml:lang, lo que permite a las empresas ofrecer su

descripción en varios idiomas.

Asimismo, UDDI permite enumerar los contactos, incluyendo datos como el

teléfono y la dirección. Esta lista de contactos muestra los recursos de una empresa con los que se

puede poner en contacto en relación con los servicios Web ofrecidos.

Por ejemplo, si un usuario desea comenzar a utilizar el servic

responsable de relaciones comerciales correspondiente pero, ¿cómo puede llegar a saber quién es?

¿Existe algún contacto para obtener asistencia técnica a la hora de utilizar los servicios Web de la

empresa? También se debería incluir en la lista a esta persona.

Resulta importante destacar que no todo el mundo puede obtener acceso a un servicio Web porque

éste se haya registrado en UDDI.

A una entrada de registro UDDI le pueden acompañar medidas de seguridad, autori

autenticación.

No basta que el usuario sepa que existe un servicio Web para que pueda invocarlo. Puede existir una

comunicación fuera de banda entre empresas antes de permitir el acceso a un servicio Web.

Registrar la entrada de UDDI

Una vez finalizada la tarea de definición, el siguiente paso consiste en registrar la empresa.

Debemos obtener una cuenta con un registro UDDI.

Esta operación no se puede realizar mediante programación, ya que deberemos mostrar nuestra

conformidad con una declaración de condiciones de uso.

El nodo de Microsoft utiliza Passport para la autenticación, así que debemos adquirir una cuenta de

Passport (http://www.passport.com/Consumer/default.asp) para continuar con el registro.

En este punto se ofrecen dos opciones:

registro mediante programación dirigiendo al propio nodo las llamadas a API de SOAP.

Si no pensamos modificar la entrada o ésta es relativamente simple, bastará con la interfaz de usuario

Web.

No obstante, si pretemos actualizar la entrada con frecuencia, o bien, ésta es más compleja, resulta

recomendable realizar el proceso de registro con secuencias de comandos.

Buscar la entrada en UDDI

Es recomendable realizar tres comprobaciones un

Para uso exclusivo de los alumnos de CETICSA S.L.

El nombre de este tModel debería tener un formato URI (identificador de recursos uniforme), como

com:EjemploWebService-interface:v1, y señalar la ubicación del archivo WSDL.

servicio de Microsoft Visual Studio .NET, podremos generar una descripción WSDL

utilizando una cadena de consulta desde el archivo .ASMX.

No obstante, el archivo WSDL generado por Visual Studio .NET se relaciona estrechamente con el punto

a invocación del servicio Web, lo cual puede no resultar adecuado cuando la interfaz

del servicio tiene varias implementaciones.

Determinaremos el nombre de la empresa y una breve descripción de la misma en varios idiomas, si es

ontactos principales para los servicios Web que ofrece.

UDDI es compatible con el espacio de nombre xml:lang, lo que permite a las empresas ofrecer su

Asimismo, UDDI permite enumerar los contactos, incluyendo datos como el

Esta lista de contactos muestra los recursos de una empresa con los que se

puede poner en contacto en relación con los servicios Web ofrecidos.

Por ejemplo, si un usuario desea comenzar a utilizar el servicio Web deberá ponerse en contacto con el

responsable de relaciones comerciales correspondiente pero, ¿cómo puede llegar a saber quién es?

¿Existe algún contacto para obtener asistencia técnica a la hora de utilizar los servicios Web de la

se debería incluir en la lista a esta persona.

Resulta importante destacar que no todo el mundo puede obtener acceso a un servicio Web porque

A una entrada de registro UDDI le pueden acompañar medidas de seguridad, autori

No basta que el usuario sepa que existe un servicio Web para que pueda invocarlo. Puede existir una

comunicación fuera de banda entre empresas antes de permitir el acceso a un servicio Web.

nalizada la tarea de definición, el siguiente paso consiste en registrar la empresa.

Debemos obtener una cuenta con un registro UDDI.

Esta operación no se puede realizar mediante programación, ya que deberemos mostrar nuestra

ión de condiciones de uso.

El nodo de Microsoft utiliza Passport para la autenticación, así que debemos adquirir una cuenta de

Passport (http://www.passport.com/Consumer/default.asp) para continuar con el registro.

En este punto se ofrecen dos opciones: podemos utilizar la interfaz de usuario Web del nodo o realizar el

registro mediante programación dirigiendo al propio nodo las llamadas a API de SOAP.

Si no pensamos modificar la entrada o ésta es relativamente simple, bastará con la interfaz de usuario

No obstante, si pretemos actualizar la entrada con frecuencia, o bien, ésta es más compleja, resulta

recomendable realizar el proceso de registro con secuencias de comandos.

Es recomendable realizar tres comprobaciones una vez registrada la entrada en UDDI.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

El nombre de este tModel debería tener un formato URI (identificador de recursos uniforme), como

interface:v1, y señalar la ubicación del archivo WSDL.

servicio de Microsoft Visual Studio .NET, podremos generar una descripción WSDL

No obstante, el archivo WSDL generado por Visual Studio .NET se relaciona estrechamente con el punto

a invocación del servicio Web, lo cual puede no resultar adecuado cuando la interfaz

Determinaremos el nombre de la empresa y una breve descripción de la misma en varios idiomas, si es

ontactos principales para los servicios Web que ofrece.

UDDI es compatible con el espacio de nombre xml:lang, lo que permite a las empresas ofrecer su

Asimismo, UDDI permite enumerar los contactos, incluyendo datos como el correo electrónico, el

Esta lista de contactos muestra los recursos de una empresa con los que se

io Web deberá ponerse en contacto con el

responsable de relaciones comerciales correspondiente pero, ¿cómo puede llegar a saber quién es?

¿Existe algún contacto para obtener asistencia técnica a la hora de utilizar los servicios Web de la

Resulta importante destacar que no todo el mundo puede obtener acceso a un servicio Web porque

A una entrada de registro UDDI le pueden acompañar medidas de seguridad, autorización y

No basta que el usuario sepa que existe un servicio Web para que pueda invocarlo. Puede existir una

comunicación fuera de banda entre empresas antes de permitir el acceso a un servicio Web.

nalizada la tarea de definición, el siguiente paso consiste en registrar la empresa.

Esta operación no se puede realizar mediante programación, ya que deberemos mostrar nuestra

El nodo de Microsoft utiliza Passport para la autenticación, así que debemos adquirir una cuenta de

Passport (http://www.passport.com/Consumer/default.asp) para continuar con el registro.

podemos utilizar la interfaz de usuario Web del nodo o realizar el

registro mediante programación dirigiendo al propio nodo las llamadas a API de SOAP.

Si no pensamos modificar la entrada o ésta es relativamente simple, bastará con la interfaz de usuario

No obstante, si pretemos actualizar la entrada con frecuencia, o bien, ésta es más compleja, resulta

a vez registrada la entrada en UDDI.

Page 86: Java Modulo 7

En primer lugar, utilizando la interfaz de usuario Web. Existen multitud de páginas que realizan la

búsqueda de los Servicios Web en el registro UDDI.

Debemos buscar la empresa por su nombre y categorizaciones para verla entre los conjuntos de

resultados devueltos.

En segundo lugar, utilizaríamos la herramienta de NetBeans para crearnos clientes para Servicios Web.

Bastaría con hacer una referencia en e

UDDI y WSDL funcionan como especificaciones gratuitas que facilitar el desarrollo de una colección de

software basado en servicios Web.

WSDL ofrece un modo formal de definir servicios Web, independientemente del proveedor, que

permitirá realizar llamadas a procedimientos remotos de próxima generación, mientras que UDDI

proporciona una amplia infraestructura estandarizada que permite al usuario describir y descubrir

servicios Web.

Mediante la combinación de estos dos estándares

Web

Ver Video:

en el Módulo 7. Unidad 7, en la plataforma elearning

Para uso exclusivo de los alumnos de CETICSA S.L.

En primer lugar, utilizando la interfaz de usuario Web. Existen multitud de páginas que realizan la

búsqueda de los Servicios Web en el registro UDDI.

Debemos buscar la empresa por su nombre y categorizaciones para verla entre los conjuntos de

En segundo lugar, utilizaríamos la herramienta de NetBeans para crearnos clientes para Servicios Web.

Bastaría con hacer una referencia en el proyecto al archivo WSDL.

UDDI y WSDL funcionan como especificaciones gratuitas que facilitar el desarrollo de una colección de

WSDL ofrece un modo formal de definir servicios Web, independientemente del proveedor, que

permitirá realizar llamadas a procedimientos remotos de próxima generación, mientras que UDDI

proporciona una amplia infraestructura estandarizada que permite al usuario describir y descubrir

Mediante la combinación de estos dos estándares, se podrá desarrollar todo un universo de servicios

Video: Test Web Service UDDI,

en el Módulo 7. Unidad 7, en la plataforma elearning

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

En primer lugar, utilizando la interfaz de usuario Web. Existen multitud de páginas que realizan la

Debemos buscar la empresa por su nombre y categorizaciones para verla entre los conjuntos de

En segundo lugar, utilizaríamos la herramienta de NetBeans para crearnos clientes para Servicios Web.

UDDI y WSDL funcionan como especificaciones gratuitas que facilitar el desarrollo de una colección de

WSDL ofrece un modo formal de definir servicios Web, independientemente del proveedor, que

permitirá realizar llamadas a procedimientos remotos de próxima generación, mientras que UDDI

proporciona una amplia infraestructura estandarizada que permite al usuario describir y descubrir

, se podrá desarrollar todo un universo de servicios

en el Módulo 7. Unidad 7, en la plataforma elearning

Page 87: Java Modulo 7

Unidad 8: Implementando servicios web mediante Java API para servicios web XML usando la

tecnología (JAX

Objetivos

� Entender el funcionamiento de los servicios web utilizando JAVA

� Creación y estructura de un Servicio Web JAVA

Introducción

Un servicio es un procedimiento, un mé

ser invocado por un cliente.

Los Servicios Web amplian esa idea

internet, empleando protocolos Web

Utilizan la arquitectura Orientada a Servicios (SOA)

Es una aproximación al diseño de aplicaciones complejas basada en:

� La identicación de los servicios que ofrecerá.

� La denición de esos servicios

� La organización de las interacciones entre esos servicios

� Importancia de las interfaces

� Descripción de las interfaces

� Tratamiento automático para generar código de implementación de las interfaces mediante

clases.

La idea base de cualquier servicio web será

La información de los servicios comprende un esquema basado en soap y un resultado.

Dicha información utiliza el lenguaje XML para expresar los elementos de los que está compuesto el

servicio y los datos que devolverá como respuesta a un consumidor de dicho servicio.

API de Java EE para la publicación y acceso a servicios web

Es la implementación por defecto que

La gestión de los documentos XML incluidos en las peticiones y respuestas SOAP se

JAX-WS define su propio conjunto de anotaciones para definir las clases

puntos finales de los mensajes que conforman las invocaciones SOAP para especificar la definicición del

fichero WSDL y del binding SOAP.

La implementación del servicio web puede desplegarse empleando un Servlet

endpoint.

Para uso exclusivo de los alumnos de CETICSA S.L.

Implementando servicios web mediante Java API para servicios web XML usando la

tecnología (JAX-WS)

Entender el funcionamiento de los servicios web utilizando JAVA-WS.

Creación y estructura de un Servicio Web JAVA-WS

icio es un procedimiento, un método o un objeto con una interfaz estable y pú

Los Servicios Web amplian esa idea para permitir que esa invocación pueda realizarse a travé

empleando protocolos Web estándar ya existentes.

rquitectura Orientada a Servicios (SOA)

e aplicaciones complejas basada en:

cación de los servicios que ofrecerá.

nición de esos servicios

La organización de las interacciones entre esos servicios

Importancia de las interfaces

n de las interfaces

para generar código de implementación de las interfaces mediante

de cualquier servicio web será desarrollar el sistema a partir de las interfaces

La información de los servicios comprende un esquema basado en soap y un resultado.

a información utiliza el lenguaje XML para expresar los elementos de los que está compuesto el

servicio y los datos que devolverá como respuesta a un consumidor de dicho servicio.

Servicios JAX

API de Java EE para la publicación y acceso a servicios web basados en WSDL y SOAP

que se incluye en Java SE 6

La gestión de los documentos XML incluidos en las peticiones y respuestas SOAP se

WS define su propio conjunto de anotaciones para definir las clases y métodos que actúan como

que conforman las invocaciones SOAP para especificar la definicición del

La implementación del servicio web puede desplegarse empleando un Servlet

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Implementando servicios web mediante Java API para servicios web XML usando la

interfaz estable y pública que puede

pueda realizarse a través de

para generar código de implementación de las interfaces mediante

desarrollar el sistema a partir de las interfaces.

La información de los servicios comprende un esquema basado en soap y un resultado.

a información utiliza el lenguaje XML para expresar los elementos de los que está compuesto el

servicio y los datos que devolverá como respuesta a un consumidor de dicho servicio.

Servicios JAX-WS

basados en WSDL y SOAP.

La gestión de los documentos XML incluidos en las peticiones y respuestas SOAP se delegan en JAXB.

y métodos que actúan como

que conforman las invocaciones SOAP para especificar la definicición del

como endpoint o un EJB

Page 88: Java Modulo 7

En contenedores que soporten Java EE 6 el despliegue es automático en ambos

aplicación el contenedor inspecciona las clases en busca de las

los mapeos de URL pertinentes.

En contenedores que no son Java EE 6, debe configurarse en el descriptor de despliegue

aplicación (WEB-INF/web.xml) y en el servlet de "escucha" del API JAX

Definición de servicios web con JAX

El único requisito es contar con un interfaz y/o una clase de

@WebService.

En el caso de EJB endpoints, además deben de estar anotados como

sin estado).

La clase de implementación debe ser pública y no puede ser final ni abstract

La clase de implementación debe contar con un constructor vacío

La clase de implementación no puede definir un método finalize()

Debe garantizarse una implementación sin estado

La clase de implementación no puede guardar info

Por defecto, para la clase/interface de implement

mismo nombre de la clase y el sufijo Service

nombre de la clase.

Para cada método público de la clase se gen

del método y dos elementos WSDL message,

para la respuesta (añadiendo al nombre del método el sufijo respose)

Los parámetros y valores de devolució

arrays, Map, List o Collection de los anteriores

Tipos de Anotaciones JAX-WS

Anotaciones que definen el mapeo WSDL (modifican el comportamiento por defecto):

� @WebService:

Señala una clase o interfaz como endpoint de un servicio web.

Incluye atributos para modificar el nombre del elemento service, portType, el name space, etc (name,

targetNamespace, serviceName, portName, wsdlLocation, endpointInterface)

� @WebMethod

Permite modificar la definición de las operaciones WSDL (atributo operationName) o excluir métodos de

la clase que no se desean exponer como operaciones del web service (con el atributo exclude=true).

� @WebResult

Permite controlar el nombre del elemento message de WSDL que contendrá e

name).

� @WebParam

Permite configurar los elementos parameter de WSDL vinculados a los parámetros de una operación

(atributos: name, mode [IN, OU, INOUT], targetNamespace, header, partName)

� @OneWay

Permite indicar que un método no tendrá valor de retorno.

Para uso exclusivo de los alumnos de CETICSA S.L.

En contenedores que soporten Java EE 6 el despliegue es automático en ambos

aplicación el contenedor inspecciona las clases en busca de las anotaciones @WebService y establec

Java EE 6, debe configurarse en el descriptor de despliegue

el servlet de "escucha" del API JAX-WS.

Definición de servicios web con JAX-WS

El único requisito es contar con un interfaz y/o una clase de implementación

, además deben de estar anotados como @Stateless (los servicios web son

La clase de implementación debe ser pública y no puede ser final ni abstract.

debe contar con un constructor vacío.

La clase de implementación no puede definir un método finalize().

Debe garantizarse una implementación sin estado.

La clase de implementación no puede guardar información de estado entre llamadas del cliente.

defecto, para la clase/interface de implementación se generará un elemento WSDL service con el

el sufijo Service, además se generará un elemento WSDL portType con el

público de la clase se generará un elemento WSDL operation con el mismo nombre

y dos elementos WSDL message, uno para la petición (con el nombre del método) y

para la respuesta (añadiendo al nombre del método el sufijo respose).

devolución deben de ser tipos básicos Java, clases

arrays, Map, List o Collection de los anteriores.

Anotaciones que definen el mapeo WSDL (modifican el comportamiento por defecto):

interfaz como endpoint de un servicio web.

Incluye atributos para modificar el nombre del elemento service, portType, el name space, etc (name,

targetNamespace, serviceName, portName, wsdlLocation, endpointInterface)

ión de las operaciones WSDL (atributo operationName) o excluir métodos de

la clase que no se desean exponer como operaciones del web service (con el atributo exclude=true).

Permite controlar el nombre del elemento message de WSDL que contendrá el valor de retorno (atributo

Permite configurar los elementos parameter de WSDL vinculados a los parámetros de una operación

(atributos: name, mode [IN, OU, INOUT], targetNamespace, header, partName)

o tendrá valor de retorno.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

En contenedores que soporten Java EE 6 el despliegue es automático en ambos casos. Al iniciar la

@WebService y establece

Java EE 6, debe configurarse en el descriptor de despliegue de la

implementación anotado con

@Stateless (los servicios web son

ado entre llamadas del cliente.

se generará un elemento WSDL service con el

se generará un elemento WSDL portType con el

un elemento WSDL operation con el mismo nombre

uno para la petición (con el nombre del método) y otro

deben de ser tipos básicos Java, clases anotadas con JAXB,

Anotaciones que definen el mapeo WSDL (modifican el comportamiento por defecto):

Incluye atributos para modificar el nombre del elemento service, portType, el name space, etc (name,

ión de las operaciones WSDL (atributo operationName) o excluir métodos de

la clase que no se desean exponer como operaciones del web service (con el atributo exclude=true).

l valor de retorno (atributo

Permite configurar los elementos parameter de WSDL vinculados a los parámetros de una operación

Page 89: Java Modulo 7

Existen también anotaciones que definien el binding SOAP de las operaciones y los métodos:

� @SOAPBinding

Para un método de la clase endpoint especifica el estilo de codificación de los mensajes (RPC vs.

document) y el tipo de codificación de los parámetros a usar (encoded vs.literal).

Atributos: style, use, parameterStyle.

� @SOAPMessageHandler

Especifica detalles de la gestión de los mensajes (petición y respuesta).

Atributos: name, className, initParams, roles, heards

Vamos a visualizar un ejemplo para la creación de un servicio web básico.

Mostraremos una lógica en la que recibiremos una fecha (String) desde el cliente y le enviaremos el día

de la semana a la que corresponde dicha fecha.

Comenzaremos creándonos un nuevo proyecto

Lo llamaremos AplicacionWebServices.

Vamos a utilizar el servidor GlassFish, que como hemos leído en la documentación, utiliza servicios web

JAX-WS.

Para uso exclusivo de los alumnos de CETICSA S.L.

Existen también anotaciones que definien el binding SOAP de las operaciones y los métodos:

Para un método de la clase endpoint especifica el estilo de codificación de los mensajes (RPC vs.

ficación de los parámetros a usar (encoded vs.literal).

Atributos: style, use, parameterStyle.

Especifica detalles de la gestión de los mensajes (petición y respuesta).

Atributos: name, className, initParams, roles, heards

ualizar un ejemplo para la creación de un servicio web básico.

Mostraremos una lógica en la que recibiremos una fecha (String) desde el cliente y le enviaremos el día

de la semana a la que corresponde dicha fecha.

Comenzaremos creándonos un nuevo proyecto Web Application.

Lo llamaremos AplicacionWebServices.

Vamos a utilizar el servidor GlassFish, que como hemos leído en la documentación, utiliza servicios web

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Existen también anotaciones que definien el binding SOAP de las operaciones y los métodos:

Para un método de la clase endpoint especifica el estilo de codificación de los mensajes (RPC vs.

ficación de los parámetros a usar (encoded vs.literal).

Mostraremos una lógica en la que recibiremos una fecha (String) desde el cliente y le enviaremos el día

Vamos a utilizar el servidor GlassFish, que como hemos leído en la documentación, utiliza servicios web

Page 90: Java Modulo 7

No seleccionaremos ningún framework añadido para la aplicación.

A continuación, agregaremos un nuevo objeto sobre el proyecto.

Sobre la carpeta de Web Services, seleccionamos un objeto Web Service.

Lo llamaremos PrimerWebService y lo incluiremos en un paquete llamado paqueteservicios.

Indicaremos la opción Web Service from Scratch,

en una clase y no en un EJB Stateless.

Para uso exclusivo de los alumnos de CETICSA S.L.

No seleccionaremos ningún framework añadido para la aplicación.

agregaremos un nuevo objeto sobre el proyecto.

Sobre la carpeta de Web Services, seleccionamos un objeto Web Service.

Lo llamaremos PrimerWebService y lo incluiremos en un paquete llamado paqueteservicios.

Indicaremos la opción Web Service from Scratch, lo que quiere decir que generaremos el Web Service

en una clase y no en un EJB Stateless.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Lo llamaremos PrimerWebService y lo incluiremos en un paquete llamado paqueteservicios.

lo que quiere decir que generaremos el Web Service

Page 91: Java Modulo 7

Como vemos, ya ha incluido la anotación @WebService indicando el tipo de clase que hemos

generado.

Nos marcará un error debido a que tenemos que incluir un método

servicio.

Podemos incluir operaciones de dos formas diferentes, desde el código pulsando sobre la ayuda de la

izquierda del código o sobre el designer del servicio web.

Para uso exclusivo de los alumnos de CETICSA S.L.

Como vemos, ya ha incluido la anotación @WebService indicando el tipo de clase que hemos

Nos marcará un error debido a que tenemos que incluir un método o varios de operación para el

Podemos incluir operaciones de dos formas diferentes, desde el código pulsando sobre la ayuda de la

izquierda del código o sobre el designer del servicio web.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Como vemos, ya ha incluido la anotación @WebService indicando el tipo de clase que hemos

o varios de operación para el

Podemos incluir operaciones de dos formas diferentes, desde el código pulsando sobre la ayuda de la

Page 92: Java Modulo 7

Vista desde el diseñador del servicio (pestaña Design

Al seleccionar Add Operation, nos mostrará una nueva ventana en la que realizaremos la cabecera del

método web service e incluiremos parámetros si los necesitaramos.

Llamaremos a nuestro método GetDiaNacimiento y le indicaremos que recibirá un parámetr

clase String llamado fecha.

Para uso exclusivo de los alumnos de CETICSA S.L.

Vista desde el diseñador del servicio (pestaña Design)

Al seleccionar Add Operation, nos mostrará una nueva ventana en la que realizaremos la cabecera del

método web service e incluiremos parámetros si los necesitaramos.

Llamaremos a nuestro método GetDiaNacimiento y le indicaremos que recibirá un parámetr

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Al seleccionar Add Operation, nos mostrará una nueva ventana en la que realizaremos la cabecera del

Llamaremos a nuestro método GetDiaNacimiento y le indicaremos que recibirá un parámetro de la

Page 93: Java Modulo 7

Una vez que pulsamos sobre OK, veremos en el diseñador el método de forma gráfica.

Y podremos comprobar que hemos añadido un método con anotaciones sobre el servicio en nuestro código.

Estas son las anotaciones que hemos utilizado para el servicio web:

� @WebService identifica a la clase como un servicio Web.

� Al incluir este descriptor en la clase el editor del netbeans nos avisa que debemos importa la clase javax.jws.Webservice.

� @WebMethod identifica a una operación

� Al igual que con WebService se debe importar la clase WebMethod de mismo paquete.

� @WebParam asigna un nombre a los parametros de una operación.

� Son opcionales pero conviene utilizarlos para que el descriptor de nuestro servicio Web sea legible para los programadores

Implementamos el código del Web Service para devolver el día a partir de una fecha:

package paqueteservicios; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat;import javax.jws.WebService;

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que pulsamos sobre OK, veremos en el diseñador el método de forma gráfica.

Y podremos comprobar que hemos añadido un método con anotaciones sobre el servicio en nuestro

hemos utilizado para el servicio web:

@WebService identifica a la clase como un servicio Web.

Al incluir este descriptor en la clase el editor del netbeans nos avisa que debemos importa la

@WebMethod identifica a una operación como parte del servicio web.

Al igual que con WebService se debe importar la clase WebMethod de mismo paquete.

asigna un nombre a los parametros de una operación.

Son opcionales pero conviene utilizarlos para que el descriptor de nuestro servicio Web sea programadores.

Implementamos el código del Web Service para devolver el día a partir de una fecha:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que pulsamos sobre OK, veremos en el diseñador el método de forma gráfica.

Y podremos comprobar que hemos añadido un método con anotaciones sobre el servicio en nuestro

Al incluir este descriptor en la clase el editor del netbeans nos avisa que debemos importa la

Al igual que con WebService se debe importar la clase WebMethod de mismo paquete.

Son opcionales pero conviene utilizarlos para que el descriptor de nuestro servicio Web sea

Implementamos el código del Web Service para devolver el día a partir de una fecha:

Page 94: Java Modulo 7

import java.util.*; import javax.jws.WebMethod; import javax.jws.WebParam;

@WebService() public class PrimerWebService {

@WebMethod(operationName = "getDiaNacimiento")public String getDiaNacimiento(@WebParam(name = "fecha")String fecha) throws ParseException {

Date date; Calendar calendario = GregorianCalendar.getInstance();SimpleDateFormat formatoDeFecha = new Sidate = formatoDeFecha.parse(fecha);

calendario.setTime(date); int dia, mes, anyo;

int op1, op2, op3, op4, op5, op6, resultado;dia = calendario.get(Calendar.DAY_OF_MONTH);

mes = calendario.get(Calendar.MONTH); mes++;

anyo = calendario.get(Calendar.YEAR); System.out.println("dia " +dia);

System.out.println("mes " +mes);System.out.println("año " +anyo);

if (mes == 1) { mes = 13; anyo -= 1; } else if (mes == 2) { mes = 14; anyo -= 1; }

op1 = ((mes + 1) * 3) / 5; System.out.println(op1); op2 = anyo / 4; System.out.println(op2); op3 = anyo / 100; System.out.println(op3); op4 = anyo / 400; System.out.println(op4);

op5 = dia + (mes * 2) + anyo + op1 + op2 + op4 + 2 System.out.println(op5); op6 = op5 / 7; System.out.println(op6); resultado = op5 - (op6 * 7); System.out.println(resultado);

String dianacimiento = "";

switch (resultado)

Para uso exclusivo de los alumnos de CETICSA S.L.

= "getDiaNacimiento")public String getDiaNacimiento(@WebParam(name = "fecha")String fecha) throws ParseException {

Calendar calendario = GregorianCalendar.getInstance();SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd/MM/yyyy");date = formatoDeFecha.parse(fecha);

int op1, op2, op3, op4, op5, op6, resultado;dia = calendario.get(Calendar.DAY_OF_MONTH);

calendario.get(Calendar.MONTH);

anyo = calendario.get(Calendar.YEAR);

System.out.println("mes " +mes);System.out.println("año " +anyo);

op5 = dia + (mes * 2) + anyo + op1 + op2 + op4 + 2 - op3;

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

mpleDateFormat("dd/MM/yyyy");

Page 95: Java Modulo 7

{ case 0:

dianacimiento = "sábado"; break; case 1:

dianacimiento = "domingo"; break; case 2: dianacimiento = "lunes"; break; case 3: dianacimiento = "martes"; break; case 4:

dianacimiento = "miércoles"; break; case 5: dianacimiento = "jueves"; break; case 6: dianacimiento = "viernes"; break; } return dianacimiento; } }

Ahora veremos que tenemos una carpeta llamada Web Services en nuestro proyecto.

Vamos a probar el servicio para visualizar el formato de la respuesta y la entrada de datos.

Sobre nuestro servicio, seleccionaremos la opción Test Web Service.

Se nos abrirá el explorador mostrandonos la ubicaci

http://localhost:8089/AplicacionWebServices/PrimerWebServiceService?Tester

Para uso exclusivo de los alumnos de CETICSA S.L.

dianacimiento = "sábado";

dianacimiento = "domingo";

dianacimiento = "miércoles";

Ahora veremos que tenemos una carpeta llamada Web Services en nuestro proyecto.

Vamos a probar el servicio para visualizar el formato de la respuesta y la entrada de datos.

nuestro servicio, seleccionaremos la opción Test Web Service.

Se nos abrirá el explorador mostrandonos la ubicación web del servicio.

http://localhost:8089/AplicacionWebServices/PrimerWebServiceService?Tester

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora veremos que tenemos una carpeta llamada Web Services en nuestro proyecto.

Vamos a probar el servicio para visualizar el formato de la respuesta y la entrada de datos.

http://localhost:8089/AplicacionWebServices/PrimerWebServiceService?Tester

Page 96: Java Modulo 7

Ahora ya podemos incluir una fecha con el fformato soap del servicio y la respuesta xml.

SOAP Response

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:getDiaNacimientoResponse xmlns:ns2="http://paqueteservicios/">

<return>miércoles</return></ns2:getDiaNacimientoResponse>

</S:Body> </S:Envelope>

Y esta es la acción que realizará el servicio web en el servidor expresada de forma gráfica:

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora ya podemos incluir una fecha con el formato que hemos elegido en el código y ya tenemos el formato soap del servicio y la respuesta xml.

8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

cimientoResponse xmlns:ns2="http://paqueteservicios/">

</ns2:getDiaNacimientoResponse>

á el servicio web en el servidor expresada de forma gráfica:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

ormato que hemos elegido en el código y ya tenemos el

á el servicio web en el servidor expresada de forma gráfica:

Page 97: Java Modulo 7

Ver Video:

en el Módulo 7. Unidad 8, en la plataforma elearning

Objetivos

� Conocer el funcionamiento de los servicios JAVA

� Acceso y consumo de recursos de un servicio web.

Enunciado

En este laboratorio vamos a crearnos un SISBN y el código EAN a través JAVA-

Lo primero de todo será crearnos un nuevo proyecto Web Application.

Para uso exclusivo de los alumnos de CETICSA S.L.

Video: Servicio Web Tabla de Multiplicar

en el Módulo 7. Unidad 8, en la plataforma elearning

Laboratorio: Servicio Validación

Conocer el funcionamiento de los servicios JAVA-WS.

Acceso y consumo de recursos de un servicio web.

En este laboratorio vamos a crearnos un Servicio Web que validará, mediante dos métodos, -WS.

Lo primero de todo será crearnos un nuevo proyecto Web Application.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Servicio Web Tabla de Multiplicar,

en el Módulo 7. Unidad 8, en la plataforma elearning

Laboratorio: Servicio Validación

Web que validará, mediante dos métodos, el código

Page 98: Java Modulo 7

Lo llamaremos ProyectoValidacion

Utilizaremos el servidor GlassFish Server.

No agregaremos ningún Framework.

Para uso exclusivo de los alumnos de CETICSA S.L.

ilizaremos el servidor GlassFish Server.

No agregaremos ningún Framework.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 99: Java Modulo 7

Vamos a agregar un nuevo servicio web.

Lo llamaremos ServicioValidacion

Lo primero que vamos a realizar es una operaciPara validar el código ISBN tenemos que hacer lo siguiente:

EJEMPLO DE ISBN CORRECTO: 8441513929

Debemos descomponer la cadena y multiplica

8 * 1

4 * 2

4 * 3

1 * 4

5 * 5

9 * 10

Después, con la suma total de todas estas mul

cero, el número ISBN es correcto.

Agregaremos una nueva operación sobre el Web Service llamada validarNumeroIsbn() que recibirá un

String con el número ISBN a validar y devolverá true o false:

Para uso exclusivo de los alumnos de CETICSA S.L.

nuevo servicio web.

Lo primero que vamos a realizar es una operación para validar el código ISBN.ISBN tenemos que hacer lo siguiente:

EJEMPLO DE ISBN CORRECTO: 8441513929

la cadena y multiplicar cada número por la posición que ocupa en la cadena

de todas estas multiplicaciones se divide el resultado

Agregaremos una nueva operación sobre el Web Service llamada validarNumeroIsbn() que recibirá un

String con el número ISBN a validar y devolverá true o false:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

ón para validar el código ISBN.

posición que ocupa en la cadena

el resultado entre 11 y, si el resto es

Agregaremos una nueva operación sobre el Web Service llamada validarNumeroIsbn() que recibirá un

Page 100: Java Modulo 7

A continuación, nuestro servicio contendrá otro método para poder validar el código EAN, que es el

formato que se utiliza en los códigos de barras.

Para validar un código EAN debemos realizar los siguientes pasos:

Por ejemplo, para validar el código EAN

1. Separar el dígito de control. Nos quedamos con "1234567" y "8"

2. Sumar pares: sumapares=2+4+6=12

3. Sumar impares: sumaimpares=1+3+5+7=16

4. Multiplicamos los impares por 3.

5. sumaimpares=16*3=48

6. Sumar el resultado de pares e impares:

7. Hallar el resto de la division por 10:

8. Hacer 10-resto: 10-0=10

9. Como nos ha salido 10, el dígito de control es 0.

10. Comparar el dígito de control que hemos calculado con el que tenía el código: Nos sale

código tenía un 8. Es incorrecto.

Nos crearemos otra nueva operación sobre el Servicio que llamaremos validarEan() que recibirá un

String con el dato del código y devolverá true o false.

Para uso exclusivo de los alumnos de CETICSA S.L.

A continuación, nuestro servicio contendrá otro método para poder validar el código EAN, que es el

formato que se utiliza en los códigos de barras.

Para validar un código EAN debemos realizar los siguientes pasos:

Por ejemplo, para validar el código EAN8 "12345678" (Obviamente es inventado)

Separar el dígito de control. Nos quedamos con "1234567" y "8"

sumapares=2+4+6=12

Sumar impares: sumaimpares=1+3+5+7=16

ultiplicamos los impares por 3.

pares e impares: 12+48=60

Hallar el resto de la division por 10: 60 mod 10 = 0

Como nos ha salido 10, el dígito de control es 0.

Comparar el dígito de control que hemos calculado con el que tenía el código: Nos sale

digo tenía un 8. Es incorrecto.

Nos crearemos otra nueva operación sobre el Servicio que llamaremos validarEan() que recibirá un

String con el dato del código y devolverá true o false.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

A continuación, nuestro servicio contendrá otro método para poder validar el código EAN, que es el

(Obviamente es inventado)

Comparar el dígito de control que hemos calculado con el que tenía el código: Nos sale 0 y el

Nos crearemos otra nueva operación sobre el Servicio que llamaremos validarEan() que recibirá un

Page 101: Java Modulo 7

Ahora debemos implementar la lógica para cada método en el servicio

tipo de código.

Escribiremos el siguiente código en la clase del Web Service:

package paquetews;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

@WebService()

public class ServicioValidacion {

/**

* Web service operation

*/

@WebMethod(operationName = "validarNumeroISBN")

public boolean validarNumeroISBN(@WebParam(name = "isbn")

String isbn) {

if (isbn.length() != 10)

{

return false;

}

else

{

char letra;

int sumanumeros = 0;

for (int i = 0; i < isbn.length(); i++)

{

letra = isbn.charAt(i);

int numero = Integer.parseInt(String.valueOf(letra));

int resultado = numero * (i + 1);

sumanumeros += resultado;

}

if (sumanumeros % 11 == 0)

{

return true;

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora debemos implementar la lógica para cada método en el servicio y para la validación de cada

Escribiremos el siguiente código en la clase del Web Service:

@WebMethod(operationName = "validarNumeroISBN")

public boolean validarNumeroISBN(@WebParam(name = "isbn")

for (int i = 0; i < isbn.length(); i++)

int numero = Integer.parseInt(String.valueOf(letra));

int resultado = numero * (i + 1);

sumanumeros += resultado;

if (sumanumeros % 11 == 0)

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

y para la validación de cada

Page 102: Java Modulo 7

}

}

return false;

}

/**

* Web service operation

*/

@WebMethod(operationName = "validarEan")

public boolean validarEan(@WebParam(name = "ean")

String ean) {

char letra;

char digitocontrol;

digitocontrol = ean.charAt(ean.length()

int sumapares = 0;

int sumaimpares = 0;

for (int i = 0; i < ean.length()-1; i++)

{

letra = ean.charAt(i);

System.out.println("Letra: " + letra);

int numero = Integer.parseInt(String.valueOf(letra));

if (numero%2==0)

{

sumapares += numero;

}

else

{

sumaimpares += numero;

}

}

sumaimpares = sumaimpares * 3;

int total = sumapares + sumaimpares;

int resto = total%10;

resto = 10 - resto;

if (resto == 10)

{

resto = 0;

}

int dc = Integer.parseInt(String.valueOf(digitocontrol));

if (resto == dc)

{

return true;

}else

{

return false;

}

}

}

Ahora es el momento de probar el servicio:

Para uso exclusivo de los alumnos de CETICSA S.L.

@WebMethod(operationName = "validarEan")

public boolean validarEan(@WebParam(name = "ean")

digitocontrol = ean.charAt(ean.length()-1);

1; i++)

System.out.println("Letra: " + letra);

int numero = Integer.parseInt(String.valueOf(letra));

sumaimpares = sumaimpares * 3;

int total = sumapares + sumaimpares;

int dc = Integer.parseInt(String.valueOf(digitocontrol));

Ahora es el momento de probar el servicio:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 103: Java Modulo 7

Veremos la pantalla de presentación del Web Service:

Podremos visualizar los resultados de las operaciones:

Para uso exclusivo de los alumnos de CETICSA S.L.

Veremos la pantalla de presentación del Web Service:

Podremos visualizar los resultados de las operaciones:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 104: Java Modulo 7

Para uso exclusivo de los alumnos de CETICSA S.L.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 105: Java Modulo 7

Unidad 9: Desarrollando servicios Web cliente

Objetivos

� Conocer los conceptos de los clientes de Servicios Web.

� Aprender a consumir cualquier tipo de Servicio desde la plataforma Java.

� Creación de clientes de Servicios Web SOAP y Servicios REST.

Introducción

Dentro de toda la tecnología de Web Services, sin ninguna duda, la parte más importante es el

consumo de dicho servicio. Por muy b

capaz de consumirla, no serviría de nada.

Aquí es dónde entra el papel de los clientes de los Servicios Web. El consumo de los servicios web es

una tarea muy sencilla si se tienen editores tale

funcionalidad y herramientas gráficas para poder obtener acceso a cualquier tipo de Web Service.

Tenemos que saber que no todos los Servicios Web son iguales, por lo que tampoco su consumo es el

mismo.

Dependerá del tipo de servicio expuesto, que su consumo se realice de una forma determinada.

Java utiliza los servicios JAVA-WS por defecto, su consumo es particularmente fácil, debido a que utiliza

el protocolo SOAP.

Como hemos aprendido, los servicios web

WSDL cuales son sus métodos y características, por lo que un Web Service SOAP escrito en Visual Studio

.Net será consumido exactamente igual que un Web Service SOAP escrito en Java.

Pero existen otro tipo de Web Services que están apareciendo ahora y cuyo consumo es diferente,

debido a que utilizan el protocolo HTTP para su comunicación. Son los Servicios Web RestFul.

Los servicios web RESTful han venido a simplificar el desarrollo d

modelo de interaccion con servicios web.

La Transferencia de Estado Representacional (Representational State Transfer) o REST describe una

interfaz web simple utilizando peticiones HTTP y datos XML

frecuentemente usadas en los servicios web

Los servicios web RESTful se basan en la simplicidad de su uso debido a que estos son accesibles via

protocolo HTTP a diferencia de los servicios web basados en SOAP en donde existe un nivel

abstraccion adicional, lo que significa que

html, siempre y cuando sigamos el modelo de trabajo de RESTful donde, mediante las llamadas HTTP a

sus metodos podemos acceder a los recursos de un

HTTP via POST a un recurso, lo cual es totalmente distinto a hacer una solicitud HTTP via DELETE a otro

metodo del mismo recurso.

La Transferencia de Estado Representacional (REST

amplia adopción en toda la web como una alternativa más simple a SOAP y a los servicios web

basados en el Lenguage de Descripción de Servicios Web (Web Services Descripcion Language

Para uso exclusivo de los alumnos de CETICSA S.L.

Unidad 9: Desarrollando servicios Web cliente

Conocer los conceptos de los clientes de Servicios Web.

lquier tipo de Servicio desde la plataforma Java.

Creación de clientes de Servicios Web SOAP y Servicios REST.

Dentro de toda la tecnología de Web Services, sin ninguna duda, la parte más importante es el

consumo de dicho servicio. Por muy bien que hagamos una aplicación, si no tenemos a nadie que sea

capaz de consumirla, no serviría de nada.

Aquí es dónde entra el papel de los clientes de los Servicios Web. El consumo de los servicios web es

una tarea muy sencilla si se tienen editores tales como NetBeans o Eclipse, ya que nos ofrecen

funcionalidad y herramientas gráficas para poder obtener acceso a cualquier tipo de Web Service.

Tenemos que saber que no todos los Servicios Web son iguales, por lo que tampoco su consumo es el

á del tipo de servicio expuesto, que su consumo se realice de una forma determinada.

WS por defecto, su consumo es particularmente fácil, debido a que utiliza

Como hemos aprendido, los servicios web basados en SOAP, indican al cliente mediante el fichero

WSDL cuales son sus métodos y características, por lo que un Web Service SOAP escrito en Visual Studio

.Net será consumido exactamente igual que un Web Service SOAP escrito en Java.

tipo de Web Services que están apareciendo ahora y cuyo consumo es diferente,

debido a que utilizan el protocolo HTTP para su comunicación. Son los Servicios Web RestFul.

Web Services REST

os servicios web RESTful han venido a simplificar el desarrollo de servicios web y a implementar un nuevo

modelo de interaccion con servicios web.

La Transferencia de Estado Representacional (Representational State Transfer) o REST describe una

interfaz web simple utilizando peticiones HTTP y datos XML, pero sin capas a

frecuentemente usadas en los servicios web.

Los servicios web RESTful se basan en la simplicidad de su uso debido a que estos son accesibles via

protocolo HTTP a diferencia de los servicios web basados en SOAP en donde existe un nivel

abstraccion adicional, lo que significa que podremos consumir un servicio web con un simple formulario

el modelo de trabajo de RESTful donde, mediante las llamadas HTTP a

sus metodos podemos acceder a los recursos de un web service, como por ejemplo hacer una solicitud

HTTP via POST a un recurso, lo cual es totalmente distinto a hacer una solicitud HTTP via DELETE a otro

La Transferencia de Estado Representacional (REST - Representational State T

amplia adopción en toda la web como una alternativa más simple a SOAP y a los servicios web

basados en el Lenguage de Descripción de Servicios Web (Web Services Descripcion Language

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Unidad 9: Desarrollando servicios Web cliente

lquier tipo de Servicio desde la plataforma Java.

Dentro de toda la tecnología de Web Services, sin ninguna duda, la parte más importante es el

ien que hagamos una aplicación, si no tenemos a nadie que sea

Aquí es dónde entra el papel de los clientes de los Servicios Web. El consumo de los servicios web es

s como NetBeans o Eclipse, ya que nos ofrecen

funcionalidad y herramientas gráficas para poder obtener acceso a cualquier tipo de Web Service.

Tenemos que saber que no todos los Servicios Web son iguales, por lo que tampoco su consumo es el

á del tipo de servicio expuesto, que su consumo se realice de una forma determinada.

WS por defecto, su consumo es particularmente fácil, debido a que utiliza

basados en SOAP, indican al cliente mediante el fichero

WSDL cuales son sus métodos y características, por lo que un Web Service SOAP escrito en Visual Studio

.Net será consumido exactamente igual que un Web Service SOAP escrito en Java.

tipo de Web Services que están apareciendo ahora y cuyo consumo es diferente,

debido a que utilizan el protocolo HTTP para su comunicación. Son los Servicios Web RestFul.

Web Services REST

e servicios web y a implementar un nuevo

La Transferencia de Estado Representacional (Representational State Transfer) o REST describe una

pero sin capas adicionales como SOAP,

Los servicios web RESTful se basan en la simplicidad de su uso debido a que estos son accesibles via

protocolo HTTP a diferencia de los servicios web basados en SOAP en donde existe un nivel de

consumir un servicio web con un simple formulario

el modelo de trabajo de RESTful donde, mediante las llamadas HTTP a

web service, como por ejemplo hacer una solicitud

HTTP via POST a un recurso, lo cual es totalmente distinto a hacer una solicitud HTTP via DELETE a otro

Representational State Transfer) fue ganando

amplia adopción en toda la web como una alternativa más simple a SOAP y a los servicios web

basados en el Lenguage de Descripción de Servicios Web (Web Services Descripcion Language - WSDL).

Page 106: Java Modulo 7

Grandes proveedores de Web 2.0 están migran

Facebook, Flickr, quienes han marca

utilizar un modelo más facil de usar, orientado a los recursos.

REST define un set de principios arquitectónic

en los recursos del sistema, incluyendo cómo se accede al estado de dichos recursos y cómo se

transfieren por HTTP hacia clientes escritos en diversos lenguajes.

REST ha crecido en los últimos años como el modelo predominante para el diseño de servicios.

De hecho, REST ha logrado un impacto tan grande en la web que prácticamente

a SOAP y las interfaces basadas en WSDL por tener un estilo bastante más simple

Los 4 principios de REST

Una implementación concreta de un servicio web REST sigue cuatro principios de diseño fundamentales:

� Utiliza los métodos HTTP de manera explícita

� No mantiene estado

� Expone URIs con forma de directorios

� Transfiere XML, JavaScript Object Notation (JSON), o ambos

A continuación vamos a ver en detalle estos cuatro principios, y explicaremos porqué son importantes a

la hora de diseñar un servicio web REST.

REST utiliza los métodos HTTP de manera explícita

Una de las caraterísticas claves de los servicios web REST es el uso explícito de los métodos HTTP,

siguiendo el protocolo definido por RFC 2616.

Por ejemplo, HTTP GET se define como un método productor de datos, cuyo uso está pensado para que

las aplicaciones cliente obtengan recursos, busquen datos de un servidor web, o ejecuten una consulta

esperando que el servidor web la realice y devuelva un conjunto de recursos.

REST hace que los desarrolladores usen los métodos HTTP explícitamente de manera que resulte

consistente con la definición del protocolo.

Este principio de diseño básico establece una asociación uno

leer, actualizar y borrar y los métodos HTTP.

De acuerdo a esta asociación, podemos exponer los métodos del Servicio de cua

� POST para crear un recurso en el servidor

� GET para obtener un recurso

� PUT para cambiar el estado de un recurso o actualizarlo

� DELETE para eliminar un recurso

Un fallo de diseño que tienen muchas APIs web es el uso de métodos HTTP para otros propósitos.

Por ejemplo, la petición del URI en un pedido HTTP GET, en general

el string de consulta en el URI incluye un conjunto de paráme

que usará el servidor para encontrar un conjunto de recursos.

Pero hay muchos casos de APIs web poco

algo transaccional en el servidor; por ejemplo, agregar

Para uso exclusivo de los alumnos de CETICSA S.L.

randes proveedores de Web 2.0 están migrando a esta técnología, incluyendo a Yahoo, Google,

marcado como obsoletos a sus servicios SOAP y WSDL y

un modelo más facil de usar, orientado a los recursos.

REST define un set de principios arquitectónicos por los cuales se diseñan servicios web haciendo foco

en los recursos del sistema, incluyendo cómo se accede al estado de dichos recursos y cómo se

transfieren por HTTP hacia clientes escritos en diversos lenguajes.

en los últimos años como el modelo predominante para el diseño de servicios.

un impacto tan grande en la web que prácticamente

a SOAP y las interfaces basadas en WSDL por tener un estilo bastante más simple

Una implementación concreta de un servicio web REST sigue cuatro principios de diseño fundamentales:

tiliza los métodos HTTP de manera explícita

xpone URIs con forma de directorios

JavaScript Object Notation (JSON), o ambos

A continuación vamos a ver en detalle estos cuatro principios, y explicaremos porqué son importantes a

la hora de diseñar un servicio web REST.

REST utiliza los métodos HTTP de manera explícita

ísticas claves de los servicios web REST es el uso explícito de los métodos HTTP,

siguiendo el protocolo definido por RFC 2616.

Por ejemplo, HTTP GET se define como un método productor de datos, cuyo uso está pensado para que

ngan recursos, busquen datos de un servidor web, o ejecuten una consulta

esperando que el servidor web la realice y devuelva un conjunto de recursos.

REST hace que los desarrolladores usen los métodos HTTP explícitamente de manera que resulte

on la definición del protocolo.

Este principio de diseño básico establece una asociación uno-a-uno entre las operaciones de crear,

leer, actualizar y borrar y los métodos HTTP.

, podemos exponer los métodos del Servicio de cua

POST para crear un recurso en el servidor

GET para obtener un recurso

PUT para cambiar el estado de un recurso o actualizarlo

minar un recurso

de diseño que tienen muchas APIs web es el uso de métodos HTTP para otros propósitos.

Por ejemplo, la petición del URI en un pedido HTTP GET, en general, identifica a un recurso específico.

el string de consulta en el URI incluye un conjunto de parámetros que definen el criterio de búsqueda

que usará el servidor para encontrar un conjunto de recursos.

Pero hay muchos casos de APIs web poco “elegantes” que utilizan el método HTTP GET para ejecutar

algo transaccional en el servidor; por ejemplo, agregar registros a una base de datos.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

gía, incluyendo a Yahoo, Google,

como obsoletos a sus servicios SOAP y WSDL y han pasado a

os por los cuales se diseñan servicios web haciendo foco

en los recursos del sistema, incluyendo cómo se accede al estado de dichos recursos y cómo se

en los últimos años como el modelo predominante para el diseño de servicios.

un impacto tan grande en la web que prácticamente ha logrado desplazar

a SOAP y las interfaces basadas en WSDL por tener un estilo bastante más simple de utilizar.

Una implementación concreta de un servicio web REST sigue cuatro principios de diseño fundamentales:

A continuación vamos a ver en detalle estos cuatro principios, y explicaremos porqué son importantes a

ísticas claves de los servicios web REST es el uso explícito de los métodos HTTP,

Por ejemplo, HTTP GET se define como un método productor de datos, cuyo uso está pensado para que

ngan recursos, busquen datos de un servidor web, o ejecuten una consulta

REST hace que los desarrolladores usen los métodos HTTP explícitamente de manera que resulte

uno entre las operaciones de crear,

, podemos exponer los métodos del Servicio de cuatro formas diferentes:

de diseño que tienen muchas APIs web es el uso de métodos HTTP para otros propósitos.

identifica a un recurso específico. O

tros que definen el criterio de búsqueda

el método HTTP GET para ejecutar

registros a una base de datos.

Page 107: Java Modulo 7

En estos casos, no se utiliza adecuadamente el URI de la petición HTTP, o al menos no se usa "

REST".

REST no mantiene estado

Los servicios web REST necesitan escalar para poder satisfacer una de

Se usan clusters de servidores con balanceadores de carga y alta disponibilidad, proxies, y gateways de

manera de conformar una topología serviciable, que permita transferir peticiones de un equipo a otro

para disminuir el tiempo total de respuesta de una invocación al servicio web.

El uso de servidores intermedios para mejorar la escalabilidad hace necesario que los clientes de

servicios web REST envien peticiones completas e independientes,

que incluyan todos los datos necesarios para cumplir el pedido, de manera que los componentes en los

servidores intermedios puedan redireccionar y gestionar la carga sin mantener el estado localmente

entre las peticiones.

Una petición completa e independiente hace

información de contexto o estado al procesar la petición.

Una aplicación o cliente de servicio web REST debe incluir dentro del encabezado y del cuerpo HTTP de

la petición todos los parámetros, contexto y dat

De esta forma, al no mantener el estado

e implementación de los componentes del servidor, ya que la

necesidad de sincronizar los datos de la sesión con una aplicación externa.

REST expone URIs con forma de directorios

Desde el punto de vista del cliente de la aplicación que accede a un recurso, la URI determina

intuitivo que va a ser el web service REST, y si el servicio va a ser utilizado tal como fue pensado

momento de diseñarlo.

La tercera característica de los servicios web REST es justamente sobre las URIs.

Las URI de los servicios web REST deben ser intuitivas, h

Pensemos en las URI como una interfaz auto

explicación o referencia para que un desarrollador pueda comprender a lo que apunta, y a los recursos

derivados relacionados.

Una forma de lograr este nivel de usabilidad es definir URIs con una estructura al estilo de los directorios.

Este tipo de URIs es jerárquica, con una única ruta raiz, y va abriendo ramas a través de las subrutas para

exponer las áreas principales del servicio.

De acuerdo a esta definición, una URI no es sólamente una cadena de caracteres delimitada por

barras, sino más bien un árbol con subordinados y padres organizados como nodos.

Para uso exclusivo de los alumnos de CETICSA S.L.

En estos casos, no se utiliza adecuadamente el URI de la petición HTTP, o al menos no se usa "

Los servicios web REST necesitan escalar para poder satisfacer una demanda en consta

Se usan clusters de servidores con balanceadores de carga y alta disponibilidad, proxies, y gateways de

manera de conformar una topología serviciable, que permita transferir peticiones de un equipo a otro

respuesta de una invocación al servicio web.

El uso de servidores intermedios para mejorar la escalabilidad hace necesario que los clientes de

ones completas e independientes, es decir, se deben enviar peticiones

todos los datos necesarios para cumplir el pedido, de manera que los componentes en los

servidores intermedios puedan redireccionar y gestionar la carga sin mantener el estado localmente

Una petición completa e independiente hace que el servidor no tenga que recuperar ninguna

información de contexto o estado al procesar la petición.

Una aplicación o cliente de servicio web REST debe incluir dentro del encabezado y del cuerpo HTTP de

la petición todos los parámetros, contexto y datos que necesita el servidor para generar la respuesta.

estado, mejora el rendimiento de los servicios web y simplifica el diseño

e implementación de los componentes del servidor, ya que la falta en el estado

necesidad de sincronizar los datos de la sesión con una aplicación externa.

REST expone URIs con forma de directorios

Desde el punto de vista del cliente de la aplicación que accede a un recurso, la URI determina

va a ser el web service REST, y si el servicio va a ser utilizado tal como fue pensado

La tercera característica de los servicios web REST es justamente sobre las URIs.

Las URI de los servicios web REST deben ser intuitivas, hasta el punto de que sea facil adivinarlas.

Pensemos en las URI como una interfaz auto-documentada que necesita de muy poca o ninguna

explicación o referencia para que un desarrollador pueda comprender a lo que apunta, y a los recursos

Una forma de lograr este nivel de usabilidad es definir URIs con una estructura al estilo de los directorios.

Este tipo de URIs es jerárquica, con una única ruta raiz, y va abriendo ramas a través de las subrutas para

l servicio.

De acuerdo a esta definición, una URI no es sólamente una cadena de caracteres delimitada por

barras, sino más bien un árbol con subordinados y padres organizados como nodos.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

En estos casos, no se utiliza adecuadamente el URI de la petición HTTP, o al menos no se usa "en la forma

manda en constante crecimiento.

Se usan clusters de servidores con balanceadores de carga y alta disponibilidad, proxies, y gateways de

manera de conformar una topología serviciable, que permita transferir peticiones de un equipo a otro

El uso de servidores intermedios para mejorar la escalabilidad hace necesario que los clientes de

es decir, se deben enviar peticiones

todos los datos necesarios para cumplir el pedido, de manera que los componentes en los

servidores intermedios puedan redireccionar y gestionar la carga sin mantener el estado localmente

que el servidor no tenga que recuperar ninguna

Una aplicación o cliente de servicio web REST debe incluir dentro del encabezado y del cuerpo HTTP de

os que necesita el servidor para generar la respuesta.

mejora el rendimiento de los servicios web y simplifica el diseño

estado del servidor elimina la

Desde el punto de vista del cliente de la aplicación que accede a un recurso, la URI determina lo

va a ser el web service REST, y si el servicio va a ser utilizado tal como fue pensado en el

asta el punto de que sea facil adivinarlas.

documentada que necesita de muy poca o ninguna

explicación o referencia para que un desarrollador pueda comprender a lo que apunta, y a los recursos

Una forma de lograr este nivel de usabilidad es definir URIs con una estructura al estilo de los directorios.

Este tipo de URIs es jerárquica, con una única ruta raiz, y va abriendo ramas a través de las subrutas para

De acuerdo a esta definición, una URI no es sólamente una cadena de caracteres delimitada por

barras, sino más bien un árbol con subordinados y padres organizados como nodos.

Page 108: Java Modulo 7

Por ejemplo, en un servicio de biblioteca

estructura de URIs como esta:

http://www.midireccion.es/biblioteca/libros/{libro}

REST transfiere XML, JSON, o ambos

La representación de un recurso, en general

momento en que el cliente de la aplicación realiza la petición.

La representación del recurso son simples "

representación de un registro de la base de datos que consiste en la asociación entre columnas y tags

XML, donde los valores de los elementos en el XML contienen los valores de las filas.

misma base, si el sistema tiene un modelo de datos, la representación de un recurso es una fotografía

de los atributos de una de las cosas en el modelo de datos del sistema.

ofrecidos con los servicios web REST.

La última restricción en el momento de

datos que la aplicación y el servicio intercambian en las peticiones/respuestas.

Los objetos del modelo de datos, generalmente

los objetos del modelo de datos (los recursos) deben reflejarse en la forma en la que se representan

el momento de transferir los datos al cliente.

Por último, es bueno construir los servicios de manera que usen el atributo HTTP Accept del encabezado,

en donde el valor de este campo es

De esta manera, los clientes pueden pedir por un contenido en particular que

forma más óptima.

Algunos de los tipos MIME más usados para los servicios web REST son:

Esto permite que el servicio sea utilizado por distintos clientes escritos en diferentes lenguajes, corriendo

en diversas plataformas y dispositivos.

El uso de los tipos MIME y del encabezado HTTP Accept

de contenido, el cual le permite a los clientes elegir qué formato de datos

acoplamiento de datos entre el servicio y las aplicaciones que lo consumen.

Debido a su simplicidad de uso, es facil consumir estos servicios web desde otros leng

funcionalidad para realizar solicitudes HTTP, como PHP con su libreria CURL, JAVA con su librería de

clases para ejecutar solicitudes HTTP.

Sin embargo, los desarrolladores de Jersey (que han impulsado el trabajo en la tecnología de serv

web RESTful) han desarrollado una API mediante la cual nos facilitan el consumo de servicios web RESTful

ya que proveen funcionalidad para setear los parámetros

en automatico el resultado si conocemos el tip

Es importante reconocer que muchas empresas han implementado plataformas de web services

basadas en RESTful, tales como el servicio S3 de amazon o Google Maps.

Vamos a crearnos un Servicio Web que utiliza la tecnología RestFul en Java.

Para uso exclusivo de los alumnos de CETICSA S.L.

biblioteca de libros que contiene diversos libros

http://www.midireccion.es/biblioteca/libros/{libro}

en general, refleja el estado actual del mismo y sus atributos

momento en que el cliente de la aplicación realiza la petición.

La representación del recurso son simples "instantaneas" en el tiempo.

representación de un registro de la base de datos que consiste en la asociación entre columnas y tags

XML, donde los valores de los elementos en el XML contienen los valores de las filas.

ene un modelo de datos, la representación de un recurso es una fotografía

de los atributos de una de las cosas en el modelo de datos del sistema. Estos son

servicios web REST.

momento de diseñar un servicio web REST tiene que ver con el formato de los

datos que la aplicación y el servicio intercambian en las peticiones/respuestas.

generalmente, se relacionan de alguna forma

etos del modelo de datos (los recursos) deben reflejarse en la forma en la que se representan

momento de transferir los datos al cliente.

Por último, es bueno construir los servicios de manera que usen el atributo HTTP Accept del encabezado,

e el valor de este campo es del tipo MIME.

De esta manera, los clientes pueden pedir por un contenido en particular que

Algunos de los tipos MIME más usados para los servicios web REST son:

Esto permite que el servicio sea utilizado por distintos clientes escritos en diferentes lenguajes, corriendo

en diversas plataformas y dispositivos.

ME y del encabezado HTTP Accept es un mecanismo conocido como negociación

ido, el cual le permite a los clientes elegir qué formato de datos pueden leer

acoplamiento de datos entre el servicio y las aplicaciones que lo consumen.

Debido a su simplicidad de uso, es facil consumir estos servicios web desde otros leng

funcionalidad para realizar solicitudes HTTP, como PHP con su libreria CURL, JAVA con su librería de

para ejecutar solicitudes HTTP.

los desarrolladores de Jersey (que han impulsado el trabajo en la tecnología de serv

web RESTful) han desarrollado una API mediante la cual nos facilitan el consumo de servicios web RESTful

ya que proveen funcionalidad para setear los parámetros que se le mandan en una llamada y

en automatico el resultado si conocemos el tipo de retorno.

Es importante reconocer que muchas empresas han implementado plataformas de web services

s como el servicio S3 de amazon o Google Maps.

Vamos a crearnos un Servicio Web que utiliza la tecnología RestFul en Java.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

versos libros, se podría definir una

refleja el estado actual del mismo y sus atributos en el

Esto podría ser una

representación de un registro de la base de datos que consiste en la asociación entre columnas y tags

XML, donde los valores de los elementos en el XML contienen los valores de las filas. O partiendo de la

ene un modelo de datos, la representación de un recurso es una fotografía

s son los elementos que son

diseñar un servicio web REST tiene que ver con el formato de los

forma, y las relaciones entre

etos del modelo de datos (los recursos) deben reflejarse en la forma en la que se representan en

Por último, es bueno construir los servicios de manera que usen el atributo HTTP Accept del encabezado,

pueden analizar de una

Esto permite que el servicio sea utilizado por distintos clientes escritos en diferentes lenguajes, corriendo

es un mecanismo conocido como negociación

pueden leer y, minimiza el

Debido a su simplicidad de uso, es facil consumir estos servicios web desde otros lenguajes que ofrezcan

funcionalidad para realizar solicitudes HTTP, como PHP con su libreria CURL, JAVA con su librería de

los desarrolladores de Jersey (que han impulsado el trabajo en la tecnología de servicios

web RESTful) han desarrollado una API mediante la cual nos facilitan el consumo de servicios web RESTful

que se le mandan en una llamada y procesar

Es importante reconocer que muchas empresas han implementado plataformas de web services

Page 109: Java Modulo 7

Nos creamos un nuevo proyecto Web.

Lo llamaremos ServicioWebRestFul

No utilizaremos ningún Framework y utilizaremos el servidor Glasshfish.

Nos crearemos un Servicio Web que expondrá los Empleados de nuestra base de datos en diferentes

direcciones Web via http.

Para poder realizar la acción lo haremos mediante Unidades de Persistencia que se comunicarán con la

base de datos Oracle y que nos devolverá los registros.

Debemos crearnos una nueva unidad de persistencia:

Para uso exclusivo de los alumnos de CETICSA S.L.

reamos un nuevo proyecto Web.

No utilizaremos ningún Framework y utilizaremos el servidor Glasshfish.

Nos crearemos un Servicio Web que expondrá los Empleados de nuestra base de datos en diferentes

Para poder realizar la acción lo haremos mediante Unidades de Persistencia que se comunicarán con la

base de datos Oracle y que nos devolverá los registros.

Debemos crearnos una nueva unidad de persistencia:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Nos crearemos un Servicio Web que expondrá los Empleados de nuestra base de datos en diferentes

Para poder realizar la acción lo haremos mediante Unidades de Persistencia que se comunicarán con la

Page 110: Java Modulo 7

Debemos crearnos una nueva fuente de dato

En la siguiente pantalla, debemos utilizar un nuevo proveedor Oracle que es el proporcionado en la

documentación.

Para ello, seleccionaremos de la lista desplegable la opción “Nuevo Controlador”

Para uso exclusivo de los alumnos de CETICSA S.L.

Debemos crearnos una nueva fuente de datos para conectarnos a Oracle

En la siguiente pantalla, debemos utilizar un nuevo proveedor Oracle que es el proporcionado en la

Para ello, seleccionaremos de la lista desplegable la opción “Nuevo Controlador”

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

En la siguiente pantalla, debemos utilizar un nuevo proveedor Oracle que es el proporcionado en la

Para ello, seleccionaremos de la lista desplegable la opción “Nuevo Controlador”

Page 111: Java Modulo 7

Configuramos las propiedades de la conexión para poder comunicarnos con Oracle

Nos mostrará el esquema que deseamos visualizar (SYSTEM) y pulsamos en Aceptar, nos habrá creado la

conexión correctamente.

Para uso exclusivo de los alumnos de CETICSA S.L.

propiedades de la conexión para poder comunicarnos con Oracle

Nos mostrará el esquema que deseamos visualizar (SYSTEM) y pulsamos en Aceptar, nos habrá creado la

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

propiedades de la conexión para poder comunicarnos con Oracle

Nos mostrará el esquema que deseamos visualizar (SYSTEM) y pulsamos en Aceptar, nos habrá creado la

Page 112: Java Modulo 7

Es importante seleccionar la opción de

datos los perderíamos, ya que nuestra unidad de persistencia puede crear objetos además de

recuperarlos.

Ya nos habrá creado la Unidad de persistencia:

Es el momento de crearnos un Servicio Web RestFul utilizando la Oracle.

Ahora nos pedirá la tabla o tablas que deseamos utilizar para nuestro Servicio Web. Seleccionamos la

tabla EMP.

Para uso exclusivo de los alumnos de CETICSA S.L.

Es importante seleccionar la opción de Ninguno en la generación de las tablas, debido a que sino, los

datos los perderíamos, ya que nuestra unidad de persistencia puede crear objetos además de

Ya nos habrá creado la Unidad de persistencia:

Es el momento de crearnos un Servicio Web RestFul utilizando la unidad de persistencia y la base de datos

Ahora nos pedirá la tabla o tablas que deseamos utilizar para nuestro Servicio Web. Seleccionamos la

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

de las tablas, debido a que sino, los

datos los perderíamos, ya que nuestra unidad de persistencia puede crear objetos además de

unidad de persistencia y la base de datos

Ahora nos pedirá la tabla o tablas que deseamos utilizar para nuestro Servicio Web. Seleccionamos la

Page 113: Java Modulo 7

Dejamos los parámetros de recursos y conversiones con los nombres de los paquetes origi

ofrece NetBeans.

Nos creará unos paquetes de la siguiente forma:

Para uso exclusivo de los alumnos de CETICSA S.L.

Dejamos los parámetros de recursos y conversiones con los nombres de los paquetes origi

Nos creará unos paquetes de la siguiente forma:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Dejamos los parámetros de recursos y conversiones con los nombres de los paquetes originales que nos

Page 114: Java Modulo 7

Ahora es el momento de probar nuestro Servicio Web, para ello, pulsaremos sobre el proyecto y

seleccionaremos la opción Test RESTful Web Services.

Veremos la pantalla para testear el Web Service Restful, en la zona de la izquierda podremos visualizar todos los datos de empleados o hacer consultas para un empleado en concreto, depende de nuestra solicitud.

Podremos realizar consultar y visualizar que los datos nos son devu

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora es el momento de probar nuestro Servicio Web, para ello, pulsaremos sobre el proyecto y

seleccionaremos la opción Test RESTful Web Services.

testear el Web Service Restful, en la zona de la izquierda podremos visualizar todos los datos de empleados o hacer consultas para un empleado en concreto, depende de nuestra solicitud.

Podremos realizar consultar y visualizar que los datos nos son devueltos correctamente.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora es el momento de probar nuestro Servicio Web, para ello, pulsaremos sobre el proyecto y

testear el Web Service Restful, en la zona de la izquierda podremos visualizar todos los datos de empleados o hacer consultas para un empleado en concreto, depende de nuestra solicitud.

eltos correctamente.

Page 115: Java Modulo 7

También nos puede devolver los datos en formato JSON y con una URL en la que podremos acceder a

todos los registros a través del protocolo Http, que es el protocolo que utilizan los servicios Web Restful.

Si seleccionamos cualquier dirección Web, veremos el registro ofrecido correctamente mediante un

localhost.

Para uso exclusivo de los alumnos de CETICSA S.L.

También nos puede devolver los datos en formato JSON y con una URL en la que podremos acceder a

todos los registros a través del protocolo Http, que es el protocolo que utilizan los servicios Web Restful.

cualquier dirección Web, veremos el registro ofrecido correctamente mediante un

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

También nos puede devolver los datos en formato JSON y con una URL en la que podremos acceder a

todos los registros a través del protocolo Http, que es el protocolo que utilizan los servicios Web Restful.

cualquier dirección Web, veremos el registro ofrecido correctamente mediante un

Page 116: Java Modulo 7

Consumir Servicio Web RestFul

Crear un servicio Web RestFul no sirve de nada si no somos capaces de aprender a consumirlo.

Un servicio web Restful se consume de f

protocolo no es SOAP, es HTTP.

Con NetBeans más el complemento Jersey, se nos hace muy fácil consumir servicios REST.

Para integrarlo con el IDE, necesitamos registrar el fichero WADL.

El fichero WADL es la base de los Web Services REST, así como el fichero WSDL es la base del protocolo

SOAP.

La URL para el acceso al WADL la podemos obtener así:

http://host:puerto/contexto-web/resources/application.wadl

El fichero WADL es el homónimo de WSDL

Vamos a consumir un Servicio Web simple que nos devolverá el valor factorial de un número que nos

enviarán via HTTP.

Lo primero será crearnos un nuevo proyecto Java Web

ServicioFactorial.

Utilizaremos el Servidor GlasshFish Server 3 y no utilizaremos ningún Framework.

Ahora nos agregaremos una clase Java que llamaremos

Para uso exclusivo de los alumnos de CETICSA S.L.

Crear un servicio Web RestFul no sirve de nada si no somos capaces de aprender a consumirlo.

Un servicio web Restful se consume de forma diferente a un servicio web convencional, debido a que su

Con NetBeans más el complemento Jersey, se nos hace muy fácil consumir servicios REST.

necesitamos registrar el fichero WADL.

chero WADL es la base de los Web Services REST, así como el fichero WSDL es la base del protocolo

podemos obtener así:

web/resources/application.wadl

El fichero WADL es el homónimo de WSDL en Servicios Web RestFul.

Vamos a consumir un Servicio Web simple que nos devolverá el valor factorial de un número que nos

Lo primero será crearnos un nuevo proyecto Java Web � Web Application y lo llamaremos

remos el Servidor GlasshFish Server 3 y no utilizaremos ningún Framework.

Ahora nos agregaremos una clase Java que llamaremos FactorialResource.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Crear un servicio Web RestFul no sirve de nada si no somos capaces de aprender a consumirlo.

orma diferente a un servicio web convencional, debido a que su

Con NetBeans más el complemento Jersey, se nos hace muy fácil consumir servicios REST.

chero WADL es la base de los Web Services REST, así como el fichero WSDL es la base del protocolo

Vamos a consumir un Servicio Web simple que nos devolverá el valor factorial de un número que nos

Web Application y lo llamaremos

Page 117: Java Modulo 7

Crearemos un método para calcular el factorial de un número en nuestra clase:

public class FactorialResource {

public long factorial(long base) {

if (base >= 1) {

return factorial(base - 1) * base;

}

return 1;

}

}

Cada vez que agreguemos una anotación o un elemento sobre la clase que vamos a exponer en el

servicio web, debemos pulsar sobre el proyecto y seleccionar la opción

Agregaremos la notación @Stateless al inicio de la clase.

clase en un EJB. El espacio de nombre que debemos importar es javax.ejb.Stateless.

A continuación de la anterior anotación, añadiremos

nombres javax.ws.rs.Path.

Esto indica que este recurso será accesible

En el momento en el que seleccionemos Limpiar y Construir sobre el proyecto

se ha creado un recurso REST, entonces pedirá activar esta característica en la aplicación

debemos pulsar sobre Aceptar.

La clase que ya hemos creado es un recurso REST.

Para uso exclusivo de los alumnos de CETICSA S.L.

Crearemos un método para calcular el factorial de un número en nuestra clase:

1) * base;

Cada vez que agreguemos una anotación o un elemento sobre la clase que vamos a exponer en el

servicio web, debemos pulsar sobre el proyecto y seleccionar la opción “Limpiar y Generar”

la notación @Stateless al inicio de la clase. Esto convierte automáticamente a nuestra

. El espacio de nombre que debemos importar es javax.ejb.Stateless.

A continuación de la anterior anotación, añadiremos la anotación @Path("/factorial") del espacio de

accesible desde la ruta "/factorial" via web.

en el que seleccionemos Limpiar y Construir sobre el proyecto, NetBeans detectará que

se ha creado un recurso REST, entonces pedirá activar esta característica en la aplicación

La clase que ya hemos creado es un recurso REST.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Crearemos un método para calcular el factorial de un número en nuestra clase:

Cada vez que agreguemos una anotación o un elemento sobre la clase que vamos a exponer en el

“Limpiar y Generar”.

te automáticamente a nuestra

. El espacio de nombre que debemos importar es javax.ejb.Stateless.

a anotación @Path("/factorial") del espacio de

, NetBeans detectará que

se ha creado un recurso REST, entonces pedirá activar esta característica en la aplicación, por lo que

Page 118: Java Modulo 7

Ahora será el momento de incluir métodos en nuestro servicio RestFul.

Solo podremos crear un método de tipo GET,un único valor según el parámetro que le especificamos, usaremos el tipo GET.

Para ello agregamos la anotación @GET antes del método

javax.ws.rs.GET.

Y con esto, nuestro recurso REST ya tiene un método

Los valores que se reciben desde el

cambiar para que no devuelva un dato

Además, debemos indicar que el parámetro base del método Java factorial será el nombre base. Es decir, se llamará a

..../resources/factorial?base=5

Para ello usaremos la notación @QueryParamla declaración del parámetro.

La clase, finalmente, quedará con el siguiente código:

package paqueteservicio; import javax.ejb.Stateless;

import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; @Stateless @Path("/factorial")

public class FactorialResource { @GET public String factorial(@QueryParam("base") long base) {

return Long.toString($factorial(base));

}

long $factorial(long base) { if (base >= 1) {

return $factorial(base - 1) * base;

Para uso exclusivo de los alumnos de CETICSA S.L.

Ahora será el momento de incluir métodos en nuestro servicio RestFul.

emos crear un método de tipo GET, POST, PUT y DELETE. Como el método factorial nvalor según el parámetro que le especificamos, usaremos el tipo GET.

Para ello agregamos la anotación @GET antes del método factorial en la clase del espacio de nombres

ya tiene un método.

os valores que se reciben desde el recurso REST deben ser objetos. Por lo tanto, nuestro método debe

dato long, sino un java.lang.String.

Además, debemos indicar que el parámetro base del método Java factorial será Es decir, se llamará a la dirección URL de la siguiente forma:

Para ello usaremos la notación @QueryParam del espacio de nombres javax.ws.rs.QueryParam

La clase, finalmente, quedará con el siguiente código:

public String factorial(@QueryParam("base") long base) {

return Long.toString($factorial(base));

1) * base;

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

omo el método factorial nos deberá

factorial en la clase del espacio de nombres

tanto, nuestro método debe

Además, debemos indicar que el parámetro base del método Java factorial será recibido via URL con

javax.ws.rs.QueryParam, antes de

Page 119: Java Modulo 7

} return 1;

} }

Una vez que tenemos el proyecto listo, debemos pulsar sobre el proyecto y seleccionar

Ahora, para acceder a nuestro proyecto como clientes y probar su funcionalidad, bastará con mostrar

la URL de acceso a nuestro Servicio RestFul.

http://localhost:8080/ServicioFactorial/resources/factorial?base=5

Como podremos comprobar, se ha creado el Servicio via HTTP y el acceso nos devuelve el resultado en la página:

Como nuestro recurso es vía http, también podemos acceder mediante cualquier client

ejemplo una página JSP.

Escribiremos el siguiente código en la página index.jsp del proyecto:

<body> <h1>Llamada factorial REST</h1><form action="resources/factorial">

Introduzca el número: <input name="base" ty<input type="submit" value="Mostrar Factorial"/>

</form> </body>

El resultado será la llamada a nuestro servicio Rest y realizará la operación según nuestro código.

Otra forma de acceso sería mediante el fichero WADL. Para recuperar dicho fichero, debemos pulsar

sobre el proyecto y seleccionar Test RESTful WebService

Veremos una página dónde podremos probar el servicio y su resultado:

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que tenemos el proyecto listo, debemos pulsar sobre el proyecto y seleccionar

Ahora, para acceder a nuestro proyecto como clientes y probar su funcionalidad, bastará con mostrar

la URL de acceso a nuestro Servicio RestFul.

localhost:8080/ServicioFactorial/resources/factorial?base=5

Como podremos comprobar, se ha creado el Servicio via HTTP y el acceso nos devuelve el resultado en

Como nuestro recurso es vía http, también podemos acceder mediante cualquier client

Escribiremos el siguiente código en la página index.jsp del proyecto:

<h1>Llamada factorial REST</h1><form action="resources/factorial">

Introduzca el número: <input name="base" type="text" /> <input type="submit" value="Mostrar Factorial"/>

El resultado será la llamada a nuestro servicio Rest y realizará la operación según nuestro código.

Otra forma de acceso sería mediante el fichero WADL. Para recuperar dicho fichero, debemos pulsar

Test RESTful WebService.

Veremos una página dónde podremos probar el servicio y su resultado:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Una vez que tenemos el proyecto listo, debemos pulsar sobre el proyecto y seleccionar Deploy.

Ahora, para acceder a nuestro proyecto como clientes y probar su funcionalidad, bastará con mostrar

Como podremos comprobar, se ha creado el Servicio via HTTP y el acceso nos devuelve el resultado en

Como nuestro recurso es vía http, también podemos acceder mediante cualquier cliente HTML, por

El resultado será la llamada a nuestro servicio Rest y realizará la operación según nuestro código.

Otra forma de acceso sería mediante el fichero WADL. Para recuperar dicho fichero, debemos pulsar

Page 120: Java Modulo 7

Hemos visto que podemos consumir el Servicio desde cualquier lenguaje que sea capaz de soportar

HTML y protocolo HTTP, por lo que el consumo de Servicios Rest son una alternativa que se está extendiendo muy rápidamente por Internet.

Para consumir el Servicio RestFul desde cualqui

Dicho fichero se genera en el momento de probar el servicio.

http://localhost:8080/ServicioFactorial/resources/application.wadl

Lo primero que tenemos que realizar para consumirlo, es registrar el

Para ello, debemos ir a la ventana Prestaciones y añadir el Servicio Web.

Indicaremos la ruta al fichero WADL del servicio REST:

Para uso exclusivo de los alumnos de CETICSA S.L.

consumir el Servicio desde cualquier lenguaje que sea capaz de soportar

HTML y protocolo HTTP, por lo que el consumo de Servicios Rest son una alternativa que se está extendiendo muy rápidamente por Internet.

Para consumir el Servicio RestFul desde cualquier aplicación de Java, debemos utilizar el archivo WADL.

Dicho fichero se genera en el momento de probar el servicio.

http://localhost:8080/ServicioFactorial/resources/application.wadl

Lo primero que tenemos que realizar para consumirlo, es registrar el servicio en el IDE de NetBeans.

Para ello, debemos ir a la ventana Prestaciones y añadir el Servicio Web.

Indicaremos la ruta al fichero WADL del servicio REST:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

consumir el Servicio desde cualquier lenguaje que sea capaz de soportar

HTML y protocolo HTTP, por lo que el consumo de Servicios Rest son una alternativa que se está

er aplicación de Java, debemos utilizar el archivo WADL.

servicio en el IDE de NetBeans.

Page 121: Java Modulo 7

Ya tendremos el servicio registrado en nuestro IDE de NetBeans.

Para consumir el servicio, vamos a hacerlo desde un Cliente en línea de comandos. Nos crearemos un nuevo proyecto Java � Java Application llamado ClienteRestFul.

Ahora nos crearemos una clase que será el cliente del servicio, para ello, agregamos sobre el proyecto un nuevo elemento y, en la pestaña Web Services, seleccionamos la opción RESTFul Java Client.

Como hemos registrado nuestro servicio en el IDE de NetBeans, seleccionaremos la opción “IDE Registered” y en Browse marcaremos nuestro Servicio.

Para uso exclusivo de los alumnos de CETICSA S.L.

Ya tendremos el servicio registrado en nuestro IDE de NetBeans.

, vamos a hacerlo desde un Cliente en línea de comandos. Nos crearemos un Java Application llamado ClienteRestFul.

Ahora nos crearemos una clase que será el cliente del servicio, para ello, agregamos sobre el proyecto to y, en la pestaña Web Services, seleccionamos la opción RESTFul Java Client.

Como hemos registrado nuestro servicio en el IDE de NetBeans, seleccionaremos la opción “IDE Registered” y en Browse marcaremos nuestro Servicio.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

, vamos a hacerlo desde un Cliente en línea de comandos. Nos crearemos un

Ahora nos crearemos una clase que será el cliente del servicio, para ello, agregamos sobre el proyecto to y, en la pestaña Web Services, seleccionamos la opción RESTFul Java Client.

Como hemos registrado nuestro servicio en el IDE de NetBeans, seleccionaremos la opción “IDE

Page 122: Java Modulo 7

Llamaremos a nuestra clase ClienteFactorial.

Nos habrá creado la clase para acceder a los datos del Servicio RestFul.

Para probar su funcionalidad y acceso, nos crearemos una clase llamada ConsumoFactorial dentro del mismo paquete del Cliente, y escribiremos el siguiente código:

package clienterestful; public class ConsumoFactorial {

public static void main(String[] args) {ClienteRest c = new ClienteRest();

long base = 5; String resultado = c.factorial(String.class, String.valueOf(base));

System.out.println("Resultado del factorial de 5: " + resultado); } }

Para uso exclusivo de los alumnos de CETICSA S.L.

ClienteFactorial.

Nos habrá creado la clase para acceder a los datos del Servicio RestFul.

Para probar su funcionalidad y acceso, nos crearemos una clase llamada ConsumoFactorial dentro del mismo paquete del Cliente, y escribiremos el siguiente código:

public static void main(String[] args) {ClienteRest c = new ClienteRest();

String resultado = c.factorial(String.class, String.valueOf(base));

System.out.println("Resultado del factorial de 5: " + resultado);

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Para probar su funcionalidad y acceso, nos crearemos una clase llamada ConsumoFactorial dentro del

Page 123: Java Modulo 7

Como podremos comprobar, el resultado es correcto y consumimos el servicio REST desde un cliente:

Consumir Servicio Web SOAP

Para consumir un Servicio Web con protocolo SOAP es muy

NetBeans o Eclipse.

Para ello, lo primero será localizar la dirección dónde está alojado el Servicio Web que deseamos

consumir.

Vamos a mostrar un ejemplo de consumo de Web Services basados en SOAP.

Podemos encontrar multitud de Web Services en la siguiente dirección:

http://www.xmethods.net

Vamos a consumir el siguiente Servicio Web:

http://footballpool.dataaccess.eu/data/info.wso?WSDL

Debemos crearnos un proyecto que haga de

Application llamado ClienteSOAP.

Sobre el proyecto añadiremos un nuevo elemento Web Service Client.

Debemos indicar la dirección a nuestro servicio web:

Para uso exclusivo de los alumnos de CETICSA S.L.

Como podremos comprobar, el resultado es correcto y consumimos el servicio REST desde un cliente:

Para consumir un Servicio Web con protocolo SOAP es muy simple si se tiene un editor gráfico estilo

Para ello, lo primero será localizar la dirección dónde está alojado el Servicio Web que deseamos

Vamos a mostrar un ejemplo de consumo de Web Services basados en SOAP.

ntrar multitud de Web Services en la siguiente dirección:

Vamos a consumir el siguiente Servicio Web:

http://footballpool.dataaccess.eu/data/info.wso?WSDL

proyecto que haga de cliente. Para ello, nos crearemos

Sobre el proyecto añadiremos un nuevo elemento Web Service Client.

Debemos indicar la dirección a nuestro servicio web:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Como podremos comprobar, el resultado es correcto y consumimos el servicio REST desde un cliente:

simple si se tiene un editor gráfico estilo

Para ello, lo primero será localizar la dirección dónde está alojado el Servicio Web que deseamos

un nuevo proyecto Java

Page 124: Java Modulo 7

Nos mostrará un listado con todos los métodos disponibles para acceder al

Ahora bastará con dirigirnos a la clase Main.java y arrastar el método que deseemos probar del Web

Service.

Nos creará un método para poder consumir el Servicio.

Bastará con realizar la llamada desde el método main al método del Web Service y

resultados.

package clientesoap;

import eu.dataaccess.footballpool.ArrayOfString;

import java.util.*;

public class Main {

public static void main(String[] args) {

ArrayOfString jugadores = allMidFields("Spain");

List<String> datos = jugadores.getString();

for (String s:datos)

{

System.out.println("Mediocentros: " + s);

}

}

Para uso exclusivo de los alumnos de CETICSA S.L.

Nos mostrará un listado con todos los métodos disponibles para acceder al servicio.

Ahora bastará con dirigirnos a la clase Main.java y arrastar el método que deseemos probar del Web

Nos creará un método para poder consumir el Servicio.

Bastará con realizar la llamada desde el método main al método del Web Service y

import eu.dataaccess.footballpool.ArrayOfString;

public static void main(String[] args) {

ArrayOfString jugadores = allMidFields("Spain");

> datos = jugadores.getString();

System.out.println("Mediocentros: " + s);

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

servicio.

Ahora bastará con dirigirnos a la clase Main.java y arrastar el método que deseemos probar del Web

Bastará con realizar la llamada desde el método main al método del Web Service y mostrar los

Page 125: Java Modulo 7

private static ArrayOfString allMidFields(java.lang.String sCountryName) {

eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();

eu.dataaccess.footballpool.InfoSoapType port = service.getInfoSoap();

return port.allMidFields(sCountryName);

}

}

Y el resultado será el siguiente:

Ver Video: Creacion de un clie

en el Módulo 7. Unidad 9, en la plataforma elearning

Objetivos

� Conocer el funcionamiento de acceso a clientes web utilizando la tecnología JAVA

� Acceso y consumo de recursos

Enunciado

Para nuestra práctica vamos a utilizar un servicio web ya creado y gratuito que contiene información y

datos sobre el mundial 2010.

http://footballpool.dataaccess.eu/data/info.wso?WSDL

Lo primero de todo será crearnos un nuevo proyecto Web Application.

Para uso exclusivo de los alumnos de CETICSA S.L.

private static ArrayOfString allMidFields(java.lang.String sCountryName) {

.Info service = new eu.dataaccess.footballpool.Info();

eu.dataaccess.footballpool.InfoSoapType port = service.getInfoSoap();

return port.allMidFields(sCountryName);

Creacion de un cliente para consumir servicios web

en el Módulo 7. Unidad 9, en la plataforma elearning

Laboratorio: Cliente Servicio Web Mundial

Conocer el funcionamiento de acceso a clientes web utilizando la tecnología JAVA

Acceso y consumo de recursos de un servicio web.

Para nuestra práctica vamos a utilizar un servicio web ya creado y gratuito que contiene información y

ccess.eu/data/info.wso?WSDL

Lo primero de todo será crearnos un nuevo proyecto Web Application.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

.Info service = new eu.dataaccess.footballpool.Info();

nte para consumir servicios web,

en el Módulo 7. Unidad 9, en la plataforma elearning

Laboratorio: Cliente Servicio Web Mundial

Conocer el funcionamiento de acceso a clientes web utilizando la tecnología JAVA-WS.

Para nuestra práctica vamos a utilizar un servicio web ya creado y gratuito que contiene información y

Page 126: Java Modulo 7

Lo llamaremos ConsumoServicioWeb

Utilizaremos el servidor GlassFish Server.

No agregaremos ningún Framework.

Para uso exclusivo de los alumnos de CETICSA S.L.

Lo llamaremos ConsumoServicioWeb

Utilizaremos el servidor GlassFish Server.

No agregaremos ningún Framework.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 127: Java Modulo 7

Vamos a agregar un cliente de servicio web. Para ello, seleccionamos sobre nuestro proyecto New

Other

Y en la carpeta Web Services, marcamos Web Service Client

Marcamos la opción WSDL y escribimos la direcci

El estilo del cliente será utilizando la tecnología JAVA

Para uso exclusivo de los alumnos de CETICSA S.L.

cliente de servicio web. Para ello, seleccionamos sobre nuestro proyecto New

Y en la carpeta Web Services, marcamos Web Service Client

Marcamos la opción WSDL y escribimos la dirección al servicio web del mundial 2010.

será utilizando la tecnología JAVA-WS

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

cliente de servicio web. Para ello, seleccionamos sobre nuestro proyecto New �

ón al servicio web del mundial 2010.

Page 128: Java Modulo 7

Veremos que nos ha creado una carpeta llamada Web Service Reference en la que tenemos la información de todos los métodos que ofrece el servicio web.

Ahora vamos a crearnos una nueva clase para consumir los datos d

Para uso exclusivo de los alumnos de CETICSA S.L.

Veremos que nos ha creado una carpeta llamada Web Service Reference en la que tenemos la ón de todos los métodos que ofrece el servicio web.

Ahora vamos a crearnos una nueva clase para consumir los datos del servicio.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Veremos que nos ha creado una carpeta llamada Web Service Reference en la que tenemos la

Page 129: Java Modulo 7

La llamaremos BeanWebService.

Sobre nuestra clase, bastará con arrastrar el mservicio. Hemos seleccionado el método AllGoalKeepers.

Para uso exclusivo de los alumnos de CETICSA S.L.

Sobre nuestra clase, bastará con arrastrar el método que necesitemos para poder realizar la llamada al servicio. Hemos seleccionado el método AllGoalKeepers.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

étodo que necesitemos para poder realizar la llamada al

Page 130: Java Modulo 7

Si nos fijamos en la estructura, ya nos ha geAdemás, pod.0

emos comprobar que nos pide un String para poder invocar al método. También podemos comprobar que devuelve un objeto del tipo ArrayOfString.

import eu.dataaccess.footballpool.ArrayOfStrimport eu.dataaccess.footballpool.ArrayOftTeamInfo;private static ArrayOfString allGoalKeepers(java.lang.String sCountryName) {

eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info(); eu.dataaccess.footballpool.InfoSoapType port = service.getInfoSoap();

return port.allGoalKeepers(sCountryName); }

Vamos a implementar el método para visualizar tutilizaremos Spain.

package paquetebeans; import eu.dataaccess.footballpool.ArrayOfString;import eu.dataaccess.footballpool.ArrayOftTeamInfo;import java.util.List; public class BeanWebService {

private static ArrayOfString allGoalKeepers(java.lang.String sCountryName) {

eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();eu.dataaccess.footballpool.InfoSoapType port = service.getInfoSoap();return port.allGoalKeepers(sCountryName);

}

public void miMetodo() {

ArrayOfString porteros = allGoalKeepers("spain");List<String> datos = porteros.getString();

for (int i=0;i<datos.size();i++) {

System.out.println(datos.get(i)); } } }

Si ejecutamos nuestra clase, podremos comprobar que muestra los nombres de los porteros de la selección Spain.

Para uso exclusivo de los alumnos de CETICSA S.L.

Si nos fijamos en la estructura, ya nos ha generado la llamada al servicio y los import necesarios.

emos comprobar que nos pide un String para poder invocar al método. También podemos comprobar que devuelve un objeto del tipo ArrayOfString.

import eu.dataaccess.footballpool.ArrayOfString; import eu.dataaccess.footballpool.ArrayOftTeamInfo;private static ArrayOfString allGoalKeepers(java.lang.String sCountryName)

eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();llpool.InfoSoapType port = service.getInfoSoap();

return port.allGoalKeepers(sCountryName);

Vamos a implementar el método para visualizar todos los porteros de un equipo. En nuestro ejemplo

eu.dataaccess.footballpool.ArrayOfString;import eu.dataaccess.footballpool.ArrayOftTeamInfo;

private static ArrayOfString allGoalKeepers(java.lang.String sCountryName)

eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();eu.dataaccess.footballpool.InfoSoapType port = service.getInfoSoap();return port.allGoalKeepers(sCountryName);

ArrayOfString porteros = allGoalKeepers("spain");List<String> datos = porteros.getString();

System.out.println(datos.get(i));

, podremos comprobar que muestra los nombres de los porteros de la

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

nerado la llamada al servicio y los import necesarios.

emos comprobar que nos pide un String para poder invocar al método. También podemos comprobar

eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();

odos los porteros de un equipo. En nuestro ejemplo

eu.dataaccess.footballpool.Info service = new eu.dataaccess.footballpool.Info();

, podremos comprobar que muestra los nombres de los porteros de la

Page 131: Java Modulo 7

Objetivo

Visualizar el funcionamiento de los Servicios Web REST y su consumo.

Enunciado

Realizaremos una aplicación que nos Maps.

Lo que haremos será un Web Service escalar, es decir, nosotros expondremos direcciones desde una tabla a través de un Web Service REST propio y mostraremos información en ese servicio medGoogle Maps.

Lo primero que debemos hacer es crearnos la tabla ESTADIOS en Oracle mediante el siguiente script:

CREATE TABLE ESTADIOS (ESTADIO_COD INT , NOMBRE VARCHAR2(40) , DIRECCION VARCHAR2(150) , CONSTRUCCION INT , AFORO INT); INSERT INTO ESTADIOS VALUES (1,'SANTIAGO BERNABEU' ,'Avenida de Concha Espina, 1 28036 Madrid',1947, 85000); INSERT INTO ESTADIOS VALUES (2,'MESTALLA' , 'Av de Suecia, 46010 Valencia, Comunidad Valenciana',1923, 53000); INSERT INTO ESTADIOS VALUES (3,'MARTINEZ VALERO' , 'MANUEL MARTÍNEZ VALERO, 3 03208 ELCHE',1976, 39000); INSERT INTO ESTADIOS VALUES (4,'ALFONSO PEREZ' , 'Avenida Teresa de Calcuta, S/N, 28903 Getafe',1998, 14400);

Para uso exclusivo de los alumnos de CETICSA S.L.

Laboratorio: Servicio RestFul Google Maps

Visualizar el funcionamiento de los Servicios Web REST y su consumo.

Realizaremos una aplicación que nos mostrará unas direcciones mediante los Servicios Web de Google

Lo que haremos será un Web Service escalar, es decir, nosotros expondremos direcciones desde una tabla a través de un Web Service REST propio y mostraremos información en ese servicio med

Lo primero que debemos hacer es crearnos la tabla ESTADIOS en Oracle mediante el siguiente script:

,'Avenida de Concha Espina, 1 28036 Madrid'

, 'Av de Suecia, 46010 Valencia, Comunidad Valenciana'

, 'MANUEL MARTÍNEZ VALERO, 3 03208 ELCHE'

, 'Avenida Teresa de Calcuta, S/N, 28903 Getafe'

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Laboratorio: Servicio RestFul Google Maps

mostrará unas direcciones mediante los Servicios Web de Google

Lo que haremos será un Web Service escalar, es decir, nosotros expondremos direcciones desde una tabla a través de un Web Service REST propio y mostraremos información en ese servicio mediante

Lo primero que debemos hacer es crearnos la tabla ESTADIOS en Oracle mediante el siguiente script:

Page 132: Java Modulo 7

COMMIT; ALTER TABLE ESTADIOS ADD CONSTRAINT PK_ESTADIOS PRIMARY KEY (ESTADIO_COD);

SELECT * FROM ESTADIOS

Creamos un nuevo proyecto Web

Llamaremos al proyecto ProyectoGoogleMaps

Tenemos que crearnos una nueva unidad de persistencia para recuperar la tabla de estadios de Oracle mediante Entidades.

Para uso exclusivo de los alumnos de CETICSA S.L.

ProyectoGoogleMaps y utilizaremos el servidor de aplicaciones GlasshFish.

Tenemos que crearnos una nueva unidad de persistencia para recuperar la tabla de estadios de Oracle

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

y utilizaremos el servidor de aplicaciones GlasshFish.

Tenemos que crearnos una nueva unidad de persistencia para recuperar la tabla de estadios de Oracle

Page 133: Java Modulo 7

Nos conectamos con Oracle como hemos visto en la documentación.

Marcamos la opción de Ninguno para que no nos genere las tablas de nuevo.

Para uso exclusivo de los alumnos de CETICSA S.L.

Nos conectamos con Oracle como hemos visto en la documentación.

para que no nos genere las tablas de nuevo.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Page 134: Java Modulo 7

Y ya tendremos la unidad de persistencia para conectarnos a nuestra tabla Estadios.

Ahora nos creamos un nuevo Servicio Web RestFul from Database

Seleccionaremos la tabla Estadios

Para uso exclusivo de los alumnos de CETICSA S.L.

Y ya tendremos la unidad de persistencia para conectarnos a nuestra tabla Estadios.

nos creamos un nuevo Servicio Web RestFul from Database

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Y ya tendremos la unidad de persistencia para conectarnos a nuestra tabla Estadios.

Page 135: Java Modulo 7

Incluimos la tabla en un paquete nuevo.

Nos dirá si deseamos crear los paquetes para los recursos, dejamos todo como está por defecto.

Ahora ya podremos probar nuestro servicio y visualizar los datos de los estadios. Sobre el proyecto,

seleccionamos Test RESTful Web Services.

Para uso exclusivo de los alumnos de CETICSA S.L.

Incluimos la tabla en un paquete nuevo.

Nos dirá si deseamos crear los paquetes para los recursos, dejamos todo como está por defecto.

probar nuestro servicio y visualizar los datos de los estadios. Sobre el proyecto,

seleccionamos Test RESTful Web Services.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Nos dirá si deseamos crear los paquetes para los recursos, dejamos todo como está por defecto.

probar nuestro servicio y visualizar los datos de los estadios. Sobre el proyecto,

Page 136: Java Modulo 7

Veremos la página de presentación y podré hacer consultas pulsando sobre “Test”.

Ahora vamos a integrar la funcionalidad del

Servicio de estadios para que nos aparezca el mapa de dónde están ubicados cada uno de los

Estadios.

Lo primero que debemos hacer es conseguir la API KEY de Google para poder realizar la práctica.

Debemos ir a esta dirección, validarnos con una cuenta de GMail y registrar la dirección de nuestro

Servicio, por ejemplo: http://localhost:8082

http://code.google.com/intl/es-ES/apis/maps/signup.html

Una vez que tenemos la API KEY, volvemos al IDE de NetBeans.

Debemos abrir la clase EstadiosResource del paquete service:

Para uso exclusivo de los alumnos de CETICSA S.L.

Veremos la página de presentación y podré hacer consultas pulsando sobre “Test”.

Ahora vamos a integrar la funcionalidad del servicio Web Google Maps RestFul dentro de nuestro

Servicio de estadios para que nos aparezca el mapa de dónde están ubicados cada uno de los

Lo primero que debemos hacer es conseguir la API KEY de Google para poder realizar la práctica.

s ir a esta dirección, validarnos con una cuenta de GMail y registrar la dirección de nuestro

Servicio, por ejemplo: http://localhost:8082

ES/apis/maps/signup.html

Una vez que tenemos la API KEY, volvemos al IDE de NetBeans.

Debemos abrir la clase EstadiosResource del paquete service:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

Veremos la página de presentación y podré hacer consultas pulsando sobre “Test”.

servicio Web Google Maps RestFul dentro de nuestro

Servicio de estadios para que nos aparezca el mapa de dónde están ubicados cada uno de los

Lo primero que debemos hacer es conseguir la API KEY de Google para poder realizar la práctica.

s ir a esta dirección, validarnos con una cuenta de GMail y registrar la dirección de nuestro

Page 137: Java Modulo 7

Y agregaremos un método nuevo para realizar las búsquedas:

@GET

@Produces(value="text/html")

public String getGoogleMap(){

return "";

}

En nuestro IDE, presionemos Ctrl+5 para ver el panel de servicios.

Abriremos el nodo Web Services, luego Google, después Map Service

Arrastremos el nodo getGoogleMap y soltémoslo en el método que

return "".

El IDE nos mostrará una ventana con datos con ejemplo para ser utilizado en nuestra aplicación.

Para uso exclusivo de los alumnos de CETICSA S.L.

Y agregaremos un método nuevo para realizar las búsquedas:

emos Ctrl+5 para ver el panel de servicios.

el nodo Web Services, luego Google, después Map Service:

Arrastremos el nodo getGoogleMap y soltémoslo en el método que acabamos de crear, j

ventana con datos con ejemplo para ser utilizado en nuestra aplicación.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

acabamos de crear, justo antes del

ventana con datos con ejemplo para ser utilizado en nuestra aplicación.

Page 138: Java Modulo 7

El IDE nos creará un código de ejemplo automático para probar la funcionalidad.

@GET

@Produces(value = "text/html")

public String getGoogleMap() {

try {

String address = "16 Network Circle, Menlo Park";

java.lang.Integer zoom = 15;

String iframe = "false";

RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);

//TODO - Uncomment the print Statement below to print result.

//System.out.println("The SaasService returned: "+result.getDataAsString());

} catch (Exception ex) {

ex.printStackTrace();

}

return "";

}

El IDE también ha creado los paquetes org.netbeans.saas y org.netbeans.saas.google que contienen las

siguientes clases y recursos:

� RestConnection - Una clase que envuelve a HttpUrlConnection

� RestResponse - Un clase que envuelve las respuestas HTTP

� googlemapservice.properties

manejar el GoogleMap

� GoogleMapService - Un servicio que envuelve los métodos que usa RestConnection y llama al

servicio GoogleMap.

En el bloque try de getGoogleMap() reemplacemos las líneas comenta

return result.getDataAsString();

Abrimos el archivo googlemapservice.properties y pegamos la clave del API que hemos

validarnos en la página de Google.

Para uso exclusivo de los alumnos de CETICSA S.L.

El IDE nos creará un código de ejemplo automático para probar la funcionalidad.

String address = "16 Network Circle, Menlo Park";

RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);

nt the print Statement below to print result.

//System.out.println("The SaasService returned: "+result.getDataAsString());

reado los paquetes org.netbeans.saas y org.netbeans.saas.google que contienen las

Una clase que envuelve a HttpUrlConnection

Un clase que envuelve las respuestas HTTP

googlemapservice.properties - Un archivo de propiedades que almacenará la clave para

Un servicio que envuelve los métodos que usa RestConnection y llama al

En el bloque try de getGoogleMap() reemplacemos las líneas comentadas con lo siguiente:

Abrimos el archivo googlemapservice.properties y pegamos la clave del API que hemos

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

El IDE nos creará un código de ejemplo automático para probar la funcionalidad.

RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);

//System.out.println("The SaasService returned: "+result.getDataAsString());

reado los paquetes org.netbeans.saas y org.netbeans.saas.google que contienen las

Un archivo de propiedades que almacenará la clave para

Un servicio que envuelve los métodos que usa RestConnection y llama al

das con lo siguiente:

Abrimos el archivo googlemapservice.properties y pegamos la clave del API que hemos recuperado al

Page 139: Java Modulo 7

Escribimos la clave que nos han proporcionado.

Todavía no hemos incluido las direcciones de nuestra tabla, pero vamos a comprobar que todo está

correcto y que nos muestra la dirección de “prueba” que nos ha proporcionado Google Maps.

Volvemos a probar los Servicios Test RESTful.

Cuando haya cargado la página, pulsamos

Luego hacemos clic en el botón "Test".

Se mostrará la tabla de los Estadios con sus respectivas direcciones URI que se han creado.

Desde esta tabla de resultados, hagamos clic justo donde dice

Para uso exclusivo de los alumnos de CETICSA S.L.

Escribimos la clave que nos han proporcionado.

incluido las direcciones de nuestra tabla, pero vamos a comprobar que todo está

correcto y que nos muestra la dirección de “prueba” que nos ha proporcionado Google Maps.

Volvemos a probar los Servicios Test RESTful.

Cuando haya cargado la página, pulsamos sobre el enlace Estadios del lado izquierdo.

Luego hacemos clic en el botón "Test".

Estadios con sus respectivas direcciones URI que se han creado.

Desde esta tabla de resultados, hagamos clic justo donde dice /estadioss/1/.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

incluido las direcciones de nuestra tabla, pero vamos a comprobar que todo está

correcto y que nos muestra la dirección de “prueba” que nos ha proporcionado Google Maps.

del lado izquierdo.

Estadios con sus respectivas direcciones URI que se han creado.

Page 140: Java Modulo 7

Se abrirá una página para probar el resultado de este cliente.

Seleccionamos de la lista desplegable MIME la opción text/html.

Y le damos clic en Test.

El GoogleMap se mostrará en la calle que le indicamos.

Ahora es el momento de recuperar lo

Servicio Web RestFul.

Para ello, debemos modificar el método

la dirección del estadio que hayamos seleccionado.

@GET

@Produces(value = "text/html")

public String getGoogleMap() {

try {

Para uso exclusivo de los alumnos de CETICSA S.L.

Se abrirá una página para probar el resultado de este cliente.

Seleccionamos de la lista desplegable MIME la opción text/html.

El GoogleMap se mostrará en la calle que le indicamos.

Ahora es el momento de recuperar los datos y enviar la dirección de cada uno de los estadios a nuestro

Para ello, debemos modificar el método getGoogleMaps() de la siguiente forma, dónde recuperaremos

la dirección del estadio que hayamos seleccionado.

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

s datos y enviar la dirección de cada uno de los estadios a nuestro

() de la siguiente forma, dónde recuperaremos

Page 141: Java Modulo 7

Estadios c = getEntity();

String direccion = c.getDireccion();

java.lang.Integer zoom = 15;

String iframe = "false";

RestResponse result = GoogleMapService.getGoogleMap(direccion, zoom, iframe);

return result.getDataAsString();

} catch (Exception ex) {

ex.printStackTrace();

}finally{

PersistenceService.getInstance().close();

}

return "";

}

Ahora volvemos a probar el Servicio RestFul y comprobaremos que nos muestra el mapa

correspondiente a cada Estadio que hayamos seleccionado:

Para uso exclusivo de los alumnos de CETICSA S.L.

String direccion = c.getDireccion();

RestResponse result = GoogleMapService.getGoogleMap(direccion, zoom, iframe);

return result.getDataAsString();

stance().close();

Ahora volvemos a probar el Servicio RestFul y comprobaremos que nos muestra el mapa

correspondiente a cada Estadio que hayamos seleccionado:

www.ceticsa.com

Para uso exclusivo de los alumnos de CETICSA S.L.

RestResponse result = GoogleMapService.getGoogleMap(direccion, zoom, iframe);

Ahora volvemos a probar el Servicio RestFul y comprobaremos que nos muestra el mapa