Servicios Web Actividad de Evaluación Formativa Ejercicios: 1. Instrucciones Generales

También podría gustarte

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

Semana 3/Unidad I

SERVICIOS WEB

Actividad de Evaluación Formativa

EJERCICIOS

1. Instrucciones generales

Estimado(a) estudiante:

Una vez realizada la lectura comprensiva del material de estudio de la semana 3,


lo(a) invitamos a realizar una serie de ejercicios de questionamiento y aplicación de
conocimientos.

Para responder las preguntas y/o realizar los ejercicios, refiérase principalmente a
los contenidos trabajados en las semanas previas. También puede recurrir a fuentes
de información segura en Internet.

2. Ejercicios

En los siguientes ejercicios de conocimiento tendrá que marcar una


alternativa dentro de las 4 disponibles

Ejercicio #1

¿SoapUI en qué está desarrollada?

a.- pyton

b.- C++

c.- Java

d.- php

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Ejercicio #2

Preguntas:

¿Que utiliza XML-RPC?

a.- http

b.- html

c.- xml

d.- Todas las anteriores

Ejercicio #3

¿Para qué se usa generalmente XML-RPC?

a.- Como un medio de comunicación entre 2 plataformas y efectuar cambio de


datos

b.- Se usa comúnmente para probar los servicios remotos

c.- Para hacer pruebas de manejo de datos

d.-Ninguna de las anteriores

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Ejercicio #4

¿Que Tags generalmente tiene que contener un protocolo WSDL?

a.- Etiqueta WSDL,<declarations>,<types>,<text>,<portType>,<port>,<service>

b.- Etiqueta
WSDL,<definitions>,<types>,<message>,<typeRoute>,<binding>,<services>

c.- Etiqueta
XML,<definitions>,<types>,<message>,<portType>,<binding>,<service>

d.- Etiqueta
XML,<declarations>,<types>,<message>,<portType>,<links>,<services>

CASOS

En el grupo ECTGroup requieren de unos que permitan que unas app de diferentes
proveedores logrén mantener a sus diferentes clientes centralizadamente, para esto se ha
solicitado desarrollar un conjunto de webservices que permitan agregar, modificar,
eliminar y consultar a los clientes.
Recientemente los diferentes proveedores se han puesto de acuerdo que para poder
representar correctamente al cliente los datos que necesitan son los siguientes:

Cliente

Rut: Representa al identificador del cliente


Nombres: Representa al primer y segundo nombre (opcional)
Apellidos: Representa ambos apellidos
ProveedorCodigo: Representa a un número único que tiene cada proveedor

Modelo de datos

Tecnológico Nacional Iplacex


Semana 3/Unidad I

CREATE TABLE CLIENTE


(
RUT INT NOT NULL,
NOMBRES VARCHAR(50),
APELLIDOS VARCHAR(50),
PROVEEDOR_COD INT,
CONSTRAINT CLIENTE_PK PRIMARY KEY (RUT)
);

Requerimiento 1

Consultar Cliente: Para poder consultar un cliente es necesario el identificador rut, una vez
entregado la salida esperada es que entre los datos separados por comas
NOMBRE,APELLIDOS,PROVEEDOR_COD

Ejemplo:
JUAN ALBERTO, PEREZ LLANOS, 1

En el caso que no existe el cliente la salida es el mensaje


“Cliente no existe”

Agregar clientes: Para agregar un cliente es necesario comprobar si el cliente existe, si el


cliente ya existe debe indicar una salida al usuario en el retorno del servicio “Cliente ya
existe”

Modificar cliente, Para modificar el cliente es necesario entregar todos los datos del
cliente nuevamente Rut, nombres, apellidos, proveedor_cod, en el caso que el cliente no
exista se debe entregar el mensaje “Cliente no existe”

Nota: Un tema importante en los servicios, es que si ya existe un servicio esté debe ser
usado, por ejemplo: El servicio modificar cliente puede reutilizar el servicio consultar
cliente para mostrar el mensaje de Cliente no existe

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Desarrollo problema

Para el desarrollo de la actividad se requiere una instalación de un IDE (NetBeans Java) y


un servidor independiente (XAMPP) para la posterior prueba de servicios en Soap UI

Primero que todo creamos un proyecto en Java con un nombre representativo

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Nos aseguramos que el server contenga “Apache Tomcat or TomEE” para hacer uso de Tomcat en
XAMPP

Luego presionamos siguiente hasta que termine la creación de la Web application, no


seleccionaremos ningún Framework ya que solo estamos viendo servicios Web

NetBeans creará el proyecto con una página de inicio que por ahora ignoraremos (Index.jsp)

Tecnológico Nacional Iplacex


Semana 3/Unidad I

En su lugar seleccionaremos la sección de packages y crearemos uno nuevo con el nombre de


“Services”

Nombre del Package*

Una vez creado el proyecto y el paquete dentro de el empezamos creando una clase simple de
java de la mísma manera que creamos el package anterior

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Esta clase se llamará WSCliente (WS por Web Service ya que tiene que ser representativo)

Primera cosa a hacer es agregar las etiquetas @WebService, NetBeans detectará que faltan
llamadas de librerías por lo que las agregamos seleccionando en las sugerencias cada vez que nos
notifique

Agregando librería*

Resultado de agregar Librería

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Creamos método de consultar cliente con un parámetro de Rut ya que esto lo identifica

Creamos método de crear cliente con todos los parámetros que el cliente contiene (@WebParam)

Creamos finalmente el modificar cliente con los mismos parámetros que en la creación

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Una vez creada la clase y métodos dentro de ella NetBeans detectará que se está haciendo uso de
los WebService y agregará por defecto una sección de WebService, dentro de el se debería ver el
servicio en sí y los métodos que ya creamos

En los métodos podemos agregar respuestas Dummy para probar el funcionamiento de los
servicios en SoapUI

Crear Cliente

Agragar Cliente

Modificar Cliente

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Luego de esto Hacemos el Deploy del proyecto para que el TomCat pueda obtenerlo

TomCat Pide autentificación por lo que pedirá contraseña y usuario definidos por usuario al
momento de configurar el servidor, mientras se realiza el deploy se pedirá inicio de sesión

Nos movemos a SoapUI donde probaremos nuestro servicio de crud cliente.

Posterior al Deploy nos dirigimos al WSCliente y seleccionamos “Test Web Service”, esto nos
dirigirá a una pagina donde se nos desplegará la url con wsdl que podremos usar en Soap UI

Parte de la pagina con wsdl, esta url nos servirá para ingresarla en un proyecto SOAP y probar los
métodos del WebService

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Iniciamos SOAP UI y creamos un proyecto UI

Esto nos dará como resultado una serie de requests que nos deberían dar como respuesta los
mensajes que dejamos en los métodos.

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Ejemplo de Agregar Cliente

Luego de presionar Play

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Una vez tenemos los servicios funcionales nos dedicamos a crear la base de datos en Java para
almacenar datos de cliente

NetBeans, para que pueda hacer uso de los WebService y del TomCat requiere de una serie de
librerías

Además de esto, generalmente en tiempo de programación el mísmo IDE advertirá sobre la falta
de librerías

Luego de comprobar el uso de librerías dentro de NetBeans nos dirigimos a Servicios y nos
conectamos al servidor MYSQL

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Ya con la conexión hecha y el servidor corriendo creamos una nueva base de datos con el nombre
de “bdcliente”

En bdcliente seleccionamos ejecutar un comando y pegamos el script proporcionado en el


enunciado del ejercicio

Una vez pegado el script ejecutamos

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Y para comprobar que se creó la tabla correctamente nos dirigimos a la conexión en si,
desplegamos las tablas y quedaría algo así

A continuación necesitamos crear una clase extra que cumple el rol de conectar la base de datos
con el proyecto que ya tenemos hecho, esta clase tiene que estar dentro del package “services”

Esta clase tiene atributos que sirven de contraseña, nombre de usuario, el uso de los drivers y
finalmente una url, la cual dirige a la base de datos ya creada, esta URL es conseguible dentro de
las conexiones que ya hemos visto y debe estar dentro del atributo “DB_URL”

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Copiamos y pegamos la url hasta el “?” y tendríamos la clase conexión lista para ser usada

Metodo Consultar cliente, que busca dentro de la base de datos un cliente usando el id como
índice de búsqueda.

Connection con; Es una variable de conexión

PreparedStatement stmt; es para guardar instrucciones sql a usar a futuro

Tecnológico Nacional Iplacex


Semana 3/Unidad I

ResultSet rs; es para guardar los resultados de la instrucción

Se crea un Try / catch para controlar excepciones dentro del evento de consultar el cliente

Conexión c = new conexión(); es una instancia de clase propia dentro del proyecto creada para
utilizar las librerias java que conectan a la base de datos MySql con los Webservice.

conn = c.conectar(); se utiliza el método conectar dentro de la clase conexión con el usuario, pass,
y los parámetros que se van a utilizar

Se crea un variable String sql; para guardar la consulta sql

Y se le asigna una consulta donde pregunte con el signo “?” el rut del cliente que se quiere
desplegar los datos dentro de la BD

stmt = conn.prepareStatement(sql); se entrega ese sql y reconoce la pregunta

stmt.setInt(1, rut); el uno es la primera incognita en la consulta de sql y se le asigna RUT dentro de
esa incognita

rs = stmt.executeQuery(); Ejecuta simplemente la statement

List array = new ArrayList(); se instancia una lista y ahí se guardarán los eventos de la consulta

Cuando es solo un registro el que uno va a utilizar se utiliza un if para desplegar la salida, en caso
contrario se usaría un while para desplegar multiples registros.

if(rs.next()){

salida = rs.getString("NOMBRES") + "," + rs.getString("APELLIDOS") + "," +


rs.getInt("PROVEEDOR_COD");

Se crea un if para controlar que la base de datos no reconozca ninguna id de cliente como valida y
se despliega un mensaje de error en el caso correspondiente

if(salida.equals("")){

return "No existe cliente";

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Se cierra la conexión, la statement y finalmente se devuelve la salida la cual será o el registro de


cliente o el error de que no lo encontró

stmt.close();

conn.close();

return salida;

Metodo AgregarCliente

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Primero que nada dentro de los argumentos que van a ser ingresados se consideran como
@WebParam, y en este caso serían el rut, nombres, apellidos y el código de proveedor

@WebParam(name = "rut")int rut

@WebParam(name = "nombres")String nombres

@WebParam(name = "apellidos")String apellidos

@WebParam(name = "proveedorCodigo")int proveedorCodigo

Se crea un IF que valide que el cliente no exista, este toma el método ya creado y lo utiliza para
recorrer la base de datos en busca de un rut igual al ingresado

if(!(consultarCliente(rut).equals("No existe cliente")))

return "Cliente ya existe";

Y en caso contrario se ingresa al ELSE, el cual contendrá un try catch con similares características a
el ConsultarCliente

Try{

Conexion c =new Conexion(); Nuevamente se genera una conexión

conn = c.conectar(); Se utiliza el método conectar

String sql; Creación de String que contenga la consulta

sql="INSERT INTO CLIENTE(RUT, NOMBRES, APELLIDOS, PROVEEDOR_COD) VALUES (?,?,?,?)";

Asignación de valores mediante incognitas

stmt = conn.prepareStatement(sql); se asigna la consulta para ser utilizada

stmt.setInt(1, rut); asignación de rut a primer incognita

stmt.setString(2, nombres); asignación de nombres a segunda incognita

stmt.setString(3, apellidos); asignación de apellidos a tercera incognita

stmt.setInt(4, proveedorCodigo); asignación de proveedorCodigo a cuarta incognita

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Se cierra conexión, statement y se devuelve una salida nuevamente

Y finalmente un catch al terminar el TRY para controlar cualquier inconveniente dentro de la


operación

catch(Exception e)

return e.getMessage(); Mensaje de vuelta en caso de haber algun problema

Metodo Modificar cliente, que toma un id de cliente para modificar sus datos dentro de la BD

Tecnológico Nacional Iplacex


Semana 3/Unidad I

Parametros que se van a utilizar dentro del metodo

@WebParam(name = "rut")int rut,

@WebParam(name = "nombres")String nombres,

@WebParam(name = "apellidos")String apellidos,

@WebParam(name = "proveedorCodigo")int proveedorCodigo)

Nuevamente se utiliza un if para consultar si el cliente existe o no.

if((consultarCliente(rut).equals("No existe cliente")))

return "¡Cliente no existe!"; mensaje en caso de error

Luego de crear el ELSE y el TRY, dentro de este mísmo se utiliza el siguiente código

sql= "UPDATE CLIENTE SET NOMBRES=?, APELLIDOS=?, PROVEEDOR_COD=? WHERE RUT=?";

Esta vez se cambia de orden las variables y dejamos la id del cliente al final

stmt = conn.prepareStatement(sql); se asigna la statement para ser usada

stmt.setString(1, nombres); asignación de primer incognita a nombres

stmt.setString(2, apellidos); asignación de primer incognita a apellidos

stmt.setInt(3, proveedorCodigo); asignación de primer incognita a proveedorCodigos

stmt.setInt(4, rut); asignación de primer incognita a rut

stmt.executeUpdate(); Se utiliza esta sentencia ya que en la consulta SQL


utilizamos un UPDATE

salida = "Cliente modificado"; Se asigna el mensaje de modificación exitosa a la variable


salida

stmt.close(); Cierre de statement

conn.close(); Cierre de conexión

return salida; Retorno de salida

Tecnológico Nacional Iplacex


Semana 3/Unidad I

catch(Exception e) Creacion de el catch para control de exepciones

return e.getMessage(); Despliege de mensaje en caso de encontrar error

Clase conexión dentro del package services

En esta clase requerimos de imports para la correcta conexión a la base de datos

import java.sql.Connection;

import java.sql.DriverManager;

Dentro de la clase Conexión creamos un método llamado conectar

En este método creamos una serie de variables String que contendrán variable de conexión

String JDBC_DRIVER = "com.mysql.jdbc.Driver"; Señalamos el driver para la


conexión a MySql

String DB_URL = "jdbc:mysql://localhost:3306/bdcliente"; URL de la BD

Tecnológico Nacional Iplacex


Semana 3/Unidad I

String USER = "root"; Usuario de la BD

String PASS = ""; Pass de la BD

Connection conn =null; Para controlar la conexión correcta


a la BD se coloca como null por
defecto

Class.forName("com.mysql.jdbc.Driver"); Busca si existe dentro del proyecto,


en caso de no encontrarlo genera una exception

conn = DriverManager.getConnection(DB_URL,USER,PASS); Da la conexión a la BD con la url,


pass y usuario

return conn; Retorna la conexión

Catch al final del TRY para controlar cualquier evento externo que genere una exception

catch(Exception e)

return null;

Tecnológico Nacional Iplacex

También podría gustarte