Actualizado el 25 de Diciembre del 2018 (Publicado el 22 de Diciembre del 2018)
798 visualizaciones desde el 22 de Diciembre del 2018
104,9 KB
14 paginas
Creado hace 10a (27/05/2013)
Java EE – Enterprise Beans (EJB)
Aplicaciones Web/Sistemas Web
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense Madrid
Material bajo licencia Creative Commons, Juan Pavón 2013
Enterprise Beans
Componentes Java que implementan la tecnología Enterprise
Java Beans (EJB)
Se ejecutan en un contenedor EJB (en un servidor de aplicaciones)
Implementan la lógica de negocio de la aplicación
Son reusables
Se pueden adaptar y configurar en el despliegue
El contenedor de EJB proporciona varios servicios
Ciclo de vida de los EJB
Gestión de la persistencia
Servicio de nombres
Mensajería asíncrona
Seguridad de acceso
Gestión de transacciones
Balanceo de carga
Juan Pavón - UCM 2012-13
Enterprise Beans
2
Arquitectura EJB
Cliente
Cliente
Cliente
Enterprise
Bean
Enterprise
Bean
Enterprise
Bean
Contenedor EJB
Servidor EJB
Juan Pavón - UCM 2012-13
Enterprise Beans
Servidor EJB
Entorno de ejecución
Gestión de procesos y threads
Gestión de recursos del sistema
Conexión a bases de datos
API de gestión
Juan Pavón - UCM 2012-13
Enterprise Beans
3
4
Contenedor de EJB
Entorno de ejecución de los EJBs
javax.ejb.EJBHome, javax.ejb.EJBObject
javax.ejb.SessionBean
d
a
d
i
r
u
g
e
s
,
s
e
n
o
i
c
c
a
s
n
a
r
T
SessionBean1
Descriptor de
despliegue
MessageBean
Descriptor de
despliegue
SessionBean2
Descriptor de
despliegue
Acceso a servicios remotos
Juan Pavón - UCM 2012-13
Enterprise Beans
i
C
i
c
l
o
d
e
v
d
a
,
r
e
c
u
r
s
o
s
,
g
e
s
t
i
ó
n
d
e
l
e
s
p
a
c
i
o
d
e
n
o
m
b
r
e
s
J
N
D
I
p
e
r
s
i
s
t
e
n
c
i
a
,
Clientes EJB
Pueden ser servlets o aplicaciones
El contenedor de EJBs puede controlar el acceso de los clientes
Para localizar los EJBs los clientes usan el Java Naming and
Directory Interface (JNDI)
El acceso a los EJBs se puede hacer remótamente con Java RMI
(Remote Method Invocation)
Juan Pavón - UCM 2012-13
Enterprise Beans
5
6
Enterprise Beans
Implementan la lógica de negocio
Tipos (EJB 3.1)
Enterprise Bean de Sesión
• Gestionan la lógica de negocio para un cliente
• Tipos
• Stateless Session Beans: no mantienen estado entre invocaciones
• Stateful Session Beans: guardan estado entre invocaciones de un mismo
cliente
• Singletons: una sola instancia que es compartida por muchos clientes
Enterprise Bean dirigido por Mensajes
• Oyente (listener) para un mensaje particular (generalmente a través
del API Java Message Service)
• No mantiene estado entre invocaciones
Entity Bean
• Representaciones de datos almacenados en una BD
• Recientemente se recomienda usar Java Persistence API (JPA)
Juan Pavón - UCM 2012-13
Enterprise Beans
Enterprise Beans
Gran parte de la funcionalidad la gestiona el contenedor
En ejecución, el contenedor intercepta todas las llamadas al EJB
Ejecuta código relacionado con la política de multi-threading,
transacciones, y seguridad
Llamará al método correspondiente
Realiza las tareas de limpieza correspondientes tras la llamada
Se define mediante declaraciones
En el desarrollo: anotaciones en el código
En descriptores de despliegue
Juan Pavón - UCM 2012-13
Enterprise Beans
7
8
Enterprise Beans
Persistencia
El almacenamiento de los datos de los beans
• Los puede gestionar el servidor: Container-Managed Persistence
• O el propio bean: Bean-Managed Persistence
Transacciones distribuidas
El servidor gestionará todas las transacciones
Se puede gestionar también directamente (hay que tener las ideas
claras)
Seguridad
Transmisión de datos por SSL/RMI
Autenticación de cliente y servidor con SSL
Controlo de acceso a objetos, métodos y servicios con ACLs (listas de
control de acceso)
Multithreading
Las políticas de multithreading a aplicar se declaran y el servidor se
encarga de ejecutarlas
El programador no tiene que ocuparse de este aspecto
Juan Pavón - UCM 2012-13
Enterprise Beans
9
Interfaces
Inicialmente los EJBs tenían que implementar varias interfaces
Desde la especificación 3.0 pueden ser objetos POJO pero con
anotaciones
Interfaz Home
Extiende la interfaz javax.ejb.EJBHome
Interfaz remota para crear, encontrar y eliminar beans
Interfaz Remote
Extiende la interfaz javax.ejb.EJBObject
Interfaz remota que define los métodos concretos que implementará el bean
Clase Bean
Extiende la clase javax.ejb.EnterpriseBean
Implementa la lógica de negocio
Juan Pavón - UCM 2012-13
Enterprise Beans
10
Funcionamiento
Naming Service
Cliente
RMI
RMI
Escrito por el programador
Implements
Invoca
Crea/Usa
Servidor
Home Interface
(Factory)
Contenedor
Remote
Interface
EJB Object
(Wrapper)
Enterprise
Java Bean
(Biz Logic)
Adaptado de jGuru (2000): Enterprise JavaBeans Fundamentals
Juan Pavón - UCM 2012-13
Enterprise Beans
11
Programación de EJB
Interfaz Remote
Extiende la interfaz javax.ejb.EJBObject
Interfaz remota que define los métodos concretos que implementará el
bean
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Cliente extends EJBObject {
public Name getNombre() throws RemoteException;
public void setNombre(String nombre) throws RemoteException;
public Address getEmail() throws RemoteException;
public void setEmail(String email) throws RemoteException;
}
Juan Pavón - UCM 2012-13
Enterprise Beans
12
Programación de EJB
Interfaz Home
Extiende la interfaz javax.ejb.EJBHome
Interfaz remota para crear, encontrar y eliminar beans
Se genera automáticamente la clase que la implementa
import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import java.rmi.RemoteException;
public interface ClienteHome extends EJBHome {
public Cliente create(Integer idCliente)
throws RemoteException, CreateException;
public Cliente findByPrimaryKey(Integer idCliente)
throws RemoteException, FinderException;
public Enumeration findByNombre(String nombre)
throws RemoteException, FinderException;
}
Juan Pavón - UCM 2012-13
Enterprise Beans
13
Programación de EJB
Clase Bean
Extiende la interfaz javax.ejb.EJBHome
Interfaz remota para crear, encontrar y eliminar beans
import javax.ejb.EntityBean;
public class ClienteBean implements EntityBean {
String nombre;
String email;
public String getNombre() {
return nombre;
}
public void setNombre (String nombre) {
this.nombre = nombre;
}
public Address getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
Juan Pavón - UCM 2012-13
}
Enterprise Beans
14
Entorno de trabajo
Para desarrollar, Eclipse o Netbeans
Como servidor de aplicaciones que tenga contenedor de EJBs
JBoss: http://www.jboss.org
• Hay una versión para desarrolladores: JBoss Developer Studio (Eclipse
+ JBoss Tools)
Glassfish: https://glassfish.java.net/es/
Una comparativa interesante:
http://antoniogoncalves.org/2011/10/20/o-java-ee-6-application-servers-where-art-thou/
Bases de datos
Apache Derby: http://db.apache.org/derby/
H2: http://www.h2database.com
Juan Pavón - UCM 2012-13
Enterprise Beans
15
Primera aplicación EJB con Eclipse y JBoss
Una posibilidad es instalar JBoss Developer Studio
Otra es configurar Eclipse para trabajar con JBoss Tools
Help Eclipse Marketplace
Buscar: JBoss
Seleccionar JBoss Tools para la versión de eclipse actual (Juno)
• Se pueden seleccionar únicamente Java Development Tools y JBoss
AS Tools
• Otros plugins se podrán instalar posteriormente si fueran necesarios
Al acabar, reinicializar eclipse
Como BD se puede instalar Derby, muy eficiente y escrita en Java
Instalar los plugins Derby 10 Core Plug-in y Derby 1.0 UI
• Descargarlos de http://db.apache.org/derby/derby_downloads.html
• Y descomprimirlos en la carpeta de instalación de eclipse
Alternativa: Eclipse Data Tools Platform
http://www.vogella.com/articles/EclipseDataToolsPlatform/article.html
Juan Pavón - UCM 2012-13
Enterprise Beans
16
Primera aplicación EJB con Eclipse y JBoss
Instalar JBoss
http://sourceforge.net/projects/jboss/files/JBoss/JBoss-6.0.0.Final/
jboss-as-distribution-6.0.0.Final.zip/download
Añadir el servidor JBoss en eclipse
En Servers o File New Other Server Server
Añadir el JBoss AS 6.x
• Indicar el directorio donde se ha descomprimido el JBoss
• Para arrancar el servidor, seleccionarlo y con el menú contextual
elegir Start
Crear un nuevo proyecto EJB
New EJB Project
• Indicar que se usará el servidor JBoss en Target Runtime
Crear una clase Java que será el primer EJB
Crear un paquete (es.ucm.jpavon.ejb)
En ejbModule crear el primer EJB con New Session Bean (EJB 3.x)
Juan Pavón - UCM 2012-13
Enterprise Beans
17
Primera aplicación EJB con Eclipse y JBoss
package es.ucm.jpavon.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
Indica que el POJO es un
Bean stateless para que el
contenedor lo trate como
un EJB
@Remote
@Stateless
public class PrimerBean implements PrimerBeanRemote {
public String saluda(String nombre) {
return "Hola " + nombre;
Al haber declarado @Remote
eclipse añade la interfaz
}
}
Se genera al
haber declarado
la clase como
Remote
package es.ucm.jpavon.ejb;
import javax.ejb.Remote;
@Remote
public interface PrimerBeanRemote {
public String saluda(String nombre);
}
Hay que declarar los
métodos que vaya a
ofrecer el Bean
Juan Pavón - UCM 2012-13
Enterprise Beans
18
Primera aplicación EJB – Cliente
El cliente puede ser otra aplicación
Crear en eclipse un nuevo proyecto Java
Para que pueda usar la configuración del proyecto anterior (y
acceder a las librerías correspondientes de EJB)
En el proyecto, seleccionar Build Path Configure Build Path
Pestaña Projects, botón Add, seleccionar el anterior
Crear la clase del programa cliente
Ejecutar como una ap
Comentarios de: Java EE - Enterprise Beans (EJB) (0)
No hay comentarios