Web Services



Qué es Web Services.
Definición de Web Services por W3C.
- Un Servicio Web es una aplicación de SW.
- Identificado por una URI.
- Cuyas interfaces y bindings (Referencias) son capaces de ser definidas, descritas y descubiertas por artefactos XML y
- Soporta directa interacción con otras aplicaciones de SW
- Usa mensajes basados en XML
- Vía protocolos basados en internet

Características de Web Services
- Basados en XML en todas partes.
- Basados en Mensajes
- Independiente del Lenguaje de Programación
- Puede ser localizado dinámicamente
- Puede ser ensamblados o agregados dinámicamente
- Accesible a través de internet
- Débilmente acoplados
- Basados en estándares de la industria

Los servicios Web están totalmente basados en XML. Prácticamente todo en el ámbito de los servicios Web se definen en XML. Por ejemplo, el formato de la data que es intercambiado entre el usuario y el proveedor del servicio es definido en XML o la descripción del servicio web que también es definida en XML.
El único contrato que tiene que ser acordado entre el usuario y el proveedor del servicio es la sintaxis y la semántica de los mensajes XML.
Los servicios web pueden ser dinámicamente localizados e invocados. Normalmente ellos serán accedidos e invocados sobre Internet e Intranet.



Este es la arquitectura de alto nivel de los servicios web. La nube de la parte superior derecha (la red de servicios), es un conjunto de servicios web en Internet. Estos servicios son accesibles a los distintos dispositivos de cliente que aparecen en la parte inferior de la imagen.
Cuando un servicio Web es creado, se registra a sí mismo en un registro de servicio. Por registrarse en el Registro del servicio, el servicio Web expone su interfaz a cualquier cliente que está interesado en acceder a él. Cuando un cliente requiere un determinado servicio, primero busca en el servicio de registro, esta es la fase de Descubrimiento de Servicios. Una vez que un servicio Web apropiado ha sido localizado, el cliente invoca el servicio web, que ofrece el servicio al cliente.

Porqué Web Services
- Son una plataforma neutral
- Son accesibles de una manera estándar
- Son accesibles de una manera interoperable
- Uso simple e instalación ubicua
- Son relativamente baratos
- Simplifica la integración de la empresa.

Mito: Web Services es un nuevo Concepto
Los servicios Web es la Computación Distribuida de siempre, sólo que ahora está basado en la web.


Otro mito de los Servicios Web es que deben estar basados en HTTP. Pero otros transportes como SMTP también puede ser utilizado.

Componentes de una Arquitectura de Web Services Simple
- Descripción del Servicio
- Registro del Servicio (Publicación) y Descubrimiento
- Invocación del Servicio

Arquitectura de Servicios Web (Smplificado)



El proceso habitual para utilizar un servicio web consta de tres pasos básicos:
1. Un proveedor de servicios implementa algún servicio. Luego el proveedor del servicio publica (PUBLISH) el servicio web en un directorio central o registro de servicios (Registry), para que pueda ser encontrado por un cliente del servicio. En este directorio central se almacena la descripción con los datos necesarios para que un cliente sepa como invocar el servicio.
2. Un cliente del servicio, busca (FIND) en el registro de servicios la descripción de la aplicación que desea consumir, y además obtiene los datos necesarios sobre el proveedor del servicio y como invocar el servicio web.
3. El consumidor finalmente se contacta (BIND) con proveedor de servicios, invoca el servicio web y luego este procesa la información enviada por el cliente y retorna los datos requeridos.

SOAP
- Protocolo Simple de Acceso a Objetos
- Protocolo de conexión similar a la
o IIOP para CORBA
o JRMP para RMI
- XML es usado para la codificación de data
o protocolo basado en "Texto" vs protocolo "binario"
- Soporta XML basada en RPC

SOAP está basado en XML, viene definido por los dos esquemas desarrollados por el World Wide Web Consortium (W3C), el de codificación y el de "envoltorio". Por ejemplo, se especifica cómo es representado el valor entero 23 o el valor de un String "xyz" en la red. Definir reglas de codificación estándar es importante para la interoperabilidad, porque sin un acuerdo de reglas de codificación, las partes de la comunicación no serían capaces de entender los datos que se envían por la red. (Por ejemplo, las partes de una comunicación tienen que ponerse de acuerdo sobre si el valor entero 23 va a estar representado por 2 bytes o 1 solo byte y, en qué forma). La diferencia entre la codificación de SOAP y otros es que, bajo SOAP, los datos codificados son una representación XML, que es una codificación basada en texto, mientras que otros son codificación binaria.
Al estar basado en XML, SOAP es independiente de lenguaje y plataforma, de modo que dos determinadas aplicaciones que estén interactuando podrían haber sido escritas en lenguajes distintos y correr sobre sistemas operativos diferentes.
No todo son ventajas

Lo que no es SOAP
- No es un modelo de componentes
o Así que no sustituirá objetos y componentes, por ejemplo: EJB, JavaBeans
- No es un lenguaje de programación
o Así que no sustituirá a Java
- No es una solución para todo
o Por lo tanto, no sustituirá a otras tecnologías de computación distribuida, como RMI.

No todo es ventajas en SOAP. La codificación de datos del estándar resulta bastante ineficiente puesto que los mensajes han de ser codificados como texto, lo que les hace bastante engorrosos. Es más, los mensajes SOAP consumen más ancho de banda que sus mensajes binarios equivalentes. Cuando los mensajes SOAP son recibidos, han de ser convertidos en datos binarios a fin de que las aplicaciones puedan actuar sobre ellos. Para ello, los desarrolladores han de incorporar "parsers" XML en las aplicaciones, que de este modo adquieren mayor volumen; además, la operación de "parsing" puede consumir un tiempo de CPU sustancial.
Cuando no se precisa independencia de plataforma o el consumo de ancho de banda puede llegar a ser un problema, quizá ahi SOAP no represente la mejor solución. Pero sí desde luego cuando una aplicación ha de ser distribuida a través de muchos sistemas operativos diferentes, dado su amplio y creciente soporte en una gran variedad de plataformas.

Web Services en Eclipse

Creación de bean (el servidor)


El servicio consiste en obtener el nombre completo del usuario.


Crear el Web Services, a partir del Bean creado (Bottom Up).
A esta manera de crear el webservices se le llama code-first en la cual se crea el contrato del servicio web (WSDL y XSD) a partir del bean creado, esta opción es la más usada por su simplicidad. Spring WS genera web services mediante contract-first (primero se define el contrato del servicio web y luego la implementación) que es una manera más laboriosa de crear webservices, pero también las más correcta al definir primero la interfaz y luego la implementación.





Seleccionar en:
- Web Services type: “Bottom up Java bean Web Services” (code-first)
- En Service Implementation: el bean creado “ServerBean”

En Client Type Deslizar el slide hasta TestClient.
En los links de la parte Cliente. Hacer click en "Client Project..."



Setear el nombre del Cliente para probar el webservices creado y que se creará en un nuevo proyecto web. Click Ok.



Seleccionamos "Monitor Web service" en la pantalla anterior. Click Next, Next.



Nota: Si aparece el siguiente error es porque necesita los jar: jaxws-tools-2.0.jar y jaxws-rt.jar que se puede descargar aquí



Pedirá levantar el servidor, si no lo está. Click Finish.



Dar click en el método creado. En la parte inferior saldrá el resultado del servicio.



Clases generadas en el cliente:






Read More!

Instalación de Eclipse

Descargar el Eclipse IDE for Java EE Developers (189 MB). Descomprimir y ejecutar eclipse.exe



Indicar ruta donde se ubicará el área de trabajo.



Crear un Nuevo Proyecto que por lo menos contenga una página index.jsp para probar el IDE.

Seleccionar File / New / Dynamic Web Project.



Ingresar nombre del Proyecto (testWebApp). Click en New de la sección “Target runtime” para agregar el servidor con que se trabajará.



Seleccionar el Servidor (Tomcat v5.5), previamente instalado. Next



Click en "Browse" para indicar en qué directorio está instalado el servidor. Click en “Installed JREs…” para indicar con qué jdk se trabajará.



Click en “Add” para añadir el jdk 1.5



Seleccionar “Estándar VM”. Next



Click en “Directory” para ubicar el jdk 1.5. Finish



Seleccionar el jdk 1.5.





El IDE ya se encuentra configurado para que trabaje con la versión 1.5 del jdk y la versión 5.5 del Tomcat.



Click en "Add Folder" para ingresar más carpetas que contengan las fuentes de la aplicación. En “Default Output Folder” indicar en qué carpeta se guardarán los archivos compilados. Next.





Crear la página “index.jsp”. Click derecho en el proyecto creado / New / JSP. Grabar





Correr la aplicación. Click derecho en el proyecto creado / Run As / Run on Server





Agregar el proyecto creado al panel derecho para correrlo en el servidor.



El siguiente error sale si los puertos indicados ya están siendo usados.



Doble Click en “Tomcat v5.5 Server…”



Cambiar los puertos. Guardar los cambios.



Click derecho en “Tomcat v5.5 Server at locahost [stopped]” / Start





Correr de Nuevo el proyecto en el servidor. El IDE compila y deploya la “aplicación” en Tomcat.



Y muestra la página creada en el browser...

Read More!