ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS PROGRAMACION PARA DISPOSITIVOS MOVILES PDM115 Ciclo I-2014
GUIA DE LABORATORIO N 8 A(Netbeans-java,Glassfish)
Objetivo: Crear servicios web utilizando la arquitectura SOA y REST, para obtener informacin desde un servidor web glassfish. Requerimientos previos:
JDK (Java Development Kit) versin 7 update 17
IDE NetBeans 7.3 con mdulos para desarrollo en JavaEE y ambiente de desarrollo utilizando GlassFish 3.1.2.2 https://netbeans.org/downloads/7.3/index.html
Servidor de Aplicaciones GlassFish 3.1.2.2 configurado para entorno de produccin
Contenido Objetivo: ............................................................................................................................................... 1 Requerimientos previos: ....................................................................................................................... 1 Servicio Web SOAP ............................................................................................................................. 1 1. Crear el Proyecto .......................................................................................................................... 1 2. Levantar el Servidor Web Glassfish ............................................................................................. 4 3. Servicio Web Soap ....................................................................................................................... 6 4. Despliegue(Deploy) el Proyecto ................................................................................................ 10 5. Prueba del Servicio ..................................................................................................................... 11 Servicio Web Restful ......................................................................................................................... 14 1. Creacin ..................................................................................................................................... 14 2. Modificar El cdigo del servicio ............................................................................................... 16 3. Ejecucin y prueba el servicio. .................................................................................................. 19 4. Construir el archivo WAR .......................................................................................................... 19 5. Subir los archivos como se le indica .......................................................................................... 20 Comprimir el proyecto y subirlo en el primer link......................................................................... 20 Subir por separado el archivo war(sin compresin) en el segundo link ......................................... 20
1
Servicio Web SOAP
1. Crear el Proyecto Como primer paso ejecutamos NetBeans IDE y dentro del men Archivo seleccionamos Proyecto Nuevo
Con esto se abrir una ventana donde establecemos el tipo de proyecto, seleccionamos Java Web, Web Application y presionamos el botn siguiente:
En la siguiente ventana establecemos el nombre y la ubicacin del proyecto, Definimos el nombre CarnetWebApplication, luego presionamos el botn Next(siguiente): 2
A Continuacin establecemos el servidor de aplicaciones GlassFish 3.1.2, luego presionamos el botn Next(siguiente)
3
Por ltimo podemos seleccionar un Framework, para nuestro caso dentro del desarrollo de esta gua no aplica, por lo tanto presionamos el botn Finish(Terminar)
Una vez creado tendremos la siguiente estructura dentro de la vista de Proyectos:
4
Podemos ver que por default ya aparece un servicio web creado que contiene un hola mundo
2. Levantar el Servidor Web Glassfish Iremos a la pestaa de Services, y buscamos Glassfish presionamos clic derecho y luego iniciar,
Si tenemos seguridad(firewall u otros programas) en nuestra pc, debemos de permitir que el glassfish tenga acceso a los recursos.
5
6
3. Servicio Web Soap
Podemos ver que aparece en Servicios la carpeta de servicios web, esperando que hagamos nuestro primer servicio.
Servicio Web(Suma) Entramos a la pestaa Projects y buscamos Source Packages, luego presionamos clic derecho, New, Web Service..
7
Se le definen las siguientes caractersticas:
Por default aparece la ventana source, presione clic en design.
8
Si no aparece. Se podra presionar clic derecho en el nombre de la clase CarnetSuma, clic en editors y luego clic en Design.
Presionamos clic en add operation, Escribimos como nombre sumadosnumeros, Presionamos Add para incorporar parmetros(sumando1(int),) sumando2(int) y total (String).
Presionamos Ok para finalizar. 9
Modifique el cdigo en la ventana source y luego guarde:
10
4. Despliegue(Deploy) el Proyecto En la etiqueta de Projects ,presione clic derecho deploy
Esperamos hasta que aparezca la generacin correcta.
11
Verificamos en la pestaa de servicios que ya se encuentra el servicio levantado, si no aparece, presione clic derecho, actualizar sobre carpeta servidores.
5. Prueba del Servicio
Presionamos clic derecho sobre el servicio web, clic en Test con esto se cargara el browser con la url de prueba
Esto funcionara siempre y cuando exista conectividad entre las dos pc`s. Adems prubelo con la herramienta SoapUI, esto debido a que muchos servicios web SOAP, tienen particularidades por las que no podran ser probados directamente en el browser.
14
Servicio Web Restful
1. Creacin
En el proyecto anterior , dentro del paquete sv.edu.ues.fia.carnetfunciones, presione clic derecho, nuevo, restful web service.
15
Seleccionamos Simple root Resource
Presionamos Siguiente
16
Definimos un nombre para el servicio:NumeroEnLetrasResource
Y presionamos terminar. 2. Modificar El cdigo del servicio
* * @author win7 */ @Path("generic") public class NumeroEnLetrasResource {
@Context private UriInfo context;
/** * Creates a new instance of NumeroEnLetrasResource */ public NumeroEnLetrasResource() { }
/** * Retrieves representation of an instance of sv.edu.ues.fia.carnetfunciones.BienvenidoRESTResource * @return an instance of java.lang.String */ @GET @Path("{numero}") @Produces("application/xml")
public String getXml(@PathParam("numero")int numero) { //TODO return proper representation object String numeroString=""; switch(numero){ case 1: numeroString="uno"; break; case 2: numeroString="dos"; break; case 3: numeroString="tres"; break; case 4: numeroString="cuatro"; break; case 5: numeroString="cinco"; break; case 6: numeroString="seis"; break; case 7: numeroString="siete"; 18
break; case 8: numeroString="ocho"; break; case 9: numeroString="nuevo"; break; default: numeroString="No es un digito"; break; } String mensaje=numeroString; StringWriter writer=new StringWriter(); JAXB.marshal(mensaje, writer); return writer.toString(); }
}
Breve explicacion del codigo.
La anotacin @Path sirve para indicar la URI del servicio web, esta URI es concatenada a la URL del proyecto web.
Para el ejemplo es @Path{generic}, que significa entonces que podremos acceder al servicio web con la siguiente direccion: localhost:8080/<NombreProyecto>/webresources/<Pathdefinido> para el ejemplo localhost:8080/CarnetWebApplication/webresources/generic
@Path junto @PathParam sirven para indicar que vamos a pasar parametros dentro de la URL,para este servicio web por ejemplo si deseamos saber cual es el equivalente de 6 en letras, deberemos de indicar la siguiente direccin:
La anotacin @GET nos dice que el metodo sera acccesado mediante el metodo GET del protocolo HTTP.
La anotacion @Produces indica el tipo de contenido que se va a retornar al cliente.
La clase JAXB nos ayuda con la conversion de nuestra respuesta a XML.
19
3. Ejecucin y prueba el servicio.
Hacemos click derecho sobre el proyecto y hacemos click en Deploy.
Para probar nuestra aplicacin, abrimos el navegador y escribimos la direccin siguiente: http://localhost:8080/CarnetWebApplication/webresources/generic/2 Se debera de obtener un resultado como el siguiente:
4. Construir el archivo WAR
Presionar clic derecho en el proyecto y presionar clean and build
20
5. Subir los archivos como se le indica Comprimir el proyecto y subirlo en el primer link
Subir por separado el archivo war(sin compresin) en el segundo link Busque el archivo