Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE



Documentos relacionados
Ejercicio 6. Persistencia con JPA - Sistema SGA. Java EE. Ejercicio 6. Persistencia con JPA Sistema SGA. Curso de Java EE

Universidad ORT - Arquitectura de Software. Requisitos

Requisitos. Universidad ORT Arquitectura de Software

1. Posicionarse en la vista Services y seleccionar el ítem Servers. En el menú contextual del Mouse seleccionar la opción Add Server

Introducción Descripción del servicio

Introducción Entorno de ejecución Referencias Descripción del servicio

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Componentes Distribuidos EJBs. Ing. Cesar Julio Bustacara Medina

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa

Desarrollo de Sistemas Software Basados en Servicios y Componentes

RUEDA TORRES DULCE CAROLINA 3CM2 JAX-WS WEB SERVICES WEB APPLICATION DEVELOPMENT

Ejercicio 7. Hibernate Tools y JPA en Eclipse IDE. Java EE. Ejercicio 7. Instalación Hibernate Tools. Curso de Java EE

Práctica 4: Java Remote Method Invocation (RMI)

El primer paso a realizar es crear la referencia JNDI para el origen de datos en el servidor local TomCat.

RMI [Remote Method Invocation]

1. Visión general de RMI

Experto Universitario Java Enterprise Spring

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

WEB SERVICES CREACIÓN DEL SERVICIO

Desarrollo de Servicios Web con JBuilder

Introducción a JAX-WS Web Services

Práctica 2: Java Remote Method Invocation (RMI)

Agosto. Un primer JSP. Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / j a v a. p h p ]

Tutorial básico del entorno de desarrollo Eclipse.

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

ATLAS MANUAL DE INTEGRACIÓN

Modelo de Objetos Distribuidos

Qué es Glassfish? Características de Glassfish (2) Características de Glassfish

Ingeniería del Software Arquitectura Física en 3 niveles

Tutorial Servicios Web

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Desarrollo de Software con

1. Creación del repositorio

Ejercicio 1. Instalación de JDK, Eclipse, GlassFish y MySql. Java EE. Ejercicio 1. Instalación de JDK, Eclipse, GlassFish y MySql

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Universidad ORT - Arquitecturas de Software sobre plataforma JEE Web Services (parte 1)

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

JAVA NATIVE INTERFACE (JNI) INVOCANDO C/C++ DESDE JAVA

Universidad Tecnológica del Valle del Mezquital. Desarrollo de Aplicaciones Web. Manual JSP

Java EE Enterprise Beans (EJB)

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Escrito por Renan Huanca Sábado, 28 de Febrero de :46 - Actualizado Sábado, 28 de Febrero de :09

Interfaces gráficas I

Curso de Android con Java

Manual de JSP con Eclipse y ApacheTomcat o JBoss

Comunicación utilizando la biblioteca en JAVA para SADE

Curso de Java EE Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1

Manual del Protocolo XML-RPC de Mensajería Negocios

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Ficheros de acceso aleatorio

Java 8 FlatMap y Streams

Curso de Spring Framework

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Taller: Introducción a Windows Communication Foundation

GUIA DE LABORATORIO N 8 A(Netbeans-java,Glassfish)

Java Optional ifpresent y como utilizarlo

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

WINDOWS : TERMINAL SERVER

WINDOWS : COPIAS DE SEGURIDAD

Java. Mtro. Manuel Suárez Gutiérrez

J2SE , Grupo Salenda, S.L.

FRAMEWORK SPRING EN UNA APLICACIÓN WEB

Utilización de J2ME sobre Linux en plataformas embebidas

Benemérita Universidad Autónoma del Estado de Puebla

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEB CON DOCUMENTUM

1. Manejo de memoria estática 2. Manejo de memoria dinámica

INDICE. Dirección General de Impuestos Internos Guía de Instalación de Sistema DET (Windows Vista, Seven)

SISTEMA PERUANO DE INFORMACIÓN JURÍDICA

Pruebas de unidad con JUnit

Video 2: Cómo Crear una plantilla para Generar Procedimientos Almacenados

Descarga, instalación y uso de herramientas:

Creación un instalador con Visual Studio.NET. Irene Sobrón. Ingeniero de Telecomunicaciones por la Escuela Técnica Superior de Bilbao

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

ESCUELA POLITECNICA NACIONAL

Manual de Usario de XEDIGenerator Instalación

Instalación y configuración servidor WDS

Práctica 5: Common Object Request Broker Architecture CORBA

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java

Artículos técnicos Grupo Danysoft: Soporte de Servidores de Aplicaciones con JBuilder

Instalación de OPUS PLANET en red

Uso de Firma Digital en la Oficina Virtual del Consejo de Seguridad Nuclear

Manual de Instalación SICO MANUAL DE INSTALACION SICO - SOFTWARE DE GESTION BASE DE DATOS SQL SERVER

INSTALACIÓN DE MICROSOFT ISA SERVER 2006 Y CONFIGURACIÓN DE ACCESO VPN POR MEDIO DE POINT-TO-POINT TUNNELING PROTOCOL

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEBSERVICE

Tutorial 1: Desarrollo de un plugin

Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java

Servidor de aplicaciones Jboss EAP 6.3.0

Clase Práctica Nº 1 ED 2015

Introducción a la Programación Orientada a Objetos

Mi primer servidor. Fernando Fernández Consultor Preventa HP ISS

Uso de excepciones en Java

PROGRAMACION DISTRIBUIDA

Luis Eduardo Peralta Molina Sistemas Operativos Instructor: José Doñe Como crear un Servidor DHCP en ClearOS


LABORATORIO 9. Replicación de base de datos en SQL Server

Desarrollo de Aplicaciones para Android

Objetivo: Informar al alumno los elementos que componen el entorno del programa Microsoft Office PowerPoint.

Transcripción:

Java EE Ejercicio 4 EJB Sesión Sistema SGA

Objetivo del Ejercicio El objetivo del ejercicio es agregar un EJB de Sesión a nuestro proyecto SGA (Sistema de Gestión de Alumnos), el cual desarrollaremos a lo largo del curso.. Al finalizar deberemos observar el siguiente resultado: 2

Arquitectura Java EE A lo largo del curso vamos a ir agregando componentes a nuestro Sistema SGA (Sistema de Gestión de Alumnos), el cual se encargará de administrar un catálogo de personas. Esta aplicación es una aplicación Web, pero puede tener clientes remotos y Web Services, la cual nos permitirá administrar un catálogo de Personas. Vamos a iniciar con la siguiente arquitectura: JNDI Cliente Cliente (Main) PersonaService Remote Componente Servidor PersonaServiceRemote PersonaServiceImpl Interface Remota Persona Cliente del EJB EJB Remoto Implementación EJB 3

Paso 1. Creación Proyecto SGA Java EE Creamos un nuevo proyecto SGA Java EE 4

Paso 1. Creación Proyecto SGA Java EE (cont) Creamos un nuevo proyecto SGA Java EE 5

Paso 1. Creación Proyecto SGA Java EE (cont) Creamos un nuevo proyecto SGA Java EE 6

Paso 1. Creación Proyecto SGA Java EE (cont) Creamos un nuevo proyecto sga-jee. 7

Paso 1. Creación Proyecto SGA Java EE (cont) Verificamos que se haya creado correctamente nuestro proyecto: 8

Paso 2. Agregamos librerías Maven Abrimos nuestro archivo pom.xml y agregamos el siguiente contenido después de la etiqueta de versión. La ruta del archivo.jar mostrado, dependerá de la ruta de instalación de Glassfish, por lo que la deberán adecuar a su ruta de instalación: : <properties> <endorsed.dir>${project.build.directory/endorsed</endorsed.dir> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <glassfish.embedded-static-shell.jar> C:\appServers\glassfish3.1.2\glassfish3\glassfish\lib\embedded\glassfish-embedded-static-shell.jar </glassfish.embedded-static-shell.jar> </properties> 9

Paso 2. Agregamos librerías Maven (cont) En nuestro archivo pom.xml agregamos el elemento dependencies antes del cierre del elemento project: 10

Paso 2. Agregamos librerías Maven (cont) Agregamos las siguientes librerías entre los tags de dependencies. <dependency> <groupid>org.glassfish.extras</groupid> <artifactid>glassfish-embedded-static-shell</artifactid> <version>3.1</version> <scope>system</scope> <systempath>${glassfish.embedded-static-shell.jar</systempath> </dependency> <dependency> <groupid>javax</groupid> <artifactid>javaee-api</artifactid> <version>6.0</version> <scope>provided</scope> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.10</version> </dependency> 11

Paso 2. Agregamos librerías Maven (cont) Agregamos el siguiente plug-in para obtener las librerías de glassfish que vamos a utilizar. Lo agregamos antes de cerrar el tag de </project> <pluginrepositories> <pluginrepository> <id>maven2-repository.dev.java.net</id> <name>java.net Repository for Maven</name> <url>http://download.java.net/maven/glassfish/</url> </pluginrepository> </pluginrepositories> 12

Paso 2. Agregamos librerías Maven (cont) El resultado debe ser similar al de la siguiente figura: 13

Paso 3. Creación de la clase Persona Creamos una clase Persona: 14

Paso 3. Creación de la clase Persona (cont) Creamos una clase Persona: 15

Paso 3. Creación de la clase Persona (cont) package mx.com.gm.sga.domain; import java.io.serializable; public class Persona implements Serializable { private static final long serialversionuid = 1L; private int idpersona; private String nombre; private String apepaterno; private String apematerno; private String email; private String telefono; public Persona() { public void setnombre(string nombre) { this.nombre = nombre; public String getapepaterno() { return apepaterno; public void setapepaterno(string apepaterno) { this.apepaterno = apepaterno; public String getapematerno() { return apematerno; public Persona(int idpersona) { this.idpersona = idpersona; public Persona(int idpersona, String nombre, String apepaterno, String apematerno, String email, String telefono) { this.idpersona = idpersona; this.nombre = nombre; this.apepaterno = apepaterno; this.apematerno = apematerno; this.email = email; this.telefono = telefono; public int getidpersona() { return idpersona; public void setidpersona(int idpersona) { this.idpersona = idpersona; public String getnombre() { return nombre; public void setapematerno(string apematerno) { this.apematerno = apematerno; public String getemail() { return email; public void setemail(string email) { this.email = email; public String gettelefono() { return telefono; public void settelefono(string telefono) { this.telefono = telefono; @Override public String tostring() { return "Persona [idpersona=" + idpersona + ", nombre=" + nombre + ", apepaterno=" + apepaterno + ", apematerno=" + apematerno + ", email=" + email + ", telefono=" + telefono + "]";

Paso 4. Creación de la interfaz PersonaServiceRemote Creamos una Interfaz PersonaServiceRemote: 17

Paso 4. Creación de la interfaz PersonaServiceRemote (cont) Creamos una interfaz PersonaServiceRemote: 18

Paso 4. Creación de la interfaz PersonaServiceRemote (cont) Creamos una interfaz PersonaServiceRemote. Esta interfaz será de tipo remoto, por lo que podrá ser accedida vía RMI: package mx.com.gm.sga.servicio; import java.util.list; import javax.ejb.remote; import mx.com.gm.sga.domain.persona; @Remote public interface PersonaServiceRemote { public List<Persona> listarpersonas(); public Persona encontrarpersonaporid(persona persona); public Persona econtrarpersonaporemail(persona persona); public void registrarpersona(persona persona); public void modificarpersona(persona persona); public void eliminarpersona(persona persona); 19

Paso 5. Creación de la clase PersonaServiceImpl Creamos una clase llamada PersonaServiceImpl: 20

Paso 5. Creación de la clase PersonaServiceImpl (cont) Creamos una clase Java llamada PersonaServiceImpl: 21

Paso 5. Creación de la clase PersonaServiceImpl (cont) Agregamos el siguiente código a nuestra clase PersonaServiceImpl: package mx.com.gm.sga.servicio; import java.util.arraylist; import java.util.list; import javax.ejb.stateless; import mx.com.gm.sga.domain.persona; @Stateless public class PersonaServiceImpl implements PersonaServiceRemote { public List<Persona> listarpersonas() { List<Persona> personas = new ArrayList<Persona>(); personas.add(new Persona(1, "Juan", "Perez", "Juarez", "jperez@mail.com", "55661213")); personas.add(new Persona(1, "Martha", "Suarez", "Jimenez", "jperez@mail.com", "55661213")); return personas; public Persona encontrarpersonaporid(persona persona) { return null; public Persona econtrarpersonaporemail(persona persona) { return null; public void registrarpersona(persona persona) { public void modificarpersona(persona persona) { public void eliminarpersona(persona persona) { 22

Paso 6. Creación de la clase ClientePersonaService Creamos una clase llamada ClientePersonaService: 23

Paso 6. Creación de la clase ClientePersonaService (cont) Creamos una clase Java llamada ClientePersonaService: 24

Paso 6. Creación de la clase ClientePersonaService(cont) Agregamos el siguiente código a nuestra clase ClientePersonaService: package mx.com.gm.sga.cliente; import java.util.list; import javax.naming.context; import javax.naming.initialcontext; import javax.naming.namingexception; import mx.com.gm.sga.domain.persona; import mx.com.gm.sga.servicio.personaserviceremote; public class ClientePersonaService { public static void main(string[] args) { try { System.out.println("Iniciando llamada al EJB desde el cliente\n"); Context jndi = new InitialContext(); PersonaServiceRemote personaservice = (PersonaServiceRemote) jndi.lookup("java:global/sga-jee/personaserviceimpl!mx.com.gm.sga.servicio.personaserviceremote"); List<Persona> personas = personaservice.listarpersonas(); for (Persona persona : personas) { System.out.println(persona); System.out.println("\nFin llamada al EJB desde el cliente"); catch (NamingException e) { e.printstacktrace(); 25

Paso 7. Empaquetamiento y despliegue EJB Empaquetamos el EJB en un archivo.jar utilizando el comando Maven Install. Nota: Debe estar detenido el servidor GlassFish, si es que se tienen pruebas unitarias con GlassFish embebido: 26

Paso 7. Empaquetamiento y despliegue EJB (cont) Se debió haber generado el archivo sga-jee-1.0.jar 27

Paso 7. Empaquetamiento y despliegue EJB (cont) Iniciamos el servidor glassfish: 28

Paso 7. Empaquetamiento y despliegue EJB (cont) Vamos a la consola de administración de GlassFish: 29

Paso 7. Empaquetamiento y despliegue EJB (cont) Vamos a la consola de administración de GlassFish: 30

Paso 7. Empaquetamiento y despliegue EJB (cont) Vamos a la sección de Applications y damos clic en deploy: 31

Paso 7. Empaquetamiento y despliegue EJB (cont) Vamos a la sección de Applications y damos clic en deploy: 32

Paso 7. Empaquetamiento y despliegue EJB (cont) Seleccionamos el archivo.jar generado anteriormente: 33

Paso 7. Empaquetamiento y despliegue EJB (cont) Seleccionamos el archivo.jar generado anteriormente. El nombre de la aplicación es sga-jee: 34

Paso 7. Empaquetamiento y despliegue EJB (cont) Si el despliegue de nuestro EJB funcionó correctamente, deberemos observar la siguiente pantalla: 35

Paso 8. Ejecución del ClientePersonaService Una vez desplegado el EJB y con el servidor GlassFish iniciado, podemos realizar la petición del EJB por medio de nuestra clase ClientePersonaService. Ejecutamos la clase (Run as -> Java Application) y debemos observar el siguiente resultado: 36

Arquitectura Java EE En nuestra arquitectura, vamos a agregar la interface Local de nuestro EJB, ya que nuestros componentes Web que crearemos más adelante se encontrarán en el mismo servidor, de esta manera evitaremos llamadas remotas innecesarias. Tanto la interfaz remota y la interfaz local expondrán los mismos métodos: CDI Cliente Web Cliente Web PersonaService (Local) Componente Servidor PersonaService PersonaServiceImpl Interface Local Persona Cliente Web (Mismo Servidor) EJB Local Implementación EJB 37

Paso 9. Creación de la interfaz PersonaService Creamos una Interfaz PersonaService que será de tipo Local: 38

Paso 9. Creación de la interfaz PersonaService (cont) Creamos una interfaz PersonaService: 39

Paso 9. Creación de la interfaz PersonaService (cont) Creamos una interfaz PersonaService. Esta interfaz será de tipo local: package mx.com.gm.sga.servicio; import java.util.list; import javax.ejb.local; import mx.com.gm.sga.domain.persona; @Local public interface PersonaService { public List<Persona> listarpersonas(); public Persona encontrarpersonaporid(persona persona); public Persona econtrarpersonaporemail(persona persona); public void registrarpersona(persona persona); public void modificarpersona(persona persona); public void eliminarpersona(persona persona); 40

Paso 10. Modificación de la clase PersonaServiceImpl Modificamos nuestra clase PersonaServiceImpl para que implemente tanto la interfaz remota como la local: public class PersonaServiceImpl implements PersonaServiceRemote, PersonaService { 41

Paso 11. Creación clase PersonaServiceTest Creamos una prueba unitaria PersonaServiceTest. 42

Paso 11. Creación clase PersonaServiceTest (cont) Creamos una prueba unitaria PersonaServiceTest. 43

Paso 11. Creación clase PersonaServiceTest (cont) Agregamos el siguiente código a la prueba unitaria: package test; import static org.junit.assert.*; import java.util.list; import javax.ejb.embeddable.ejbcontainer; import mx.com.gm.sga.domain.persona; import mx.com.gm.sga.servicio.personaservice; import org.junit.before; import org.junit.test; public class PersonaServiceTest { private PersonaService personaservice; @Before public void setup() throws Exception { EJBContainer contenedor = EJBContainer.createEJBContainer(); personaservice = (PersonaService) contenedor.getcontext().lookup("java:global/classes/personaserviceimpl!mx.com.gm.sga.servicio.personaservice"); @Test public void testejbpersonaservice() { System.out.println("Iniciando test EJB PersonaService"); asserttrue(personaservice!= null); assertequals(2, personaservice.listarpersonas().size()); System.out.println("El no. de personas es igual a:" + personaservice.listarpersonas().size()); this.desplegarpersonas(personaservice.listarpersonas()); System.out.println("Fin test EJB PersonaService"); private void desplegarpersonas(list<persona> personas) { for (Persona persona : personas) { System.out.println(persona); 44

Paso 12. Ejecución de la clase PersonaServiceTest Antes de ejecutar la prueba, debemos detener el servidor GlassFish si es que estuviera en modo Start, ya que el contenedor embebido utiliza la misma JVM. Al ejecutar la prueba unitaria deberemos observar: 45

www.globalmentoring.com.mx Pasión por la tecnología Java Derechos Reservados Global Mentoring 2012