ejb 3.0 tutor: ing. juan e. talavera horn 2010. definición la especificación ejb es una de las...

39
EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010

Upload: jacinta-molinar

Post on 02-Apr-2015

109 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

EJB 3.0

Tutor: Ing. Juan E. Talavera Horn

2010

Page 2: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Definición

La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise Edition.

Provee una manera estándar de implementar código de negocios que típicamente se encuentran en las aplicaciones empresariales

Page 3: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Historia

Fue inicialmente desarrollada por IBM en 1997 y luego adoptada por Sun Mycrosystems (EJB 1.0 y EJB 1.1) 98/99

En sep/2001 se lanza EJB 2.0 En nov/2003 se lanza EJB 2.1 En may/2006 se lanza EJB 3.0

Page 4: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Tipos EJB

Session BeansStateless Session BeansStateful Session Beans

Entity BeansContainer Managed PersistanceBean Managed Persistance

Message Driven Beans

Page 5: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Servicios del Contenedor

Comunicación remota Transacciones Control de concurrencia Eventos utilizando JMS Servicios JNDI Seguridad

Page 6: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Arquitectura

Cliente Desktop

AplicaciónWeb

Web Service

AplicaciónWeb

Servidor de aplicaciones

Web Service

SessionBeans

Webserviceclient

WebBrowser

HTTP

SOAP-WSDL HTTP

RMI

RMI

RMI

Local Method Invocation

SQL

Page 7: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

J2EE 1.4 Application Components

Page 8: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Problemas con EJB 2.x

InconvenientesRequiere implementar varias interfaces y

varios métodos innecesariosLas interfaces requieren la implementación de

EJBObject o EJBLocalObject e implementar varias excepciones innecesarias

El deployment descriptor es complejo y propenso a errores

La persistencia es compleja de desarrollar y administrar

Page 9: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Problemas con EJB 2.x

InconvenientesLos componentes EJB no son orientados a

objetos (no admite herencia)No es posible probar los componentes EJB

fuera del contenedor EJB, y hacer debugging dentro del contenedor es extremadamente impráctio

Encontrar e invocar un EJB es una tarea complicada. (JNDI)

Page 10: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

J5EE – Breve Presentación

Es la siguiente evolución de J2EE 1.4 Implementa los estándares más

actualizados en el mercado Es construido sobre la API J2SE 1.5 Incluye a la especificación EJB 3.0

Page 11: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Especificación EJB 3.0

ObjetivoCaracterísticas nuevasDefiniciónEjemplosConclusión

Page 12: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Objetivo

El objetivo de EJB 3.0 es simplificar el desarrollo de las aplicaciones Java y estandarizar la API de persistencia

Page 13: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Características nuevas

Elimina la necesidad de implementar interfaces y métodos innecesarios

Utiliza metadata annotations en vez del descriptor de despliegue

Los EJBs son clases Java normales (POJO) así como las interfaces

Page 14: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Qué es un EJB?

Es un componente JEE reusable y portable

Consisten en métodos que encapsulan la lógica de negocios

Puede ser invocado por una variedad de componentes internos y externos al JVM

Son desarrollados como POJOs y los metadata annotations definen cómo estos beans deben ser tratados.

Page 15: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Entity EJB

@Entity@Table(name = "EMPLOYEES")public class Employee implements java.io.Serializable { @Id @Column(name="EMPNO", primaryKey=true) private int empId;

private String eName; private double sal;

<...getters y setters>

}

Page 16: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Stateless Session EJBs

import javax.ejb.Stateless;

@Stateless(name="CalculateEJB")public class CalculateEJBBean implements CalculateEJB{

int value = 0;

public String incrementValue() {value++; return "value incremented by 1";

}}

Page 17: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Stateless Session EJBs (interfaz)

import javax.ejb.Local;

@Localpublic interface CalculateEJB{

public String incrementValue();}

Page 18: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Cliente

import javax.naming.Context;import javax.naming.InitialContext;

public class CalculateejbClient {

public static void main(String [] args){ Context context = new InitialContext(); CalculateEJB myejb =

(CalculateEJB)context.lookup("java:comp/env/ejb/CalculateEJB");

System.out.println ( myejb.incrementValue() ); }}

Page 19: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Cliente (DI)

public class CalculateejbClient {

@EJB CalculateEJB myejb;

public static void main(String [] args){

System.out.println ( myejb.incrementValue() ); }}

Page 20: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Dependency Injection (DI)

Page 21: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Reglas para DI

Solo desde clases cuyo ciclo de vida es administrado por el contenedor, como servlets, JSF backing bean, implementaciones de tags jsp, filters y listeners.

Se inyectan las referencias a las variables al instanciar la clase.

Page 22: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Stateful Session EJBs

Page 23: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Stateful Session EJBs

Page 24: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Stateful Session Bean Client

Page 25: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Session Beans

Una clase que implementa los métodos, anotada con @Stateless o @Stateful

Una o mas interfaces, anotadas con @Local, @Remote o @WebService

Page 26: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Múltiples Interfaces

Page 27: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Reglas para Session Beans Un session bean debe tener al menos una

interfaz La clase debe ser concreta. Implementa todos

los métodos definidos en las interfaces Debe tener un constructor sin argumentos Puede heredar otro session bean o cualquier

POJO Los métodos de negocio o life-cycle-callbacks

pueden definirse en la super clase Los métodos de negocio no deben comenzar

con “ejb”

Page 28: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Lifecycle callbacks

Page 29: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Pool de Stateless Session Beans

Page 30: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Ciclo de vida de Stateless EJBs

Crear instancias del bean con el constructor por defecto

Inyectar recursos al bean Poner las instancias en un pool Cuando un cliente invoca un método, sacar del

pool una instancia Ejecutar el método solicitado por el cliente Cuando termina la ejecución del método,

retornar la instancia al pool Cuando se requiera, eliminar algunas instancias

Page 31: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Sateful session beans

El contenedor se asegura que invocaciones sucesivas al mismo bean se hagansobre la misma instancia para un cliente dado.

Page 32: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Consideraciones para Stateful Beans Las variables de instancia deben ser tipos

primitivos o deben implementar la interfaz serializable.

Debe marcarse algún método con el annotation @Remove

Además de los callbacks PostConstruct y PreDestroy, se invocan a PrePassivate y PostActivate

Page 33: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Consideraciones para Stateful Beans No debe inyectarse un stateful bean en un

objeto sin estado como un stateless session bean, o un servlet.

Puede inyectarse un stateful bean en otro stateful bean.

Puede inyectarse un stateless bean en un stateful bean

Cuando no pueda inyectarse, debe usarse JNDI

Page 34: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Principales diferencias

Page 35: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Persistencia

Session Bean EntityManagerEntityBean SQL

insert intoalumno (…) values) (...)

Page 36: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

EntityBean

Page 37: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise
Page 38: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

EntityManager

Page 39: EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las varias APIs definidas en la Plataforma Java Enterprise

Stateful Bean desde Servlet

InitialContext ctx = new InitialContext();InscripcionesFacadeLocal inscFacade = (InscripcionesFacadeLocal)ctx.lookup("InscripcionesFacade/local");inscFacade.setAlumno(alumno);

request.getSession().setAttribute("beanInscFacade", inscFacade);

-----------------------------------------------------------

InscripcionesFacadeLocal inscFacade = (InscripcionesFacadeLocal)request.getSession().getAttribute("beanInscFacade");

inscFacade.removeMateria(materia.getCodigoMateria());