SlideShare una empresa de Scribd logo
1 de 61
EJB 3.0
JSR 220
Emmerson Miranda
SCJP 1.5
SCWCD J2EE 1.5
Blog : http://emmersonmiranda.blogspot.com/
Introducción
Emmerson Miranda
SCJP 1.5
SCWCD J2EE 1.5
Blog : http://emmersonmiranda.blogspot.com/
 Uso de anotaciones para anotar los EJB, esto reduce el número de clases
e instancias necesarias, además de eliminar la necesidad de crear
descriptores de despliegue.
 “configuration by exception” es decir proporciona especificaciones por
defecto para las opciones mas comunes.
 Encapsulación de los accesos JNDI usando los mecanismos de
anotaciones, inyección de dependencias y búsquedas simples.
 Las interfaces de negocio requeridas para los beans de session ahora se
basan en POJIs (Plain Old Java Interfaces)
 Simplificación de la persistencia de entidades mediante JPA.
 Eliminación de todas las interfaces requeridas para las entidades
persistentes.
 Uso de anotaciones y descriptores XML para las entidades persistentes
(tablas y sus relaciones)
 Reduce la necesidad de uso de las excepciones checked.
 Son interfaces entre nuestros componentes y las funcionalidades de
bajo nivel de un plataforma específica (que soporta el componente).
 Todo componente web, enterprise bean, application client; necesita ser
ensamblado como un modulo JEE y desplegado en el contenedor antes
de ser ejecutado.
 El proceso de ensamblado requiere especificar la configuración para
cada componente mediante ficheros XML.
 Configurando el contenedor se personaliza el soporte proporcionado
por el servidor JEE, incluyendo servicios como seguridad,
administración de transacciones, búsquedas JNDI y conectividad
remota.
 El modelo de seguridad Java EE nos permite configurar los
componentes Web o EJB de para que puedan ser utilizados por
usuarios autorizados.
 El modelo transaccional nos permite especificar las relaciones entre los
métodos para realizar una transacción, de esta manera múltiples
métodos pueden ser tratados como una unidad.
 JNDI proporciona una interfaz unificada para la búsqueda de múltiples
servicios empresariales, de esta manera los diversos componentes
pueden acceder a estos servicios.
 El modelo de conectividad remota administra las comunicaciones a
bajo nivel entre los clientes y los beans empresariales.
 Los contenedores también manejan los servicios no-configurables
como los :
 Beans empresariales
 Ciclo de vida de los servlets
 Pool de conexiones a bases de datos
 Persistencia de datos
 Acceso a las APIS de la plataforma Java EE
 Servidor EE y contenedores
 Java EE Server
 Proporciona contenedores Web y EJB
 EJB Container
 Administra la ejecución de los beans empresariales para aplicaciones Java EE
 Web Container
 Administra la ejecución de los servlets y las JSP para aplicaciones Java EE
 Application client Container
 Administra la ejecución de los componentes de la aplicación cliente (en el cliente)
 Applet Container
 Administra la ejecución de los applets, consiste en un navegador con el plug-in de
Java
 APIs de la plataforma J2EE
Aplicaciones distribuidas
Multicapa
Emmerson Miranda
SCJP 1.5
SCWCD J2EE 1.5
Blog : http://emmersonmiranda.blogspot.com/
 La plataforma Java EE usa el modelo de aplicaciones distribuidas
multicapa para las aplicaciones empresariales.
 La lógica de la aplicación se divide en capas según su función.
 Descomposición de las capas:
 Client tier .- Se ejecuta en la maquina del cliente
 Web tier .- Se ejecuta en el servidor JEE
 Business tier .- Se ejecuta en el servidor JEE
 EIS(Enterprise Information System) tier.- Software que se ejecuta en
el servidor EIS
 Los clientes se pueden comunicar con la capa de negocio, directa o
indirectamente
 La capa Enterprise Information System maneja el software EIS e
incluye la infraestructura del sistema como:
 Enterprise resource planning (ERP)
 Proceso de transacciones mainframe
 Sistemas de bases de datos
 Otros sistemas de información heredados.
Beans empresariales
Emmerson Miranda
SCJP 1.5
SCWCD J2EE 1.5
Blog : http://emmersonmiranda.blogspot.com/
 Simplifican el desarrollo de aplicaciones distribuidas extensas.
 Los desarrolladores se pueden centrar únicamente en desarrollar los
requerimientos funcionales, ya que el contenedor le proporciona acceso a
los servicios de bajo nivel(transacciones, autorización …).
 Ya que se centran en la lógica de negocio, los desarrolladores del lado
cliente se pueden centrar únicamente en la presentación del cliente
(olvidándose por ejemplo de los accesos a las bases de datos o reglas de
negocio)
 Ya que los EJB son componentes portables, el que compone o ensambla la
aplicación puede construir nuevas aplicaciones utilizando los bean
existentes. Estas aplicaciones se pueden ejecutar en cualquier servidor
compatible, siempre y cuando se utilice el API estándar.
 Se puede empezar a considerar el uso de EJBs en una aplicación si
esta tiene alguno de los siguientes requerimientos:
 La aplicación necesita ser escalable, para soportar un numero
creciente de usuarios y así poder distribuir los componentes entre
múltiples maquinas y cuya localización sea transparente para los
clientes.
 Asegurar la integridad de los datos utilizando transacciones
 La aplicación puede tener una variedad de clientes; con solo unas
pocas líneas de código los clientes remotos pueden localizar
fácilmente los beans empresariales.
 Representa un cliente simple dentro del servidor de aplicaciones; para
acceder a una aplicación desplegada en un servidor, el cliente invoca
los métodos de un bean de session.
 Son creados por un cliente y usualmente existe solo durante la
duración de una session cliente-servidor.
 Pueden ser transaccionales, pero no son persistentes (sus datos no se
guardan en una base de datos), por tanto si el sistema falla sus datos
se pierden.
 Son de dos tipos; stateful y stateless
 Cuando el cliente termina los bean de sesion terminan.
 El estado de un objeto es o esta compuesto por los valores de sus
variables de instancia.
 En un stateful, las variables de instancia representan el estado de un
bean durante una session de un cliente.
 El estado del bean se mantiene entre las distintas invocaciones de sus
métodos (cada stateful se asocia a un solo cliente).
 Debido a que el cliente interactúa con su bean, su estado se suele
llamar “conversational state”
 Cuando el cliente elimina el bean o termina, el bean finaliza y su estado
se pierde.
 No mantiene el “conversational state” con el cliente.
 Cuando un cliente invoca los métodos de un bean stateless, el estado
de las variables de instancia del bean se mantiene solo durante la
duración de la ejecución del método
 Los clientes pueden cambiar los estados de los beans stateless que se
encuentran en el pool, utilizándose en la siguiente invocación del bean.
 Todas las instancias de los beans stateless son equivalentes,
permitiendo así al contenedor EJB asignar una instancia a cualquier
cliente, es decir, el estado de un stateless se puede aplicar a todos los
clientes..
 Debido a que pueden soportar un amplio número de clientes, ofrece
mejor escalabilidad para aplicaciones con un amplio número de
clientes.
 Pueden implementar web services, pero los otros tipos de EJB no.
 Si en cualquier momento solo un cliente a de acceder a una
determinada instancia de un bean.
 El estado del bean no ha de ser persistente, existiendo solo durante un
periodo corto de tiempo.
 El bean implementa un web service.
 Los beans stateful son apropiados si se cumple una de las siguientes
condiciones:
 El estado del bean representa la interacción entre el bean y un
cliente concreto.
 El bean necesita almacenar información entre las distintas
invocaciones de métodos
 El bean media entre el cliente y otros componentes de la aplicación,
dando una vista simplificada al cliente.
 Detrás de escena, el bean maneja el flujo de trabajo de muchos
beans empresariales.
 Para mejorar el rendimiento, se pueden elegir beans stateless si:
 El estado del bean no tiene información para un cliente específico.
 En una sola invocación de un método, el bean realiza tareas
genéricas para todos los clientes (Ejemplo: enviar un mail de
confirmación de pedidos)
 Es un bean empresarial que permiten procesar mensajes
asíncronamente.
 Normalmente actual como un escuchador de mensajes (Message
Listener)
 Los mensajes pueden ser enviados por cualquier componente Java EE
 Aplicación cliente
 Otro bean empresarial
 Componente web
 Aplicación JMS
 Sistemas que no utilizan la tecnología Java EE
 Pueden procesar mensajes JMS o de otro tipo
 Sus variables de instancia pueden mantener el estado durante el
proceso de los mensajes de los clientes (por ejemplo una conexión a
base de datos, un objeto de referencia a otro EJB, etc.)
 Los clientes no pueden invocarlos directamente, la única forma que
tienen de contactar con ellos es enviando mensajes a las colas a las
cuales están escuchando.
 Cada vez que llega un mensaje, el contenedor invoca el método
onMessage del MDB para procesarlo. El método onMessage puede
utilizar métodos helper o invocar beans de session para procesar la
información y/o almacenarla en la bbdd.
 Un mensaje puede ser entregado en el contexto de una transacción,
así si esta es cancelada, el mensaje es nuevamente re-entregado.
 Se ejecutan cada vez que se recibe un mensaje
 Son invocados asíncronamente
 Relativamente tienen una vida corta
 No representan datos de la base de datos, pero pueden acceder y
modificarlos.
 Son Stateless
 Los clientes no pueden acceder a los MDBs utilizando interfaces.
 Los MDB solo tienen una clase a diferencia de los beans de Session
 Parecidos entre los MDB y los beans de Session :
 Los MDB no almacenan información, ni estado conversacional con
clientes específicos
 Todas las instancias de los MDB son equivalentes, siendo el
contenedor EJB el que asigna un mensaje a cualquier instancia
MDB.
 Un MDB puede procesar mensajes de múltiples clientes
 Los beans de session permiten enviar mensajes JMS de manera
síncrona, pero no asíncrona.
 Para recibir mensajes asíncronamente hay que usar MDBs
 Son representaciones explícitas de datos o colecciones de estos, tales
como filas de bases de datos.
 Son persistentes y duran lo mismo que los datos en una base de datos.
 La clave primaria identifica una única instancia
 Son transaccionales y recuperables si el sistema falla.
 Desde EJB 3.0 los beans de entidad son POJOs (Plain Old Java
Objects) y soportan
 Utilizan anotaciones de Java incluso para su mapeo relacional
 Soportan herencia y polimorfismo
 Tienen un modelo simple de persistencia para las operaciones CRUD
usando el EntityManager.
 Capacidad de consultas mejora.
 Utilizar entity beans si los datos se han de guardar en algún almacén
de datos, estos pueden ser consultados y actualizados por múltiples
usuarios.
 Ya que un EJB esta compuesto de muchas partes, se usan las
siguientes convenciones de nombres para las aplicaciones.
Parte Sintaxis Ejemplo
Enterprise bean name nombreBean CalculadoraBean
Enterprise bean class nombreBean CalculadoraBean
Business interface nombre Calculadora
 Las siguientes anotaciones pueden ser usadas en EJB 3.0
Anotación Descripción
@Stateless Marca un bean como stateless
@Stateful Marca un bean como stateful
@MessageDriver Marca un bean como MDB
@PostConstruct,
@PreDestroy,
@PostActivate,
@PrePassivate
Marcan los métodos dentro del bean,
permitiendo asociarlos a su ciclo de vida.
@RolesAllowed,
@PermitAll, @DenyAll
Declara permisos a nivel de métodos
 Las siguientes anotaciones pueden ser usadas en EJB 3.0
Anotación Descripción
@RunAs Indica la identidad principal con la que se
ejecutará el método
@Timeout Indica el tiempo máximo de ejecución de
un método
@TransactionAttribute Aplica un atributo que indica el tipo de
transacción que se aplica a una interfaz o
métodos individuales en la clase del bean
@TransactionManagement Indica si el bean será CMP o BMP
@Resource Permite la inyección de recursos
(SessionContext, DataSource,
QueueConnectionFactory, Queue …)
 Las siguientes anotaciones pueden ser usadas en EJB 3.0
Anotación Descripción
@EJB Usado por los clientes para hacer referencia a
las interfaces de negocio de un EJB
@PersistenceContext Usado para inyectar un EntityManager
@PersistenceUnit Usado para inyectar un EntityManagerFactory
@Entity Marca una clase como una Entity bean.
@Table Especifica la tabla primaria del Entity bean
@Column Asocia una propiedad con una columna
@Id Especifica la clave primaria de una entidad
 Las siguientes anotaciones pueden ser usadas en EJB 3.0
Anotación Descripción
@ManyToOne Define la relación many-to-one con otros beans
@ManyToMany Define la relación many-to-many con otros beans
@OneToMany Define la relación one-to-many con otros beans
@OneToOne Define la relación one-to-one con otros beans
@JoinColumn Define una asociacion con otra entidad
@SecundaryTable Permite especificar una tabla secundaria, para
indicar que los datos de la entidad se pueden
almacenar en diferentes tablas.
Acceso a los EJB
Emmerson Miranda
SCJP 1.5
SCWCD J2EE 1.5
Blog : http://emmersonmiranda.blogspot.com/
 Los MDB no disponen de interfaces de acceso para clientes.
 El acceso de los clientes puede local, remoto o web service.
 Los clientes solo pueden acceder a los métodos del EJB que están
definidos en sus interfaces de negocio (estos actúan como vistas del
bean).
 El resto de detalles no son visibles para los clientes
 Un buen diseño basado en interfaces simplifica el desarrollo y
mantenimiento de las aplicaciones Java EE.
 Protegen de los cambios de implementación y de las complejidades propias de la
capa de los EJB
 Se pueden ejecutar en maquina distinta y distinta JMV que el EJB al
cual accede.
 Puede ser un cliente web, una aplicación de escritorio u otro EJB.
 La localización del EJB es transparente.
 La interfaz remota de un EJB define los métodos accesibles para un
bean.
 Para que un EJB permita acceso remoto
 la interfaz que implementa tiene que tener la anotación @Remote
@Remote
public interface InterfaceName { ... }
 O también utilizar @Remote en el bean
@Remote(InterfaceName.class)
public class BeanName implements InterfaceName { ... }
 Deben ejecutarse en la misma JVM que el EJB al cual se accede.
 Puede ser un componente web u otro EJB.
 Para un cliente local, la localización del bean no es transparente.
 La interfaz local de un EJB define los métodos accesibles para un
bean.
 Todas las interfaces de negocio son por defecto local
 Para que un EJB permita acceso local
 la interfaz que implementa tiene que tener la anotación @Local
@Local
public interface InterfaceName { ... }
 O también utilizar @Local en el bean
@Local(InterfaceName.class)
public class BeanName implements InterfaceName { ... }
 Rendimiento
 A causa de la latencia de red los EJB locales son mas rápidos que
los remotos.
 Si los componentes se distribuirán entre diferentes servidores, el
EJB debe ser remoto, pudiendo mejorar el rendimiento de las
aplicaciones
 Distribución de los componentes
 En una aplicación distribuida, los componentes web pueden
ejecutarse en diferentes servidores los cuales deben acceder a los
EJB, para este caso los beans empresariales deben permitir acceso
remoto.
 Tipos de cliente
 Si el EJB será accedido por diversos tipos de aplicaciones, debe
permitir acceso remoto.
 Si los clientes son componentes Web o EJBs, el acceso depende
del tipo de distribución que se decida dar a los componentes.
 Acoplamiento fuerte o pobre de los beans relacionados
 En caso de acoplamiento fuerte el acceso local es un buen
candidato, ya que da mejor rendimiento.
 Un cliente ws puede acceder a una aplicación JEE de dos formas:
 Web Services creados con JAX-WS
 Pueden invocar métodos de beans stateless (los MDB no)
 Cualquier cliente ws puede acceder a un bean stateless,
independientemente del lenguaje en el que se implemente (el cliente).
 Tanto los EJB y los componentes web pueden ser clientes de ws
 Por defecto todos los métodos del bean son accesibles, excepto si
alguno de ellos lleva la anotación @WebMethod, en cuyo caso dejan
de serlo (es decir solo serán accesibles aquellos que tengan dicha
anotación)
 Los parámetros de las llamadas remotas son mas aislados que los de
las llamadas locales.
 En las llamadas remotas, el cliente y el bean utilizan copias distintas
del objeto pasado por parámetro (por tanto un cambio en cualquiera de
las partes no afecta a la otra).
 Protege los datos del bean si el cliente modifica accidentalmente los datos.
 En las llamadas locales, el cliente y el bean utilizan la misma copia.
 Al igual que en las llamadas remotas, los clientes de ws trabajan con
copias diferentes de los parámetros.
Composición
Emmerson Miranda
SCJP 1.5
SCWCD J2EE 1.5
Blog : http://emmersonmiranda.blogspot.com/ - Mail
 Un EJB esta compuesto de:
 Enterprise bean class .- Es la clase que implementa los métodos de
negocio definidos en las interfaces y los métodos que involucran al
ciclo de vida de los ejb.
 Business interfaces .- Define los métodos que el bean empresarial
necesita implementar (@Local, @Remote)
 Helper clases .- Otro tipo de clases que utiliza el EJB, como por
ejemplo excepciones y clases de utilidad.
 Descriptor de despliegue XML (opcional), los cuales pueden sobre
escribir los metadatos definidos con las anotaciones de la clase del
bean.
 Los ficheros que componen un EJB pueden ser ensamblados en un
fichero .jar; el cual es portable y se pueden usar en diferentes
aplicaciones.
Ciclos de vida
Emmerson Miranda
SCJP 1.5
SCWCD J2EE 1.5
Blog : http://emmersonmiranda.blogspot.com/
 Cada tipo de bean empresarial tiene un ciclo de vida diferente
 Activation / Passivation
 Técnica mediante la cual el contenedor EJB puede elegir serializar
temporalmente un bean y almacenarlo en el sistema de ficheros del
servidor de aplicaciones u otro sistema de persistencia, para poder
posteriormente volver a recrear el estado del bean.
 Esta técnica permite un óptimo manejo de recursos para la
aplicación.
 El cliente inicia el ciclo de vida al obtener una referencia al bean
 El contenedor realiza la inyección de dependencia
 El contenedor invoca el método @PostConstruct si lo hubiera.
 A partir de este punto el bean esta listo para que el cliente pueda
invocar los métodos de negocio.
 El contendor puede decidir si “deactivate” o “passivate” el bean.
 El método @PrePassivate, es llamado antes que sea
almacenado en el almacén persistente



 Cuando el cliente invoca un método de negocio de un bean que
esta en estado “passive” ,el contenedor activa el bean llamando
al método @PostActivate si lo hubiera.
 Al final del ciclo de vida el cliente invoca el método @Remove, y el
contenedor llama al método @PreDestroy si lo hubiera.
 La instancia queda lista para el recolector de basura
 El cliente inicia el ciclo de vida al obtener una referencia al bean
 El contenedor realiza la inyección de dependencia
 El contenedor invoca el método @PostConstruct si lo hubiera.
 A partir de este punto el bean esta listo para que el cliente pueda
invocar los métodos de negocio (no se puede serializar).
 Cuando el cliente se desconecta la session, el contenedor invoca el
método @PreDestroy si lo hubiera.
 La instancia queda lista para el recolector de basura
 El contenedor crea un conjunto de instancias y los almacena en el pool,
cada una de las instancias realiza las siguientes tareas:
 Si el MDB usa inyección de dependencia, el contenedor inyecta las
referencias
 El contendor invoca el método @PostConstuct si lo hubiera.
 Cuando llega un mensaje el contenedor recoge una instancia del pool e
invoca su método onMessage pasandole el mensaje como parámetro.
 Al finalizar la vida del MDB el contenedor llama al método @PreDestroy
si lo hubiera.
 La instancia queda lista para el recolector de basura
 http://jcp.org/en/jsr/detail?id=220
 Enterprise JavaBeans 3.0 Final Release
 ejbcore .- ejb-3_0-fr-spec-ejbcore.pdf
 Persistence .- ejb-3_0-fr-spec-persistence.pdf
 Simplified.- ejb-3_0-fr-spec-simplified.pdf
Dudas y preguntas

Más contenido relacionado

La actualidad más candente (20)

Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
JDBC
JDBC JDBC
JDBC
 
Cliente web y servidor web
Cliente web y servidor webCliente web y servidor web
Cliente web y servidor web
 
WSO2 DSS - Create a Data service
WSO2 DSS - Create a Data serviceWSO2 DSS - Create a Data service
WSO2 DSS - Create a Data service
 
Cgi mi presentacion
Cgi mi presentacionCgi mi presentacion
Cgi mi presentacion
 
Asp
AspAsp
Asp
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
 
M.p
M.pM.p
M.p
 
Servicios web
Servicios webServicios web
Servicios web
 
Servlet
ServletServlet
Servlet
 
Entrada 10
Entrada 10Entrada 10
Entrada 10
 
Asp .net
Asp .netAsp .net
Asp .net
 
Redes locales 12
Redes locales 12Redes locales 12
Redes locales 12
 
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
WPF 10. mejorando la funcionalidad y usabilidad de las aplicacionesWPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
 
Servicios web
Servicios webServicios web
Servicios web
 
Arquitectura REST
Arquitectura RESTArquitectura REST
Arquitectura REST
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
 
Asp.Net Session And Query String
Asp.Net Session And Query StringAsp.Net Session And Query String
Asp.Net Session And Query String
 

Similar a JEE 5 - EJB3 (20)

Clase 14 intro ej bs
Clase 14  intro ej bsClase 14  intro ej bs
Clase 14 intro ej bs
 
J2ee
J2eeJ2ee
J2ee
 
J2ee
J2eeJ2ee
J2ee
 
Introducción JEE
Introducción JEEIntroducción JEE
Introducción JEE
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Jpa modelos de componentes
Jpa   modelos de componentesJpa   modelos de componentes
Jpa modelos de componentes
 
Clase ii intro j2 ee resumen
Clase ii   intro j2 ee resumenClase ii   intro j2 ee resumen
Clase ii intro j2 ee resumen
 
Qué es jdbc
Qué es jdbcQué es jdbc
Qué es jdbc
 
Guia ejb deshabdig
Guia ejb deshabdigGuia ejb deshabdig
Guia ejb deshabdig
 
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptxArquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
01 jee5-componentes
01 jee5-componentes01 jee5-componentes
01 jee5-componentes
 
[ES] Conectividad de java a base de datos(jdbc)
[ES] Conectividad de java a base  de datos(jdbc)[ES] Conectividad de java a base  de datos(jdbc)
[ES] Conectividad de java a base de datos(jdbc)
 
[ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition [ES] Fundamentos de Java Enterprise Edition
[ES] Fundamentos de Java Enterprise Edition
 
JDBC
JDBCJDBC
JDBC
 
RES - Transferencia de Estado Representacional
RES - Transferencia de Estado RepresentacionalRES - Transferencia de Estado Representacional
RES - Transferencia de Estado Representacional
 
Ejb30 3
Ejb30 3 Ejb30 3
Ejb30 3
 
Guía estratégica de migración de WAS a JBoss
Guía estratégica de migración de WAS a JBossGuía estratégica de migración de WAS a JBoss
Guía estratégica de migración de WAS a JBoss
 
T2 - JDBC
T2 - JDBCT2 - JDBC
T2 - JDBC
 
Jdbc Mysql
Jdbc MysqlJdbc Mysql
Jdbc Mysql
 

Más de Emmerson Miranda

WSO2 ESB - Acceso a base de datos
WSO2 ESB - Acceso a base de datosWSO2 ESB - Acceso a base de datos
WSO2 ESB - Acceso a base de datosEmmerson Miranda
 
Hibernate 3.2 short manual
Hibernate 3.2 short manualHibernate 3.2 short manual
Hibernate 3.2 short manualEmmerson Miranda
 
Prototipado de pantallas para toma de requisitos
Prototipado de pantallas para toma de requisitosPrototipado de pantallas para toma de requisitos
Prototipado de pantallas para toma de requisitosEmmerson Miranda
 
Modelado de aplicaciones en UML con EA
Modelado de aplicaciones en UML con EAModelado de aplicaciones en UML con EA
Modelado de aplicaciones en UML con EAEmmerson Miranda
 
Arquitectura Mashup Con SilverLight 2
Arquitectura Mashup Con SilverLight 2Arquitectura Mashup Con SilverLight 2
Arquitectura Mashup Con SilverLight 2Emmerson Miranda
 

Más de Emmerson Miranda (7)

WSO2 ESB - Acceso a base de datos
WSO2 ESB - Acceso a base de datosWSO2 ESB - Acceso a base de datos
WSO2 ESB - Acceso a base de datos
 
Hibernate 3.2 short manual
Hibernate 3.2 short manualHibernate 3.2 short manual
Hibernate 3.2 short manual
 
Prototipado de pantallas para toma de requisitos
Prototipado de pantallas para toma de requisitosPrototipado de pantallas para toma de requisitos
Prototipado de pantallas para toma de requisitos
 
Json short manual
Json short manualJson short manual
Json short manual
 
Modelado de aplicaciones en UML con EA
Modelado de aplicaciones en UML con EAModelado de aplicaciones en UML con EA
Modelado de aplicaciones en UML con EA
 
Log4j 1.2.15 Short Manual
Log4j 1.2.15 Short ManualLog4j 1.2.15 Short Manual
Log4j 1.2.15 Short Manual
 
Arquitectura Mashup Con SilverLight 2
Arquitectura Mashup Con SilverLight 2Arquitectura Mashup Con SilverLight 2
Arquitectura Mashup Con SilverLight 2
 

Último

Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOFICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfpatriciavsquezbecerr
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsxJuanpm27
 

Último (20)

Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
recursos naturales america cuarto basico
recursos naturales america cuarto basicorecursos naturales america cuarto basico
recursos naturales america cuarto basico
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOFICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdf
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 

JEE 5 - EJB3

  • 1. EJB 3.0 JSR 220 Emmerson Miranda SCJP 1.5 SCWCD J2EE 1.5 Blog : http://emmersonmiranda.blogspot.com/
  • 2. Introducción Emmerson Miranda SCJP 1.5 SCWCD J2EE 1.5 Blog : http://emmersonmiranda.blogspot.com/
  • 3.
  • 4.
  • 5.  Uso de anotaciones para anotar los EJB, esto reduce el número de clases e instancias necesarias, además de eliminar la necesidad de crear descriptores de despliegue.  “configuration by exception” es decir proporciona especificaciones por defecto para las opciones mas comunes.  Encapsulación de los accesos JNDI usando los mecanismos de anotaciones, inyección de dependencias y búsquedas simples.  Las interfaces de negocio requeridas para los beans de session ahora se basan en POJIs (Plain Old Java Interfaces)
  • 6.  Simplificación de la persistencia de entidades mediante JPA.  Eliminación de todas las interfaces requeridas para las entidades persistentes.  Uso de anotaciones y descriptores XML para las entidades persistentes (tablas y sus relaciones)  Reduce la necesidad de uso de las excepciones checked.
  • 7.  Son interfaces entre nuestros componentes y las funcionalidades de bajo nivel de un plataforma específica (que soporta el componente).  Todo componente web, enterprise bean, application client; necesita ser ensamblado como un modulo JEE y desplegado en el contenedor antes de ser ejecutado.  El proceso de ensamblado requiere especificar la configuración para cada componente mediante ficheros XML.  Configurando el contenedor se personaliza el soporte proporcionado por el servidor JEE, incluyendo servicios como seguridad, administración de transacciones, búsquedas JNDI y conectividad remota.
  • 8.  El modelo de seguridad Java EE nos permite configurar los componentes Web o EJB de para que puedan ser utilizados por usuarios autorizados.  El modelo transaccional nos permite especificar las relaciones entre los métodos para realizar una transacción, de esta manera múltiples métodos pueden ser tratados como una unidad.  JNDI proporciona una interfaz unificada para la búsqueda de múltiples servicios empresariales, de esta manera los diversos componentes pueden acceder a estos servicios.  El modelo de conectividad remota administra las comunicaciones a bajo nivel entre los clientes y los beans empresariales.
  • 9.  Los contenedores también manejan los servicios no-configurables como los :  Beans empresariales  Ciclo de vida de los servlets  Pool de conexiones a bases de datos  Persistencia de datos  Acceso a las APIS de la plataforma Java EE
  • 10.  Servidor EE y contenedores
  • 11.  Java EE Server  Proporciona contenedores Web y EJB  EJB Container  Administra la ejecución de los beans empresariales para aplicaciones Java EE  Web Container  Administra la ejecución de los servlets y las JSP para aplicaciones Java EE  Application client Container  Administra la ejecución de los componentes de la aplicación cliente (en el cliente)  Applet Container  Administra la ejecución de los applets, consiste en un navegador con el plug-in de Java
  • 12.  APIs de la plataforma J2EE
  • 13. Aplicaciones distribuidas Multicapa Emmerson Miranda SCJP 1.5 SCWCD J2EE 1.5 Blog : http://emmersonmiranda.blogspot.com/
  • 14.  La plataforma Java EE usa el modelo de aplicaciones distribuidas multicapa para las aplicaciones empresariales.  La lógica de la aplicación se divide en capas según su función.  Descomposición de las capas:  Client tier .- Se ejecuta en la maquina del cliente  Web tier .- Se ejecuta en el servidor JEE  Business tier .- Se ejecuta en el servidor JEE  EIS(Enterprise Information System) tier.- Software que se ejecuta en el servidor EIS
  • 15.
  • 16.  Los clientes se pueden comunicar con la capa de negocio, directa o indirectamente
  • 17.  La capa Enterprise Information System maneja el software EIS e incluye la infraestructura del sistema como:  Enterprise resource planning (ERP)  Proceso de transacciones mainframe  Sistemas de bases de datos  Otros sistemas de información heredados.
  • 18. Beans empresariales Emmerson Miranda SCJP 1.5 SCWCD J2EE 1.5 Blog : http://emmersonmiranda.blogspot.com/
  • 19.  Simplifican el desarrollo de aplicaciones distribuidas extensas.  Los desarrolladores se pueden centrar únicamente en desarrollar los requerimientos funcionales, ya que el contenedor le proporciona acceso a los servicios de bajo nivel(transacciones, autorización …).  Ya que se centran en la lógica de negocio, los desarrolladores del lado cliente se pueden centrar únicamente en la presentación del cliente (olvidándose por ejemplo de los accesos a las bases de datos o reglas de negocio)  Ya que los EJB son componentes portables, el que compone o ensambla la aplicación puede construir nuevas aplicaciones utilizando los bean existentes. Estas aplicaciones se pueden ejecutar en cualquier servidor compatible, siempre y cuando se utilice el API estándar.
  • 20.  Se puede empezar a considerar el uso de EJBs en una aplicación si esta tiene alguno de los siguientes requerimientos:  La aplicación necesita ser escalable, para soportar un numero creciente de usuarios y así poder distribuir los componentes entre múltiples maquinas y cuya localización sea transparente para los clientes.  Asegurar la integridad de los datos utilizando transacciones  La aplicación puede tener una variedad de clientes; con solo unas pocas líneas de código los clientes remotos pueden localizar fácilmente los beans empresariales.
  • 21.  Representa un cliente simple dentro del servidor de aplicaciones; para acceder a una aplicación desplegada en un servidor, el cliente invoca los métodos de un bean de session.  Son creados por un cliente y usualmente existe solo durante la duración de una session cliente-servidor.  Pueden ser transaccionales, pero no son persistentes (sus datos no se guardan en una base de datos), por tanto si el sistema falla sus datos se pierden.  Son de dos tipos; stateful y stateless  Cuando el cliente termina los bean de sesion terminan.
  • 22.  El estado de un objeto es o esta compuesto por los valores de sus variables de instancia.  En un stateful, las variables de instancia representan el estado de un bean durante una session de un cliente.  El estado del bean se mantiene entre las distintas invocaciones de sus métodos (cada stateful se asocia a un solo cliente).  Debido a que el cliente interactúa con su bean, su estado se suele llamar “conversational state”  Cuando el cliente elimina el bean o termina, el bean finaliza y su estado se pierde.
  • 23.  No mantiene el “conversational state” con el cliente.  Cuando un cliente invoca los métodos de un bean stateless, el estado de las variables de instancia del bean se mantiene solo durante la duración de la ejecución del método  Los clientes pueden cambiar los estados de los beans stateless que se encuentran en el pool, utilizándose en la siguiente invocación del bean.  Todas las instancias de los beans stateless son equivalentes, permitiendo así al contenedor EJB asignar una instancia a cualquier cliente, es decir, el estado de un stateless se puede aplicar a todos los clientes..
  • 24.  Debido a que pueden soportar un amplio número de clientes, ofrece mejor escalabilidad para aplicaciones con un amplio número de clientes.  Pueden implementar web services, pero los otros tipos de EJB no.
  • 25.  Si en cualquier momento solo un cliente a de acceder a una determinada instancia de un bean.  El estado del bean no ha de ser persistente, existiendo solo durante un periodo corto de tiempo.  El bean implementa un web service.
  • 26.  Los beans stateful son apropiados si se cumple una de las siguientes condiciones:  El estado del bean representa la interacción entre el bean y un cliente concreto.  El bean necesita almacenar información entre las distintas invocaciones de métodos  El bean media entre el cliente y otros componentes de la aplicación, dando una vista simplificada al cliente.  Detrás de escena, el bean maneja el flujo de trabajo de muchos beans empresariales.
  • 27.  Para mejorar el rendimiento, se pueden elegir beans stateless si:  El estado del bean no tiene información para un cliente específico.  En una sola invocación de un método, el bean realiza tareas genéricas para todos los clientes (Ejemplo: enviar un mail de confirmación de pedidos)
  • 28.  Es un bean empresarial que permiten procesar mensajes asíncronamente.  Normalmente actual como un escuchador de mensajes (Message Listener)  Los mensajes pueden ser enviados por cualquier componente Java EE  Aplicación cliente  Otro bean empresarial  Componente web  Aplicación JMS  Sistemas que no utilizan la tecnología Java EE  Pueden procesar mensajes JMS o de otro tipo
  • 29.  Sus variables de instancia pueden mantener el estado durante el proceso de los mensajes de los clientes (por ejemplo una conexión a base de datos, un objeto de referencia a otro EJB, etc.)  Los clientes no pueden invocarlos directamente, la única forma que tienen de contactar con ellos es enviando mensajes a las colas a las cuales están escuchando.  Cada vez que llega un mensaje, el contenedor invoca el método onMessage del MDB para procesarlo. El método onMessage puede utilizar métodos helper o invocar beans de session para procesar la información y/o almacenarla en la bbdd.  Un mensaje puede ser entregado en el contexto de una transacción, así si esta es cancelada, el mensaje es nuevamente re-entregado.
  • 30.  Se ejecutan cada vez que se recibe un mensaje  Son invocados asíncronamente  Relativamente tienen una vida corta  No representan datos de la base de datos, pero pueden acceder y modificarlos.  Son Stateless
  • 31.  Los clientes no pueden acceder a los MDBs utilizando interfaces.  Los MDB solo tienen una clase a diferencia de los beans de Session  Parecidos entre los MDB y los beans de Session :  Los MDB no almacenan información, ni estado conversacional con clientes específicos  Todas las instancias de los MDB son equivalentes, siendo el contenedor EJB el que asigna un mensaje a cualquier instancia MDB.  Un MDB puede procesar mensajes de múltiples clientes
  • 32.  Los beans de session permiten enviar mensajes JMS de manera síncrona, pero no asíncrona.  Para recibir mensajes asíncronamente hay que usar MDBs
  • 33.  Son representaciones explícitas de datos o colecciones de estos, tales como filas de bases de datos.  Son persistentes y duran lo mismo que los datos en una base de datos.  La clave primaria identifica una única instancia  Son transaccionales y recuperables si el sistema falla.  Desde EJB 3.0 los beans de entidad son POJOs (Plain Old Java Objects) y soportan
  • 34.  Utilizan anotaciones de Java incluso para su mapeo relacional  Soportan herencia y polimorfismo  Tienen un modelo simple de persistencia para las operaciones CRUD usando el EntityManager.  Capacidad de consultas mejora.
  • 35.  Utilizar entity beans si los datos se han de guardar en algún almacén de datos, estos pueden ser consultados y actualizados por múltiples usuarios.
  • 36.  Ya que un EJB esta compuesto de muchas partes, se usan las siguientes convenciones de nombres para las aplicaciones. Parte Sintaxis Ejemplo Enterprise bean name nombreBean CalculadoraBean Enterprise bean class nombreBean CalculadoraBean Business interface nombre Calculadora
  • 37.  Las siguientes anotaciones pueden ser usadas en EJB 3.0 Anotación Descripción @Stateless Marca un bean como stateless @Stateful Marca un bean como stateful @MessageDriver Marca un bean como MDB @PostConstruct, @PreDestroy, @PostActivate, @PrePassivate Marcan los métodos dentro del bean, permitiendo asociarlos a su ciclo de vida. @RolesAllowed, @PermitAll, @DenyAll Declara permisos a nivel de métodos
  • 38.  Las siguientes anotaciones pueden ser usadas en EJB 3.0 Anotación Descripción @RunAs Indica la identidad principal con la que se ejecutará el método @Timeout Indica el tiempo máximo de ejecución de un método @TransactionAttribute Aplica un atributo que indica el tipo de transacción que se aplica a una interfaz o métodos individuales en la clase del bean @TransactionManagement Indica si el bean será CMP o BMP @Resource Permite la inyección de recursos (SessionContext, DataSource, QueueConnectionFactory, Queue …)
  • 39.  Las siguientes anotaciones pueden ser usadas en EJB 3.0 Anotación Descripción @EJB Usado por los clientes para hacer referencia a las interfaces de negocio de un EJB @PersistenceContext Usado para inyectar un EntityManager @PersistenceUnit Usado para inyectar un EntityManagerFactory @Entity Marca una clase como una Entity bean. @Table Especifica la tabla primaria del Entity bean @Column Asocia una propiedad con una columna @Id Especifica la clave primaria de una entidad
  • 40.  Las siguientes anotaciones pueden ser usadas en EJB 3.0 Anotación Descripción @ManyToOne Define la relación many-to-one con otros beans @ManyToMany Define la relación many-to-many con otros beans @OneToMany Define la relación one-to-many con otros beans @OneToOne Define la relación one-to-one con otros beans @JoinColumn Define una asociacion con otra entidad @SecundaryTable Permite especificar una tabla secundaria, para indicar que los datos de la entidad se pueden almacenar en diferentes tablas.
  • 41. Acceso a los EJB Emmerson Miranda SCJP 1.5 SCWCD J2EE 1.5 Blog : http://emmersonmiranda.blogspot.com/
  • 42.  Los MDB no disponen de interfaces de acceso para clientes.  El acceso de los clientes puede local, remoto o web service.  Los clientes solo pueden acceder a los métodos del EJB que están definidos en sus interfaces de negocio (estos actúan como vistas del bean).  El resto de detalles no son visibles para los clientes  Un buen diseño basado en interfaces simplifica el desarrollo y mantenimiento de las aplicaciones Java EE.  Protegen de los cambios de implementación y de las complejidades propias de la capa de los EJB
  • 43.  Se pueden ejecutar en maquina distinta y distinta JMV que el EJB al cual accede.  Puede ser un cliente web, una aplicación de escritorio u otro EJB.  La localización del EJB es transparente.  La interfaz remota de un EJB define los métodos accesibles para un bean.
  • 44.  Para que un EJB permita acceso remoto  la interfaz que implementa tiene que tener la anotación @Remote @Remote public interface InterfaceName { ... }  O también utilizar @Remote en el bean @Remote(InterfaceName.class) public class BeanName implements InterfaceName { ... }
  • 45.  Deben ejecutarse en la misma JVM que el EJB al cual se accede.  Puede ser un componente web u otro EJB.  Para un cliente local, la localización del bean no es transparente.  La interfaz local de un EJB define los métodos accesibles para un bean.  Todas las interfaces de negocio son por defecto local
  • 46.  Para que un EJB permita acceso local  la interfaz que implementa tiene que tener la anotación @Local @Local public interface InterfaceName { ... }  O también utilizar @Local en el bean @Local(InterfaceName.class) public class BeanName implements InterfaceName { ... }
  • 47.  Rendimiento  A causa de la latencia de red los EJB locales son mas rápidos que los remotos.  Si los componentes se distribuirán entre diferentes servidores, el EJB debe ser remoto, pudiendo mejorar el rendimiento de las aplicaciones  Distribución de los componentes  En una aplicación distribuida, los componentes web pueden ejecutarse en diferentes servidores los cuales deben acceder a los EJB, para este caso los beans empresariales deben permitir acceso remoto.
  • 48.  Tipos de cliente  Si el EJB será accedido por diversos tipos de aplicaciones, debe permitir acceso remoto.  Si los clientes son componentes Web o EJBs, el acceso depende del tipo de distribución que se decida dar a los componentes.  Acoplamiento fuerte o pobre de los beans relacionados  En caso de acoplamiento fuerte el acceso local es un buen candidato, ya que da mejor rendimiento.
  • 49.  Un cliente ws puede acceder a una aplicación JEE de dos formas:  Web Services creados con JAX-WS  Pueden invocar métodos de beans stateless (los MDB no)  Cualquier cliente ws puede acceder a un bean stateless, independientemente del lenguaje en el que se implemente (el cliente).  Tanto los EJB y los componentes web pueden ser clientes de ws  Por defecto todos los métodos del bean son accesibles, excepto si alguno de ellos lleva la anotación @WebMethod, en cuyo caso dejan de serlo (es decir solo serán accesibles aquellos que tengan dicha anotación)
  • 50.  Los parámetros de las llamadas remotas son mas aislados que los de las llamadas locales.  En las llamadas remotas, el cliente y el bean utilizan copias distintas del objeto pasado por parámetro (por tanto un cambio en cualquiera de las partes no afecta a la otra).  Protege los datos del bean si el cliente modifica accidentalmente los datos.  En las llamadas locales, el cliente y el bean utilizan la misma copia.  Al igual que en las llamadas remotas, los clientes de ws trabajan con copias diferentes de los parámetros.
  • 51. Composición Emmerson Miranda SCJP 1.5 SCWCD J2EE 1.5 Blog : http://emmersonmiranda.blogspot.com/ - Mail
  • 52.  Un EJB esta compuesto de:  Enterprise bean class .- Es la clase que implementa los métodos de negocio definidos en las interfaces y los métodos que involucran al ciclo de vida de los ejb.  Business interfaces .- Define los métodos que el bean empresarial necesita implementar (@Local, @Remote)  Helper clases .- Otro tipo de clases que utiliza el EJB, como por ejemplo excepciones y clases de utilidad.  Descriptor de despliegue XML (opcional), los cuales pueden sobre escribir los metadatos definidos con las anotaciones de la clase del bean.
  • 53.  Los ficheros que componen un EJB pueden ser ensamblados en un fichero .jar; el cual es portable y se pueden usar en diferentes aplicaciones.
  • 54. Ciclos de vida Emmerson Miranda SCJP 1.5 SCWCD J2EE 1.5 Blog : http://emmersonmiranda.blogspot.com/
  • 55.  Cada tipo de bean empresarial tiene un ciclo de vida diferente  Activation / Passivation  Técnica mediante la cual el contenedor EJB puede elegir serializar temporalmente un bean y almacenarlo en el sistema de ficheros del servidor de aplicaciones u otro sistema de persistencia, para poder posteriormente volver a recrear el estado del bean.  Esta técnica permite un óptimo manejo de recursos para la aplicación.
  • 56.  El cliente inicia el ciclo de vida al obtener una referencia al bean  El contenedor realiza la inyección de dependencia  El contenedor invoca el método @PostConstruct si lo hubiera.  A partir de este punto el bean esta listo para que el cliente pueda invocar los métodos de negocio.  El contendor puede decidir si “deactivate” o “passivate” el bean.  El método @PrePassivate, es llamado antes que sea almacenado en el almacén persistente
  • 57.     Cuando el cliente invoca un método de negocio de un bean que esta en estado “passive” ,el contenedor activa el bean llamando al método @PostActivate si lo hubiera.  Al final del ciclo de vida el cliente invoca el método @Remove, y el contenedor llama al método @PreDestroy si lo hubiera.  La instancia queda lista para el recolector de basura
  • 58.  El cliente inicia el ciclo de vida al obtener una referencia al bean  El contenedor realiza la inyección de dependencia  El contenedor invoca el método @PostConstruct si lo hubiera.  A partir de este punto el bean esta listo para que el cliente pueda invocar los métodos de negocio (no se puede serializar).  Cuando el cliente se desconecta la session, el contenedor invoca el método @PreDestroy si lo hubiera.  La instancia queda lista para el recolector de basura
  • 59.  El contenedor crea un conjunto de instancias y los almacena en el pool, cada una de las instancias realiza las siguientes tareas:  Si el MDB usa inyección de dependencia, el contenedor inyecta las referencias  El contendor invoca el método @PostConstuct si lo hubiera.  Cuando llega un mensaje el contenedor recoge una instancia del pool e invoca su método onMessage pasandole el mensaje como parámetro.  Al finalizar la vida del MDB el contenedor llama al método @PreDestroy si lo hubiera.  La instancia queda lista para el recolector de basura
  • 60.  http://jcp.org/en/jsr/detail?id=220  Enterprise JavaBeans 3.0 Final Release  ejbcore .- ejb-3_0-fr-spec-ejbcore.pdf  Persistence .- ejb-3_0-fr-spec-persistence.pdf  Simplified.- ejb-3_0-fr-spec-simplified.pdf

Notas del editor

  1. Although a Java EE application can consist of the three or four tiers shown in Figure 1-1, Java EE multitiered applications are generally considered to be three-tiered applications because they are distributed over three locations: client machines, the Java EE server machine, and the database or legacy machines at the back end. Three-tiered applications that run in this way extend the standard two-tiered client and server model by placing a multithreaded application server between the client application and back-end storage.