EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las...
-
Upload
jacinta-molinar -
Category
Documents
-
view
109 -
download
0
Transcript of EJB 3.0 Tutor: Ing. Juan E. Talavera Horn 2010. Definición La especificación EJB es una de las...
![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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/1.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/2.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/3.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/4.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/5.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/6.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/7.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/8.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/9.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/10.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/11.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/12.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/13.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/14.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/15.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/16.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/17.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/18.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/19.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/20.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/21.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/22.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/23.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/24.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/25.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/26.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/27.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/28.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/29.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/30.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/31.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/32.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/33.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/34.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/35.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/36.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/37.jpg)
![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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/38.jpg)
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.](https://reader035.fdocuments.es/reader035/viewer/2022062312/551ce2a75503463f7a8b4c87/html5/thumbnails/39.jpg)
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());