Tutorial Servicios Web



Documentos relacionados
XAJAX: una librería de AJAX para PHP (parte 1)

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Configuración de DNS seguros

GUIA DE LABORATORIO N 8 A(Netbeans-java,Glassfish)

CLASS JAVASCRIPT CLASES? OBJETOS PREDEFINIDOS. WINDOW, OBJETO GLOBAL. NUMBER, MATH, DATE, REGEXP, ERROR. (CU01144E)

MANEJANDO FICHEROS Y CARPETAS

Instalación Joomla. Instrucciones para instalar Joomla en un pc en la red local del instituto, o en un servidor en Internet

Agosto. Un primer JSP. Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / j a v a. p h p ]

RECUPERAR DATOS DE UN FORMULARIO HTML USANDO PHP. USO DE $_GET. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00833B)

Formularios HTML. Elementos de Programación y Lógica

Modulo 1 El lenguaje Java

LA WEB 2.0 (III): RSS Y GOOGLE READER

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Desarrollo Web en Entorno Servidor

La ventana de Microsoft Excel

Universidad ORT - Arquitecturas de Software sobre plataforma JEE Web Services (parte 1)

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

PRUEBAS FUNCIONALES Y DE ACEPTACIÓN


PREPARANDO EL ENTORNO DE DESARROLLO PARA PROGRAMAR EN PHP. DESCARGAR E INSTALAR NOTEPAD++ (CU00808B)

CAPAS O CONTENEDORES EN HTML. ETIQUETAS DIV Y SPAN. EJEMPLOS. MAQUETAR O DAR ESTRUCTURA A LAS PÁGINAS WEB. (CU00726B)

DESCARGA E INSTALACIÓN DE LA DOCUMENTACIÓN PARA LAS CLASES DEL API DE JAVA. CONSULTAR EN LOCAL O EN INTERNET? (CU00910C)

3.1 Introducción a Wireshark

Muchos programas de aplicación contienen herramientas para proteger la información, por ejemplo, Microsoft Word que te permite:

TUTORIAL DE WORDPRESS

Módulo mod_banners para insertar y visualizar anuncios o publicidad (banners) en Joomla. Contador. (CU00446A)

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

Vamos a ver las dos formas básicas de arrancar PowerPoint.

Guía de migración a firma HMAC SHA256 Conexión por Redirección

Curso Internet Básico - Aularagon

Manual de instalación de Java Runtime Environment.

NORMA (SEPA) 22/11/2013

Javascript parte II: AJAX

Enviar Felicitación Navideña por con Off. 2007

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

UNIVERSIDAD TÉCNICA DEL NORTE FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS ESCUELA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

ASISTENCIA TÉCNICA A LA SEGURIDAD INFORMÁTICA EN PYMES MANUAL KEEPASS WINDOWS

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

CONSIDERACIONES GENERALES DEL FUNCIONAMIENTO DEL PROGRAMA

SUBIR ARCHIVOS CON FTP. TRABAJAR EN UN SERVIDOR REMOTO. CREAR UNA PÁGINA WEB CON PROGRAMACIÓN PHP. (CU00814B)

INSTALACIÓN DE GATEWAYS SIP

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

OBTENER DATOS EXTERNOS

MANUAL BÁSICO DE WRITER

Partes del formulario

FeriaOnline.com C/Llamaquique Nº 4 Tfno: Oviedo mail: info@feriaonline.com Url:

Para subir archivos usando los datos que nos proporcionaron vía correo electrónico.

Combinar comentarios y cambios de varios documentos en un documento

Cómo gestionar menús en Drupal 7

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Coordinación en un Centro TIC Tema 4 Control de impresoras

Cómo instalar Google Analytics en tu sitio web

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

WEB SERVICES CREACIÓN DEL SERVICIO

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2

Un Navegador es un programa que nos conecta a Internet y nos permite organizar nuestro

Guía Notas Parciales. Intermedio (Nueva Versión)

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

Vamos a ver los principales conceptos básicos que debemos

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

6.1. Conoce la papelera

INSTALACIÓN DE SIESTTA 2.0 EN UN HOSTING (Ejemplo para Guebs.com)

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Desarrollo de Servicios Web con JBuilder

Manual del del usuario. Curso Multimedia de Tamazight

TEMA 4: CORREO ELECTRÓNICO: OUTLOOK 2007 CORREO ELECTRÓNICO: OUTLOOK EJECUTAR EL ENTORNO DE TRABAJO GESTIÓN DE CORREO ELECTRÓNICO 3

Exporta la construcción para su visualización en Internet, es decir, como applet dentro de una página html.

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Internet Information Server

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Poner músicas por mumble en PDR for DUMMIES

MANUAL DE CREACIÓN DE CARPETAS PARA ACCESO POR FTP DE CLIENTES EN UN NAS

CarFirma Firma electrónica del Gobierno de La Rioja Manual de usuario

PASOS PARA CREAR UNA PÁGINA WEB

CÓMO CREAR NUESTRO CATÁLOGO

Primeros pasos para una configuración rápida de la tienda.

Módulo 1 El lenguaje Java

Manual del Módulo de Programación y Formulación 2016

Notas técnicas Tips de SAP Netweaver ABAP - JAVA Tip en detalle Nro. 27. (Lo nuevo, lo escondido, o simplemente lo de siempre pero bien explicado)

REQUISITOS PARA LA FIRMA DIGITAL

Mi correo con OUTLOOK

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario

Mapas colaborativos en línea

&' ' ' !,- (& ', Este tutorial trabaja sobre NetBeans 6.1 y MySQL 5.0. Crear un nuevo proyecto usando la ventana que se indica a continuación: !!

En este tutorial vamos a calificar una tarea por el método "Calificación simple directa"que es el que utiliza por defecto moodle.

CONVERSOR CON HERRAMIENTAS PARA EXCEL.

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

9. Objetos y clases Clases

Obtener certificado de antecedentes penales online

La publicación. Pere Barnola Augé P08/93133/01510

Transcripción:

Tutorial Servicios Web

1. Servicios Web con REST Como ya hemos usado SOAP para WebService, podemos afirmar que es bien fácil de diseñar, pero algo complicado de consumir: se necesita toda una API para construir los clientes utilizando el WSDL. Además, con SOAP se permite crear un solo servicio y ponerle varios métodos. Esto puede llevar a un mal diseño del servicio ya que podría tener un servicio que haga de todo: por ejemplo, un servicio de manejo de Clientes que permita también manejar Proveedores. RESTful es una propuesta muy interesante que permite manejar los servicios web con métodos definidos, manteniendo la simpleza del protocolo como XML, pero que cada servicio sea identificado únicamente con un solo URI. En este tutorial veremos cómo crear un Servicio RESTful usando NetBeans. Cabe destacar que los servicios de las redes sociales como Flickr, Twitter, Facebook, etc son basados en RESTful. Para este ejemplo usaremos NetBeans 7.2, y GlassFish v3.1.2, pero igual con oras versiones también funciona. Para comenzar, debemos entender que necesitamos de una clase para manejar un servicio. En esta clase solo pueden haber máximo cuatro métodos públicos que son ejecutados por los cuatro métodos HTTP disponibles para RESTful: 1. GET 2. POST 3. DELETE 4. PUT Los métodos GET y POST son conocidos en los formularios (<form method="post" />). Cada uno de estos métodos determina la acción que hará el REST sobre nuestra aplicación. No deben haber más de un GET o POST o DELETE o PUT, solo tiene que haber uno de cada método. Cada uno tiene una tarea especifica: 1. GET: Para obtener un valor. Puede ser un listado de objetos 2. POST: Para guardar un nuevo objeto (instancia de identidada) en la aplicación

3. DELETE: Para eliminar un objeto (instancia de identidad) 4. PUT: Para actualizar un objeto. Esto es como un CRUD, pues eso es lo que es: los métodos para hacer mantenimiento a una entidad de la aplicación. Entonces, la clase que deberá tener estos métodos es como una clases EJB Facade de una aplicación Java EE. Por tanto, esta clase se llamará "Recurso", funcionará como un EJB, solo manejará la persistencia de una entidad, pero será accedido desde la web. 2. Creando el proyecto y configurando REST Crear un proyecto web normal en NetBeans. Darle el nombre SimpleRESTweb. Este proyecto hará un simple cálculo de factorial. Luego, crearemos una clase común y silvestre, llamada FactorialResource. Tendrá (por ahora) un método llamado factorial() public class FactorialResource { public long factorial (long base){ if (base >= 1){ return factorial (base -1) * base; return 1; 3. Creación del EJB Agreguemos la notación @Stateless al inicio de la clase. Esto convierte automáticamente a nuestra clase en un EJB.

Luego, seguido al @Stateless agregamos la anotación @Path("/factorial") Esto indica que este recurso será accedido desde la ruta "/factorial" via web. Ahora, guardemos el archivo... y en ese mismo momento, el NetBeans detectará de que se ha creado un recurso REST, entonces pedirá activar esta característica en la aplicación... por tanto pedirá dónde estará activado todos los recursos REST. Seleccionar la primera opción, utilizaremos el dado por defecto (/webresources). Clic en Ok.

Y con esto, nuestra clase ya es un recurso REST. Pero aún este recurso no tiene métodos. Ahora veremos cómo convertir nuestro método convencional en un método REST. 4. Creando un método REST Recordemos que solo podemos crear un método de tipo GET,POST,PUT y DELETE. Y como el método factorial nos deberá devolver un solo valor según el parámetro que le especificamos, usaremos el tipo GET. Para ello agregamos la anotación @GET antes del método. Y con esto, nuestro recurso ya tiene un método.

Antes de continuar, los valores que se reciben desde el recurso REST deben ser objetos. Por tanto, nuestro método debe cambiar un poco para que no devuelva un long, sino un java.lang.string. Además, debemos indicar que el parámetro base del método Java factorial será recibido via URL con el nombrebase. Es decir, se llamará al URL así.../factorial?base=5 Para ello usaremos la notación @QueryParam antes de la declaración del parámetro y ponemos el nombre de la cadena query. 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 { /** * * @param base * @return */ @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; return 1; El nombre del parámetro de la cadena query podría ser diferente al del método java. //... @GET public String factorial(@queryparam("numero") long base) { //... Pero si se hace eso, se debería recordar que para accederlo via URL debe ser con ese mismo nombre.../factorial?numero=5 Pero para evitar problemas, usaremos el mismo nombre. Y en caso de ser necesario, podemos cambiar el nombre. Eso ya queda a criterio del diseñador de la aplicación. 5. Probando la Aplicación

Pues bien, ahora guardemos el proyecto, hagamos clic derecho sobre el ícono de proyecto y seleccionamos "Deploy". Esperamos a que se compile el proyecto, se ejecute el GlassFish y se despliegue. El proyecto se puede probar tres maneras. La primera es la más fácil, usando la URL. Bastará con abrir nuestro navegador y escribir el URL del proyecto: http://localhost:8080/simplerestweb/webresources/factorial?base=10 Este URL está compuesto de lo siguiente: SimpleRESTweb: El contexto de la aplicación. Que generalmente es el nombre del proyecto. webresources: Ubicación de los recursos REST de la aplicación. Este nombre nos lo pidió el NetBeans cuando guardamos la clase Java por primera vez con la notación @Path ya que detectó que tenía recursos REST. factorial: Es el nombre de nuestro recurso (Definido por la anotación @Path) base: Es el parámetro del recurso. Justamente es una cadena Query. El resultado debe mostrarse tan simple como una web sin formato ni nada La segunda manera que muestro cómo probar este recurso REST es usando un formulario HTML. Escribamos lo siguiente en el index.jsp <body> <h1>calculando factorial</h1> <form action="webresources/factorial"> Base: <input name="base" type="text" /> <button>calcular</button> </form> </body>

Y la tercera forma (que es la más profesional) es usando el NetBeans. Hacemos clic derecho sobre el ícono del proyecto y seleccionamos "Test RESTful WebService". Con esto, el IDE creará una página local que accederá al WADL de la aplicación y se mostrará en el navegador web. El WADL es análogo al WSDL de SOAP Luego, podemos seleccionar del panel izquierdo el recurso que está disponible (en este caso "factorial")...

... y vemos que nos muestra cuales son los parámetros (solo base) que están disponibles para este recurso. Probamos escribiendo valores en el parámetro, y hacemos clic en "Test". 5. Probando la Aplicación Todo servicio web no es útil si no se sabe cómo consumir. Aqui mostraremos cómo consumir este simple REST. Usando JavaScript Para consumir desde JavaScript, se debería utilizar la técnica AJAX. Y en vez de hacer toda la biblioteca de consumir AJAX con JavaScript, usaremos algo ya hecho como el jquery.

Crearemos una página html al que llamaremos test-jquery.html. Y ahí pondremos lo siguiente. <html> <head> <title></title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h2>calcular factorial</h2> Número:<input type="text" name="base" id="base"/> <button type="button" id="calcularbtn">calcular</button> <div id="resultado"> Resultado: </div> <script type="text/javascript"> jquery("#calcularbtn").click(function(){ var base = jquery("#base").val(); jquery.get("http://localhost:8080/simplerestweb/webresources/factorial",{bas e:base, function(resultado){jquery("#resultado").text(resultado) ) ) </script> </body> </html> Esta HTML funciona desde Firefox cuando se ejecuta desde el NetBeans, Usando Java Con NetBeans más el complemento Jersey, se nos hace muy fácil consumir servicios REST. Para integrarlo con el IDE, necesitamos registrar el WADL.

Esta URL lo podemos obtener así: http://host:puerto/contextoweb/rwebesources/application.wadl Para nuestro ejemplo, este es http://localhost:8080/simplerestweb/webresources/application.wadl Podemos abrirlo desde el navegador y se nos mostrará un XML que contiene la definición de los recursos (/factorial) y los parámetros de cada método. En este caso hay un método GET y tiene como parámetro un long. Ahora bien, este URL del WADL lo vamos a necesitar para registrarlo en el NetBeans. En el IDE vayamos al panel de servicios y hacemos clic derecho sobre el nodo "Web Services" y seleccionamos "Add Web Service..." Luego, en la entrada de URL, pegamos la dirección del WADL. Y como nombre de paquete ponemos simplerest

Y listo, ya tendremos registrado el WebService en nuestro IDE. Esto nos permitirá utilizar este servicio en cualquiera de nuestras aplicaciones. Por ejemplo, ahora, en Java. Hagamos un nuevo proyecto llamado SimpleRESTClientJavaApp. Ahora, crearemos un nuevo archivo y seleccionamos la categoría "Web Services" y el tipo de archivo "RESTful Java Client"

Luego, en el siguiente paso, pongamos como nombre de la clase FactorialClient, dentro de la opción "Select the REST resource" seleccionemos la opción "From Project" y en Package cliente... y hagamos clic en "Browse" para seleccionar el WebService que acabamos de hacer. Nota: Si no se puede registrar el servicio pruébelo con la opción de un recurso en otro proyecto. y clic en "Finish". Listo, el IDE nos creará la clase FactorialClient que contendrá los recursos necesarios para acceder al servicio REST. Ahora, cómo se consume esto?... en nuestra clase Java solo debemos instanciar la clase, pasarle el parámetro y recibir el valor. public static void main (String[] args){ FactorialClient client = new FactorialClient(); long base = 10; String resultado = client.factorial(string.valueof(base)); System.out.println("Resultado: " + resultado);