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: [email protected]
try { // Call Web Service Operation
String textoconsulta1 = request.getParameter("textoconsulta1");
MSc. Daniel Alejandro Yucra Sotomayor
Pag. - 8 -