Upload
jose-gandia-serna
View
154
Download
15
Embed Size (px)
Citation preview
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
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
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.
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
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
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
� 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:
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.
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.
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.
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
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
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
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:
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.
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
� 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
� 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
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
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
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
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
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.
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.
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.
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
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
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:
<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.
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
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 < o &.
� 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 < o &.
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
<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.
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:
<?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
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
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.
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
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).
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
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.
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
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
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
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
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á
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.
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
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.
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
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
}
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
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
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
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
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.
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.
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.
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.
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:
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.
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
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,
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
</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
<?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.
</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,
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">
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
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.
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.
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
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.
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.
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
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
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
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=?";
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:
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:
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
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
� 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:
� 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
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
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.
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
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
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
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
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
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
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
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:
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");
{ 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
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:
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
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.
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
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
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
}
}
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.
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.
Para uso exclusivo de los alumnos de CETICSA S.L.
www.ceticsa.com
Para uso exclusivo de los alumnos de CETICSA S.L.
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).
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.
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.
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
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
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”
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
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
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
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.
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
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
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
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
} 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
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.
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
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
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
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
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
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.
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.
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
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
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
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:
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
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.
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.
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,
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
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.
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
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.
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
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