Download MSc. Daniel Alejandro Yucra Sotomayor Pag. - 1
Document related concepts
no text concepts found
Transcript
Web Services Laboratorio Nro. 11 Web Services con JAX-WS con MySQL I. Competencia General: Mostrar la capacidad que tienen los web services cuando se combinan con componen como una base de datos en MySQL. II. Definiendo el Depositario de Datos con MYSQL a) En el servidor de base de datos Creas una base de datos de nombre “universitario” d) Luego ejecutas en tu MySQL 5.0 el script de la Base de Datos, el cual se creará la tabla nombres: Fig. 02: Seleccionando el tipo de proyecto b) El nombre del proyecto será: “WebServiceMysql” CREATE TABLE `nombres` ( `codigoCliente` varchar(10) NOT NULL, `nombreCliente` varchar(10) NOT NULL, PRIMARY KEY (`codigoCliente`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `nombres` VALUES ('100', 'daniel'); INSERT INTO `nombres` VALUES ('101', 'juan'); INSERT INTO `nombres` VALUES ('102', 'micaela'); INSERT INTO `nombres` VALUES ('103', 'marcos'); Fig. 03: Definiendo el nombre del Web Service Fig. 04: Definiendo el Server y versión de JEE Fig. 01: Definiendo la Base de Datos “universitario” Nota: En este caso no es necesario será un proyecto JSP Pages III. Creando el Proyecto para el Web Service a) Para realizar este Web Service Proveedor con Base de datos, debe crear un Nuevo Proyecto, de la categoría Java Web JSP Fig. 05: El Web Service se desarrollará en base a JSP Pages IV. Creando el Web Service MSc. Daniel Alejandro Yucra Sotomayor Pag. - 1 - Web Services a) Para crear un nuevo web service desde el proyecto, debe hacer clic derecho en el proyecto y seleccione la opción “web service” Fig. 06: Adicionando al proyecto un nuevo Web Service b) A continuación definimos el nombre del Web Service “WebServiceMYSQL” y el nombre del paquete “MisClasesJava” Fig. 09: Definido las operaciones del Web Service con sus respectivos parámetros y tipo de datos V. Creando una Clase Java que conecte el Web Service con MYSQL a) En el paquete “MisClasesJava”, creamos una Clase Java con el nombre “conectamysql” Fig. 10: Selecciona la Nueva Clase Java para el proyecto Fig. 07: Definiendo el Nombre del WebService y Nombre del Paquete c) En la opción Diseño del Web Service, definimos las operaciones y el tipo de datos de los atributos. d) La primera operación se crea con el nombre “ObtenerNombre” y el parámetro “codigoCliente” b) La nueva clase que nos permitirá conectar con el gestor de base de datos MYSQL, pertenecerá al paquete MisClasesJava Fig. 11: Asignando Nombre de la clase y paquete que será alojado Fig. 08: Definiendo la primera operación del web service y un parámetro e) La segunda operación se crea con el nombre “obtenerID” y el parámetro “nombre” MSc. Daniel Alejandro Yucra Sotomayor Pag. - 2 - Web Services c) Adicione los paquetes necesarios para la conexión a la base de datos import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; VI. Modificando y Personalizando “WebServiceMYSQL” la Clase a) Originalmente el código de la clase generada por el IDE quedo de la siguiente manera: d) Copiar el siguiente código: public Connection getConextion() { try { Class.forName("com.mysql.jdbc.Driver"); String url ="jdbc:mysql://localhost:3306/universitario"; return (DriverManager.getConnection(url,"root","uigv")); } catch (Exception e) { System.out.println("error"+e.getMessage()); } return null; } public ResultSet Listar(String sql) { Statement st = null; ResultSet rs = null; try { Connection conn = this.getConextion(); st = conn.createStatement(); rs = st.executeQuery(sql); } catch (Exception e) { System.out.println("Error:"+ e.getMessage()); } return rs; } e) Finalmente el código de la nueva clase debe quedar de la siguiente manera: MSc. Daniel Alejandro Yucra Sotomayor b) Ahora por cada operación se modificará invocando la clase “conectamysql” c) Para empezar debe adicionar el paquete: import java.sql.ResultSet; Pag. - 3 - Web Services rs1 = objc.Listar("select codigoCliente from nombres where nombreCliente= '"+nombre + "';"); while (rs1.next()){ codigoCliente = rs1.getString(1); } return codigoCliente; d) Y la primera operación, deberá quedar de la siguiente manera: @WebMethod(operationName = "ObtieneNombre") public String ObtieneNombre(@WebParam(name = "codigoCliente") String codigoCliente) throws Exception { //TODO write your implementation code here: ResultSet rs = null; String nombreCliente = null; conectamysql objc = new conectamysql(); rs = objc.Listar("select nombreCliente from nombres where codigoCliente= '"+codigoCliente + "';"); while (rs.next()){ nombreCliente = rs.getString(1); // codigoCliente = rs.getString(2); } return nombreCliente; Fig. 13: Personalizando y definiendo la segunda operación para recuperar el codigo del usuario VII. Testeando el Web Service a) Primero debe ejecutar el proyecto o seleccionar la opción “desploy”, para que web service se pueda testear: Fig. 14: Ejecutando o Desplomando el Proyecto Fig. 12: Personalizando y definiendo la primera operación para recuperar el nombre e) La segunda operación deberá quedar de la siguiente manera: b) Para testear el web services con sus respectivas operaciones, debe hacer ubicarse en el proyecto en el web services y seleccionar la opción “Test Web Service” @WebMethod(operationName = "obtenerID") public String obtenerID(@WebParam(name = "nombre") String nombre) throws Exception { //TODO write your implementation code here: ResultSet rs1 = null; String codigoCliente = null; conectamysql objc = new conectamysql(); MSc. Daniel Alejandro Yucra Sotomayor Pag. - 4 - Web Services Fig. 15: Elija la opción Test Web Service c) Para realizar una prueba al web service debe seleccionar los datos correspondientes Fig. 18: Mostrando resultados recuperados del método obtenerID e) Si desea recuperar algún nombre, coloque un código en la caja de texto. Fig. 19: Utilizando el método obtienNombre Fig. 16: Pantalla para realizar pruebas de recuperación de información d) Si desea recuperar algún código, coloque un nombre en la caja de texto. Fig. 20: Mostrando resultados recuperados del método obtieneNombre Complementario: Unidad de Persistencia Fig. 17: Utilizando el método ObtenerID Para que la aplicación quede configurada con la conexión a MYSQL, bastara crear una Unidad de Persistencia entre el Proyecto y Mysql. Para adicionar esta conexión debe hacer clic derecho en el proyecto y crear Una Unidad de Persistencia, previamente debe conectar la Base de datos Correspondiente. VIII. Creando Proyecto Consumidor para el Web Service MSc. Daniel Alejandro Yucra Sotomayor Pag. - 5 - Web Services Fig. 23: Mostrando la recuperación de las dos operaciones creadas en el proyecto del web service a) Debe crear un proyecto JSP Pages que invoque al Web Service, con el nombre “ConsumidorClienteMYSQL” c) Para recuperar el código en el consumidor debe seleccionar uno de las operaciones y arrastrar a la pagina JSP Fig. 21: Proyecto Consumidor que llamará al Web Service b) A continuación, deberá crear un Web Service Cliente, deberá hacer clic derecho en el proyecto y seleccionar Nuevo Web Service Cliente, finalmente selecciona el botón browse para localizar el web Service. Fig. 24: Seleccionando una operación para insertarlo en una pagina JSP d) Finalmente modificando el código quedará <%-- start web service invocation --%><hr/> <% try { misclasesjava.WebServiceMYSQLService service = new misclasesjava.WebServiceMYSQLService(); misclasesjava.WebServiceMYSQL port = service.getWebServiceMYSQLPort(); // TODO initialize WS operation arguments here java.lang.String codigoCliente = "100"; // TODO process result here java.lang.String result = port.obtieneNombre(codigoCliente); out.println("El Nombre es = "+result); } catch (Exception ex) { // TODO handle custom exceptions here } %> <%-- end web service invocation --%><hr/> Fig. 22: Seleccionando el Web Service en el proyecto Consumidor e) f) MSc. Daniel Alejandro Yucra Sotomayor Del mismo modo para la otra operación Mejore su presentación, implementando formulario para la aplicación Pag. - 6 - un Web Services IXI. Creando Formulario Proyecto Consumidor Fig. 25: Formulario Consumidor con b) Se crea el web services client a) Crear un formulario en jsp Archivo: buscar.jsp <%-Document : BUSCAR Created on : 05-nov-2010, 18:46:48 Author : fisc --%> Fig. 26: Generación del Web Service Client <%@page contentType="text/html" pageEncoding="UTF8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Formulario Consumidor </h1> <form name="Test" method="post" action="consumidor"> <p>Ingrese ID:</p> <p> <p><input type="text" name="textoconsulta" ID="textoconsulta"></p> <p> <p>Ingrese Nombre:</p> <p> <p><input type="text" name="textoconsulta1" ID="textoconsulta1"></p> <p> <input type="submit" value="Consulta " name="botonconsulta1"> </form> </body> Fig. 27: Visualizar las operaciones generadas por el Web Services Proveedor c) Crear el servlet “consumidor” </html> Fig. 28: Creando el Servlet d) MSc. Daniel Alejandro Yucra Sotomayor Insertando código al servlet Pag. - 7 - Web Services misclasesjava.WebServiceMYSQL port = service.getWebServiceMYSQLPort(); // TODO initialize WS operation arguments here java.lang.String nombre = textoconsulta1; // TODO process result here java.lang.String result = port.obtenerID(nombre); out.println("<p>El nombre ingresado "+textoconsulta1+"corresponde al codigo: "+result); } catch (Exception ex) { // TODO handle custom exceptions here Fig. 29: Llamando a una operación del Web Service } e) Insertando código a los servlets try { // Call Web Service Operation //Se recupera el datos del formulario y se convierte en cadena El resultado final debe mostrar de la siguiente manera: String textoconsulta = request.getParameter("textoconsulta"); //se invoca al web service misclasesjava.WebServiceMYSQL port = service.getWebServiceMYSQLPort(); // TODO initialize WS operation arguments here Fig. 30: Resultado final de la consulta //se define una nueva variable que guardará el resultado de la consulta java.lang.String OBTENERNOMBRE = textoconsulta; X. Creando otros consumidores para el Web Service Proveedor // Aqui muestra el resultado java.lang.String result = port.obtieneNombre(OBTENERNOMBRE); // se muestra el resultado out.println("El código ingresado "+textoconsulta+"corresponde al nombre: "+result); } catch (Exception ex) { // TODO handle custom exceptions here } Desarrolle 3 clientes Java, donde muestre el mismo resultado: a) Consumidor 1: En una aplicación JME b) Consumidor 2: En una página JSF c) Finalmente proponga la Arquitectura del Web Service (mediante un gráfico, donde represente todos los elementos y componentes de la aplicación) Docente: MSc. Daniel Alejandro Yucra Sotomayor Lima, Noviembre del 2009 Consultas: danielyucra@gmail.com try { // Call Web Service Operation String textoconsulta1 = request.getParameter("textoconsulta1"); MSc. Daniel Alejandro Yucra Sotomayor Pag. - 8 -