Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez...

31
Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez [email protected] WebServices con Java

Transcript of Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez...

Page 1: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Curso de Java y Aplicaciones Web

Facultad Politécnica – U.N.A.

Ing. Esteban Ramí[email protected]

WebServices con Java

Page 2: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Ejemplo

Page 3: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Introducción

- Un web service es una aplicación que puede ser - Descripta - Publicada - Localizada - Invocada

a través de una red, generalmente Internet.

- Combinan aspectos del desarrollo basado en componentes y la Web.

- La interface de los web services está definida por los mensajes que acepta y retorna, por lo cual los consumidores de los web services pueden ser implementados en cualquier plataforma y en cualquier lenguaje de programación.

Page 4: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Introducción

- La interoperabilidad se consigue mediante la adopción de estándares abiertos.

- Fue concebido con el propósito de proveer una plataforma para la computación distribuida sobre la Web.

- Arquitectura sin estado (StateLess).

- Comunicación/proceso asíncrono.

-  Se comunica con otras aplicaciones codificando los mensaje en XML y enviando estos mensaje a través de protocolos estándares de Internet tales como el HTTP - HyperText Transfer Protocol

Page 5: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

ArquitecturaCurso de Java y Aplicaciones Web

Page 6: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Ventajas

Interoperabilidad:Cualquier web service puede interactuar con otro web service. Como los web services pueden ser implementados en cualquier lenguaje, los desarrolladores no necesitan cambiar sus ambientes de desarrollo para producir o consumir web services.

Ubicuidad:Los web services se comunican utilizando HTTP y XML. Por lo tanto cualquier dispositivo que soporte estas tecnologías pueden implementar o acceder web services. Muy pronto estarán presentes en teléfonos, autos e incluso máquinas expendedoras, las que avisarán a la central cuando el stock sea menor al indicado.

Page 7: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Ventajas

Encapsulación:Lo importante es la interface que el servicio provee y no como esta implementado, por lo cual la complejidad se reduce.

Facilidad:El concepto detrás de los web services es fácil de entender, incluso existen toolkits de vendedores como IBM o Microsoft que permiten a los desarrolladores crear web services en forma rápida y fácil.

Soporte:Todos las empresas de software importantes soportan SOAP, e incluso están impulsando el desarrollo de web services. Por ejemplo la nueva plataforma de Microsoft .NET esta basada en web services, haciendo muy simple el desarrollo de los mismos que luego podrían ser consumidos por un web service desarrollado utilizando VisualAge de IBM y viceversa.

Page 8: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Invocación

Publicar la URL del servicio Web y su descripción

.disco

.wsdl

Servicio WebProxyProxy

WebForm

UDDI1

1122

33

44

55 66

11

22

33

44

55

Descubrir el servicio Web

Localizar la URL del servicio Web

Leer la descripción .wsdl

Vincular el servicio Web XML al proxy

Invocar el servicio Web desde la aplicación cliente.

66

1 Universal Description, Discovery and Integration

Page 9: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Proxy

Page 10: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - SOAP

Simple Object Access Protocol

SOAP es un protocolo para el intercambio de información en un ambiente descentralizado y distribuido. 

Esta basado en XML y potencialmente puede ser utilizado en combinación con una variedad de protocolos de comunicación, siendo el más utilizado HTTP.

El protocolo completo se puede encontrar en http://www.w3.org/TR/soap

Page 11: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - SOAP

Modelo de comunicacion SOAP

El modelo de comunicación de SOAP es muy similar al de HTTP.

Un cliente hace un requerimiento (request), el servidor que esta escuchando los requerimientos lo atiene y responde (response) brindando la información solicitada o enviando un mensaje de error en caso de que el requerimiento no haya sido válido.

Page 12: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - SOAP

Mensajes SOAP

• El mensaje SOAP consiste en un elemento envelope SOAP obligatorio, una cabecera SOAP opcional y un cuerpo SOAP obligatorio como un documento XML.

• La cabecera SOAP es utilizado para definir información acerca del requerimiento, mientras que el cuerpo SOAP contiene el método llamado y los parámetros con los que se llama al mismo.

Page 13: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - SOAP

Mensajes SOAP - Request

Este ejemplo invoca al servicio StockQuote llamando al método GetLastTradePrice con el símbolo DIS por parámetro.

Page 14: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - SOAP

Mensajes SOAP - Responce

Este es la respuesta al requerimiento anterior, el cual retorna el precio de la acción solicitada.

Page 15: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

WSDL son las siglas de Web Services Description Language, un formato XML que se utiliza para describir servicios Web. WSDL describe la interfaz pública a los servicios Web.

La versión 1.0 fue la primera recomendación por parte del W3C y la versión 1.1 no alcanzó nunca tal estatus. La versión 2.0 se convirtió en la recomendación actual por parte de dicha entidad.

Servicios web - WSDL

Page 16: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - WSDL

Un documento WSDL está divido en dos partes claramente diferenciadas:

Parte abstracta: Es la parte que define qué hace el servicio a través de los mensajes que envía y recibe.

Parte concreta: Es la parte que define el “como” y “donde”.

Page 17: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - WSDL

types: Esta etiqueta define las estructuras de datos que se utilizarán para construir los mensajes de petición como de respuesta.

message: Describe los mensajes que se van a intercambiar entre el cliente y el Servicio Web. Un mensaje puede estar dividido en varias partes, por ejemplo, si en un mensaje queremos enviar datos y una imagen.

portType: Define el conjunto de operaciones que soporta el Servicio Web. Una operación no es más que un grupo de mensajes que serán intercambiados. Cada operación puede enviar o recibir al menos un mensaje cada vez.

Page 18: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - WSDL

binding: Describe como formatear los mensajes para interactuar con un Servicio determinado. WSDL no define un estándar para formatear mensajes. Para ello utiliza la extensibilidad para definir como intercambiar los mensajes usando SOAP, HTTP, MIME, etc…

services: Este elemento indica donde se encuentra el Servicio usando la etiqueta . Cada etiqueta define el formato de los mensajes, y la dirección donde se encuentra el servicio que acepta mensajes en ese formato.

Page 19: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Práctica

Apache Axis Is an open source, XML based Web service framework.

Apache Axis2™ Is a Web Services / SOAP / WSDL engine, the successor to the widely used Apache Axis SOAP stack. 

Apache Tomcat

Page 20: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Practica

Herramientas

- Servidor de aplicaciones (Tomcat)- Motor de servicios web Apache Axis2- Distribución de Java, en versión JDK- IDE Netbeans

Page 21: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Practica

- Copair la carpeta axis2-1.5.4 en c:\

Configuraciones

- JAVA_HOME=<ruta al JDK de Java>- CATALINA_HOME=<ruta al directorio del Tomcat>- AXIS2_HOME=<ruta al del Axis2>

- Agregar AXIS2_HOME\bin al Path del sistema

- Copiamos el fichero axis2.war enCATALINA_HOME \webappsde C:\axis2-1.5.4

- Arrancamos el servidor tomcat ejecutando CATALINA_HOME\bin\startup.bat 

- Accedemos a la URL http://localhost:8080/axis2

Page 22: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Practica

Page 23: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Practica

Vamos a hacer un servicio web servidor de echo al que le invoquemos con nuestro nombre y nos responda.

Page 24: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Practica

SERVIDOR

- Creamos un nuevo proyecto Java normal en Netbeansllamado ServidorEchoWS.

- Creamos un paquete com.cursojava.ws.servidor y ahí una clase llamada Echo (copiar de carpeta compartida Echo.java).

- A nivel raíz del proyecto creamos una carpeta META-INF y en su interior un fichero llamado services.xml (copiar de carpeta compartida).

- Vamos a crear el ensamblado de tipo .jar y lo vamos a renombrar con extencion .aar (Axis ARrchive, que viene a ser el equivalente al jar de Java).

Page 25: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

services.xmlCurso de Java y Aplicaciones Web

Page 26: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Echo.javaCurso de Java y Aplicaciones Web

Page 27: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Practica

- Copiamos el fichero EchoService.aar en CATALINA_HOME\webapps\axis2\WEB-INF\services

- http://localhost:8080/axis2/services/listServices

Page 28: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - Practica

CLIENTE

- Pediremos a Axis que nos dé el WSDL de nuestro servicio EchoService invocando la siguiente dirección http://localhost:8080/axis2/services/EchoService?wsdl.

- Lo guardamos en un fichero con el nombre echoservice.wsdl

- Volviendo a Netbeans, creamos un proyecto Java con el nombre ClienteEchoWS e importamos las librerías de Axis2,

navegamos hasta el AXIS2_HOME\lib, seleccionamos todos los .jar.

- Copiamos ahora el fichero ServidorEchoWS.wsdl en la carpeta raiz de nuestro proyecto ClienteEchoWS. 

- Abrimos una consola de línea de comandos (cmd) y nos situamos en ese mismo directorio. Una vez ahí, ejecutamos el comando:

wsdl2java -uri ServidorEchoWS.wsdl

Page 29: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Servicios web - PracticaCLIENTE Test.java

Page 30: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Practica

Crear un servicio Web que sume, multiplique y divida dos números enviados por parámetro.

Crear un cliente para este WS y realizar varias pruebas con Junit a cada método.

Curso de Java y Aplicaciones Web

Page 31: Curso de Java y Aplicaciones Web Facultad Politécnica – U.N.A. Ing. Esteban Ramírez edre@gmail.com WebServices con Java.

Curso de Java y Aplicaciones Web.

Ing. Esteban Ramí[email protected]