DESARROLLO WEB EN ENTORNO SERVIDOR CAPÍTULO 7: Programación de servicios Web Marcos López Sanz Juan Manuel Vara Mesa Jenifer Verde Marín Diana Marcela Sánchez Fúquene Jesús Javier Jiménez Hernández Valeria de Castro Martínez
Servicios Web Un servicio Web es un conjunto de protocolos y estándares que permiten comunicar dos sistemas a través de una red. Habitualmente los servicios Web actúan para intercambiar datos (comunicarse), entre dos aplicaciones. Estas aplicaciones suelen estar desarrolladas en lenguajes de programación distintos. Además pueden estar en plataformas (sistemas operativos o arquitecturas) diferentes. 2
Servicios Web Ejemplo: 3
Mecanismos y protocolos implicados Estos protocolos se consideran independientes. El objetivo es dinamizar las posibilidades de comunicación, seleccionando el protocolo adecuado a casa caso particular. Al conjunto de servicios y protocolos de un servicio Web, se le llama Web Services Protocol Stack (pila de protocolos de servicios Web). Sirven para definir, implementar, localizar y hacer que un servicio Web interactúe con un cliente. 4
Mecanismos y protocolos implicados La pila de protocolos se divide en cuatro partes que podemos denominar servicios: o Servicio de transporte. o Servicio de mensajería. o Servicio de descripción. o Servicio de publicación. o Servicio de descubrimiento. 5
Mecanismos y protocolos implicados 6
Servicio de transporte Es el responsable del envío de mensajes entre las aplicaciones a través de la red. Trabaja en el nivel más bajo, encargándose de cómo se codifica la información, sin preocuparse de su formato. Establecer la conexión y el puerto que se va a usar. Generalmente se utiliza el protocolo HTTP. 7
Servicio de transporte Puede utilizar otros protocolo como, SMTP (protocolo de correo electrónico), FTP (protocolo de trasferencia de ficheros) o BEEP (protocolo específico para servicios Web). 8
Servicio de mensajería Es responsable de la codificación de los mensajes. En él se especifica que contienen los datos que se intercambian entre las maquinas. El lenguaje utilizado para los mensajes es XML. 9
Servicio de mensajería Existen varios protocolos para este servicio, que interactúan con el lenguaje XML para ofrecer el servicio de mensajería: o SOAP. o XML-RPC (remote procedure call mediante XML) que utilizan el servicio de transporte HTTP exclusivamente. o REST (Representational State Transfer), una técnica de arquitectura software para sistemas, que maneja tipos de datos distribuidos en la Web. o La forma más simple de implementar el protocolo, es enviar páginas XML directamente sobre el protocolo HTTP. 10
Servicio de mensajería (XML-RPC) Es un protocolo que hace una llamada a un procedimiento remoto (RPC), que codifica las llamadas utilizando el lenguaje XML. Creado en el año 1998 por Dave Winer. Para la comunicación de los mensajes en la red utiliza HTTP. 11
Servicio de mensajería (XML-RPC) 12
Servicio de mensajería (SOAP) Es la evolución del protocolo XML-RPC. Utiliza XML como lenguaje de comunicación. Es independiente al protocolo de trasporte. Permite la ejecución de métodos, que actúan sobre diferentes objetos, en diferentes plataformas, para que estos puedan comunicarse entre sí. 13
Servicio de mensajería (SOAP) 14
Servicio de descripción Para comunicarse el cliente de un servicio Web y el propio servicio Web, tienen que llegar a un acuerdo. Se debe decidir los detalles del transporte de los mensajes y el contenido de los mismos a través de un documento (descripción del servicio). La descripción del servicio se usa para describir la interfaz pública de un servicio Web. 15
Servicio de descripción Para describir un servicio se puede utilizar: o XML-RPC : Se necesita conocer de antemano las funciones y los métodos que proporciona el servidor y el lenguaje en el que están escritos. Es más limitado en comparación con WSDL y no existe una metodología para descubrir servicios en una red, como ocurre con su predecesor. La implementación del mismo es mucho más sencilla, aunque menos escalable. 16
Servicio de descripción o WSDL : se encarga de publicar la interfaz pública de un servicio Web, es decir, especificar la sintaxis y los mecanismos para el intercambio de mensajes. Está basado en XML y define los requisitos del protocolo y el formato de los mensajes, para interactuar con el listado de operaciones que proporciona el servidor. Las operaciones que soporta, se describen de una forma abstracta. Una vez descritas se casan con el protocolo de red elegido (servicio de transporte) y el formato del mensaje (servicio de mensajería). 17
Servicio de descripción Un cliente que se va a conectar, puede leer el WSDL y visualizar que funciones están disponibles para el servidor y como puede utilizarlas. Se compone de los siguientes elementos: tipos de datos, mensajes, tipos de puerto, bindings (protocolo de comunicación usado), servicios (conjunto de puertos y direcciones). 18
Servicio de descripción 19
Servicio de descubrimiento Es el que centraliza un registro común de servicios Web, de manera que las empresas que generan servicios Web, puedan publicar su localización y descripción. OASIS sufraga el principal catalogo de negocios de internet, al cual se le denomina UDDI. 20
Servicio de descubrimiento UDDI es un servicio de directorio donde las empresas pueden registrar y buscar servicios Web. Características: o Es un directorio para almacenar información de servicios Web. o Es un directorio de interfaces de servicio que se describe a través del protocolo WSDL. o UDDI se comunica a través de SOAP. o Utiliza los estándares de la W3C y de OASIS. o Sigue las recomendaciones de la IETF (Internet Engineering Task Force), grupo especial sobre ingeniería de Internet. 21
Servicio de descubrimiento Ventajas: o Descubre servicios Web en línea de un área de negocio. o Da a conocer la definición de como habilitar el comercio una vez descubierto el área de negocio. o Localiza nuevos clientes y da acceso a los actuales. o Amplia la oferta y extiende el alcance del mercado. o Elimina barreras, permitiendo la participación de clientes a través de internet. o La descripción de los servicios y procesos de negocio, en entorno de programación único, estándar, escalable y seguro. 22
Servicio de descubrimiento A los documentos almacenados en sistemas UDDI se los denomina ficheros de registro y constan de las siguientes partes: o Paginas blancas: especifica los datos personales de la empresa propietaria del servicio como la dirección, contactos, identificación de la empresa y otros identificadores conocidos. o Páginas amarillas: se especifica la categoría industrial. o Páginas verdes. describe la información técnica del servicio Web. 23
Servicio de descubrimiento 24
Generación de un servicio Web Habitualmente se usan entornos de desarrollo integrados como: o Eclipse: entorno de código abierto y multiplataforma. Para generar servicios Web se necesita instalar una versión de JDK y un servidor de aplicaciones (ejemplo: Tomcat) y el uso de librerías para su implementación. También se pueden desarrollar con el lenguaje PHP. 25
Generación de un servicio Web o NetBeans: entorno de desarrollo libre que consta de muchos módulos para extenderlo. Uno de los módulos relacionados con los servicios Web, NetBeans Enterprise Pack, provee de soporte para la creación de aplicaciones orientadas a servicios (SOA), incluyendo herramientas de esquemas XML, un editor WSDL y un editor BPEL para servicios Web. Permite utilizar más de un servidor de aplicaciones como GlassFish o Apache Tomcat. 26
Generación de un servicio Web o Microsoft Visual Studio: entorno de desarrollo para sistemas operativos Windows. Soporta varios lenguajes como Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic.NET. Permite desarrollar servicios Web en cualquiera de los entornos que soporta la plataforma.net. 27
Generación de un servicio Web Entorno de desarrollo NetBeans: 28
Generación de un servicio Web 1. Creación de un proyecto Web. a) Pulsar en el programa NetBeans IDE 7.0.1, Archivo proyecto nuevo. Seleccionar Java Web Web Application. 29
Generación de un servicio Web b) Indicar en Project Name el nombre del proyecto. En el caso de querer cambiar la ruta de localización del proyecto, se pulsa sobre Browse para seleccionar otra ruta. 30
Generación de un servicio Web c) Pulsar siguiente y seleccionar el Server y elegir en Java EE Versión el Java EE 6 Web para poder implementar los servicios Web. 31
Generación de un servicio Web d) Pulsar siguiente y no seleccionar ninguna casilla de las que aparecen. 32
Generación de un servicio Web e) Pulsar en terminar, para crear un proyecto Web donde dentro de él se genera un JSP que se llama index.jsp. 33
Generación de un servicio Web f) Probar que funciona correctamente. Para ello seleccionar con el botón derecho del ratón el directorio raíz del proyecto. Y una vez se despliega el menú pulsar ejecutar. 34
Generación de un servicio Web g) Si todo ha ido correctamente, se abrirá una ventana del navegador mostrando la página index.jsp. 35
Generación de un servicio Web 2. Creación del servicio Web. a) Situar el ratón sobre el directorio principal del árbol del proyecto y pulsar el botón derecho, en Nuevo Web Service. 36
Generación de un servicio Web b) Introducir el nombre de clase. En el apartado paquete se crea un paquete para que los servicios Web se almacenen en él. 37
Generación de un servicio Web c) Pulsar terminar. NetBeans crea una clase con el proporcionado. La clase incorpora los paquetes necesarios para poder implementar el servicio Web. 38
Generación de un servicio Web El código correspondiente al servicio Web generado por defecto tiene la siguiente estructura: package ServiciosWeb; import javax.jws.webservice; import javax.jws.webmethod; import javax.jws.webparam; @WebService(serviceName = "WebServ1") public class WebServ1 { @WebMethod(operationName = "hello") public String hello(@webparam(name = "name") String txt) { return "Hello " + txt + "!"; } } 39
Generación de un servicio Web NetBeans provee de la utilidad para realizar un test del servicio Web y comprobar que este funciona correctamente. Para ello hay que desplegar el proyecto y en el directorio del servicio pulsar con el botón derecho del ratón en el menú Test Web Services. 40
Generación de un servicio Web A continuación abrir una ventana del navegador para probar el servicio Web. La ruta está compuesta por la dirección IP (en nuestro caso localhost), el puerto del servidor, el nombre del proyecto y el nombre del servicio Web seguido de una interrogación y la palabra Tester. 41
Generación de un servicio Web 42
Generación de un servicio Web Introducir los argumentos necesarios para probar los métodos del servicio y ver el resultado de la ejecución. 43
Generación de un servicio Web 3. Añadir métodos a un servicio Web. a) Hay que abrir el código correspondiente al servicio Web haciendo doble clic. Cuando se visualice el código hacer clic en el botón Design. 44
Generación de un servicio Web b) Pulsar el botón Add Operation. 45
Generación de un servicio Web c) Indicar el nombre del método. En la pestaña Parameters se añaden los parámetros pulsando en el botón Add. En la pestaña Exceptions se pueden añadir excepciones al código. 46
Generación de un servicio Web d) Pulsar Aceptar y retocar el código del método generado automáticamente. 47
Descripción de un servicio Web Este servicio es el encargado de describir los servicios Web y de cómo acceder a ellos. Está basado en XML. WSDL es el lenguaje que la organización W3C recomienda para la describir un servicio Web. Este lenguaje se utiliza para describir servicios Web y también para localizarlos. 48
Descripción de un servicio Web Los elementos principales de un WSDL y su definición son: Elemento <definitions> <types> <message> <porttype> <binding> Definición Agrupa el WSDL de principio a fin. Especifica los tipos de datos que utiliza el servicio Web. Especifica los mensajes que utiliza el servicio Web. Especifica las operaciones (métodos) que puede realizar y los mensajes que están involucrados. Especifica los protocolos de comunicación utilizados por el servicio Web. 49
Descripción de un servicio Web NetBeans cuando genera un servicio Web, también crea la descripción del servicio (WSDL). o Una de las formas acceder a la descripción del servicio WSDL es a través del enlace que mostrábamos en el punto anterior. o Otra es de las formas es cuando pulsamos con el botón derecho del ratón sobre el servicio Web y se muestra el menú. Hay que pulsar sobre Test Web Service. En la parte superior aparecerá un enlace en el que indica WSDL File. Al pulsar en él se abrirá el fichero de descripción. 50
Descripción de un servicio Web 51
Descripción de un servicio Web 52
Descripción de un servicio Web Si se introduce la URL situada en schemalocation en una ventana del navegador, se muestran los tipos de datos asociados. 53
Descripción de un servicio Web 54
Interfaz de un servicio Web Para consumir un servicio un cliente debe ser capaz de interpretar el documento de descripción (WSDL) e invocar a los métodos implementados. Netbeans tiene un asistente para crear la interfaz de un servicio Web a partir de su WSDL. 55
Interfaz de un servicio Web 1. Creamos un proyecto Web, independiente del que ya hay creado. 56
Interfaz de un servicio Web 2. Desde el menú, hay que clic con el botón izquierdo del ratón. Mostrará una nueva ventana donde hay que especificar la fuente del WSDL, elegir un proyecto donde se encuentre un fichero local o una URL. 57
Interfaz de un servicio Web 58
Interfaz de un servicio Web 3. Pulsar en el último botón de radio, que indica WSDL URL e incluir la URL del WSDL. 4. Crear un nuevo JSP en el que se va a incluir las llamadas a los métodos del servicio Web. 5. Hay que situarse con el botón izquierdo del ratón en el JSP y pulsar la última opción del menú. 59
Interfaz de un servicio Web 60
Interfaz de un servicio Web 6. Una vez que se pulsa en la llamada a la operación del servicio Web, se muestra una pantalla para seleccionar el método que se desea elegir. 61
Interfaz de un servicio Web 7. Pulsar el botón aceptar, y se genera un código en el JSP. 8. Para comprobar que el servicio Web funciona hay que seleccionar con el ratón el fichero JSP que se ha creado y pulsar ejecutar archivo. 62
Interfaz de un servicio Web 63
Servicios El WSDL es un lenguaje basado en XML que se utiliza para describir servicios Web. También se encarga de como acceder a ellos. Consta de los siguientes tipos de operaciones: Tipo De un solo sentido (One-Way) De petición-respuesta (Request-Response) De peticion-respuesta (Solicit-Response) Notificación (Notification) Definición La operación puede recibir un mensaje, pero no devuelve una respuesta. La operación puede recibir una solicitud y devuelve una respuesta. La operación puede enviar una solicitud y puede esperar una respuesta. La operación puede enviar un mensaje, pero no se espera una respuesta. 64
Servicios SOAP es un protocolo basado en XML para permitir el intercambio de información a través de un protocolo de comunicaciones como HTTP. XML-RPC, es un protocolo de llamada a un procedimiento remoto que utiliza XML para la codificación de los datos y HTTP como protocolo de transmisión de mensajes. Este protocolo define algunos tipos de datos y comandos. 65