Vous êtes sur la page 1sur 21

Por el experto: Ing.

Ubaldo Acosta

www.globalmentoring.com.mx
•El objetivo del ejercicio es modificar el cliente Jax-RS para poder acceder correctamente al Web Service
de listadoPersonas proporcionando las credenciales respectivas (usuario y password) al sistema SGA.
Esta figura es el resultado es similar al siguiente:

www.globalmentoring.com.mx
Este es el Diagrama de Clases del Ejercicio, donde se pueden observar la Arquitectura de nuestro Sistema:

Cliente
REST Web http
Service

www.globalmentoring.com.mx
En caso que no tengamos abierto el proyecto ClienteSgaRestWs
lo abrimos:

www.globalmentoring.com.mx
En caso que no tengamos abierto el proyecto ClienteSgaRestWs
lo abrimos:

www.globalmentoring.com.mx
Copiamos el proyecto para ponerlo en la nueva ruta:

www.globalmentoring.com.mx
Copiamos el proyecto para ponerlo en la nueva ruta:

www.globalmentoring.com.mx
Cerramos el proyecto anterior y dejamos solo el nuevo:

www.globalmentoring.com.mx
Agregamos la clase PruebaRestWS.java:

www.globalmentoring.com.mx
Agregamos la clase PruebaRestWS.java:

www.globalmentoring.com.mx
Archivo PruebaRestWS.java: Dar click para ir al código
package test;

import domain.Persona;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;

public class PruebaRestWS {

public static void main(String[] args) {

HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder()


.nonPreemptive()
.credentials("admin", "admin")
.build();

ClientConfig clientConfig = new ClientConfig();


clientConfig.register(feature) ;

Client cliente = ClientBuilder.newClient(clientConfig);

WebTarget webTarget = cliente.target("http://localhost:8080/SgaJeeWeb/webservice").path("/personas");


//Proporcionamos un idPersona valido
Persona persona = webTarget.path("/25").request(MediaType.APPLICATION_XML).get(Persona.class);
System.out.println("Persona recuperada: " + persona);
}
} www.globalmentoring.com.mx
Ejecutamos la clase PruebaRestWS.java. Nota: La aplicación
SgaJeeWeb y el servidor Glassfish ya deben estar iniciados para que la
prueba funcione:

www.globalmentoring.com.mx
Ejecutamos la clase PruebaRestWS.java:

www.globalmentoring.com.mx
Archivo TestPersonaServiceRS.java: Dar click para ir al código
package test;

import java.util.List;
import domain.Persona;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;

public class TestPersonaServiceRS {

//Variables que usaremos


private static final String URL_BASE = "http://localhost:8080/SgaJeeWeb/webservice";
private static Client cliente;
private static WebTarget webTarget;
private static Persona persona;
private static List<Persona> personas;
private static Invocation.Builder invocationBuilder;
private static Response response;

www.globalmentoring.com.mx
Archivo TestPersonaServiceRS.java: Dar click para ir al código
public static void main(String[] args) {

HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder()


.nonPreemptive()
.credentials("admin", "admin")
.build();

ClientConfig clientConfig = new ClientConfig();


clientConfig.register(feature);

cliente = ClientBuilder.newClient(clientConfig);

//Leer una persona (metodo get)


webTarget = cliente.target(URL_BASE).path("/personas");
//Proporcionamos un idPersona valido
persona = webTarget.path("/25").request(MediaType.APPLICATION_XML).get(Persona.class);
System.out.println("Persona recuperada: " + persona);

//Leer todas las personas (metodo get con readEntity de tipo List<>)
personas = webTarget.request(MediaType.APPLICATION_XML).get(Response.class).readEntity(new
GenericType<List<Persona>>() {
});
System.out.println("\nPersonas recuperadas:");
imprimirPersonas(personas);

www.globalmentoring.com.mx
Archivo TestPersonaServiceRS.java: Dar click para ir al código
//Agregar una persona (metodo post)
Persona nuevaPersona = new Persona();
nuevaPersona.setNombre("Carlos");
nuevaPersona.setApellidoPaterno("Miranda");
nuevaPersona.setApellidoPaterno("Ramirez");
nuevaPersona.setEmail("cmiranda@mail.com");
invocationBuilder = webTarget.request(MediaType.APPLICATION_XML);
response = invocationBuilder.post(Entity.entity(nuevaPersona, MediaType.APPLICATION_XML));

System.out.println("");
System.out.println("Estatus respuesta agregar:" + response.getStatus());
//Recuperamos a la persona recien agregada para despues modificarla y al final eliminarla
Persona personaRecuperada = response.readEntity(Persona.class);
System.out.println("Persona agregada: " + personaRecuperada);

//Modificar una persona (metodo put)


//persona recuperada anteriormente
Persona personaModificar = personaRecuperada;
personaModificar.setApellidoMaterno("CambioApeMat");
String pathId = "/" + personaModificar.getIdPersona();
invocationBuilder = webTarget.path(pathId).request(MediaType.APPLICATION_XML);
response = invocationBuilder.put(Entity.entity(personaModificar, MediaType.APPLICATION_XML));

System.out.println("");
System.out.println("Estatus respuesta modificar:" + response.getStatus());
System.out.println("Persona modificada: " + response.readEntity(Persona.class));

www.globalmentoring.com.mx
Archivo TestPersonaServiceRS.java: Dar click para ir al código
//Eliminar una persona
// persona recuperada anteriormente
Persona personaEliminar = personaRecuperada;
String pathEliminarId = "/" + personaEliminar.getIdPersona();
invocationBuilder = webTarget.path(pathEliminarId).request(MediaType.APPLICATION_XML);
response = invocationBuilder.delete();

System.out.println("");
System.out.println("Estatus respuesta eliminar: " + response.getStatus());
System.out.println("Persona Eliminada: ");
}

private static void imprimirPersonas(List<Persona> personas) {


for (Persona persona : personas) {
System.out.println("Persona:" + persona);
}
}
}

www.globalmentoring.com.mx
Ejecutamos la clase TestPersonaServiceRS.java. Nota: La aplicación
SgaJeeWeb y el servidor Glassfish ya deben estar iniciados para que la
prueba funcione: :

www.globalmentoring.com.mx
Ejecutamos la clase TestPersonaServiceRS.java:

www.globalmentoring.com.mx
Con este ejercicio hemos modificado el cliente REST Web Service para
poder acceder al Servicio Web de Personas del proyecto SgaJeeWeb.

Creamos una clase de prueba por separado y también modificamos la


prueba que ya teníamos creada con el objetivo de comprobar que hemos
podido acceder correctamente al Servicio Web, el cual a su vez también es
un EJB de tipo Stateless.

www.globalmentoring.com.mx
Por: Ing. Ubaldo Acosta

www.globalmentoring.com.mx