Sunteți pe pagina 1din 15

Enterprise Java Beans

EJB
Son componentes Java del lado del servidor que encapsulan la lgica de
negocio de una aplicacin. La lgica de negocio es el cdigo que realmente
cumple con el objetivo de la aplicacin.
Por ejemplo en una aplicacin de inventario, los EJBs se encargaran de
ejecutar los mtodos revisaNivelDeInventario y ordenaProducto.

Ventajas de los EJBs

El contenedor les provee de servicios a nivel de sistema


(inyeccin, manejo de transacciones, seguridad, etc), lo que le
permite al programador concentrarse en los problemas del
negocio y no en los de la tecnologa.
Promocionan la arquitectura en capas, generalmente los beans
tienen la lgica de negocio y los clientes slo se preocupan por la
la presentacin
Si los clientes slo se preocupan por la presentacin, pueden ser
ligeros
Son componentes, por lo que promueven la reutilizacin y como
son estndar y programados en Java son portables

Cundo utilizarlos?

Si la aplicacin debe de ser escalable ya que los componentes pueden distribuirse


en mltiples mquinas de forma transparente para los clientes.
Si es necesaria lgica transaccional.
Si la aplicacin debe de tener una gran variedad de clientes ya que estos con unas
pocas lneas de cdigo pueden localizarlos. Estos clientes pueden ser delgados,
variados y numerosos.

Tipos de EJB

Sesin .- Realizan tareas para los clientes

Entity

De mensaje (message-driven) .- Actan como


listeners de ciertos mensajes

EJB - Sesin
Son objectos que en conjunto implementan la lgica de la aplicacin. Existen 2 tipos
de EJB de sesin:

Stateful
Stateless
Singleton

Stateful
Pueden mantener el estado
del cliente a travs de
invocaciones
de
sus
mtodos. Esto es posible
mediante
el
uso
de
variables de instancia. El
cliente
establece
los
valores de estas variables y
los usa en diferentes
invocaciones
de
sus
mtodos.

Stateless

Singleton

Estos beans slo trabajan


con variables locales, por
lo que no es posible
mantener el estado a
travs de las diferentes
llamadas.

Se instancia slo uno


por aplicacin.
Un slo bean es
compartido por todos
los clientes.

Son los
ligeros.

EJBs

ms

EJB - sesin
Ciclo de vida de un EJB Stateless
1) Si el bean no existe el contenedor invoca el mtodo new Instance()
2) El contenedor invoca al mtodo setSessionContext() y despus al mtodo
ejbCreate(), con lo cual el bean se coloca en el pool method-ready y queda
en espera de la llamada de algn cliente
3) Cuando el contenedor ya no necesita a la instancia invoca al mtodo
ejbRemove()

Nota: tiene que advertir que en ninguno de los dos tipos de


beans de sessin se persiste el estado, aunque si puede ser
almacenado en un cache

EJB - sesin
Ciclo de vida de un EJB Stateful
1) El cliente invoca al mtodo create(args) de la interfaz home
2) El contenedor invoca el mtodo newInstance()
3) El contenedor invoca al mtodo setSessionContext() y despus al mtodo
ejbCreate() y retorna una referencia del EJB al cliente. Dicha instancia ya
est lista para aceptar peticiones
4) Dependiendo del contexto transaccional configurado invoca mtodos tx o
no tx. Los mtodos no transaccionales pueden ejecutarse mientras el bean
se encuentre en el estado ready. Los mtodos transaccionales hacen que
la instancia sea incluida en una transaccin. El contenedor ejecuta el
mtodo afterBegin() en la instancia del bean
5) Si se ha solicitado el commit de la transaccin, el servicio de
transacciones avisa al contenedor, quien a su vez ejecuta el mtodo
beforeCompletion en la instancia del bean
6) El servicio de transacciones intenta devolver el resultado de la misma, ya
sea que se haya ejecutado o haya sufrido un callback

EJB - sesin
Ciclo de vida de un EJB Stateful
7) Cuando la transaccin se completa el contenedor ejecuta el mtodo
afterCompletion() en la instancia del bean, especificando el estado de la
transaccin (commit o rollback). En el caso del rollback, la instancia del
bean podra necesitar recuperar su estado anterior
8) El contenedor decidir si la instancia debe de ser desalocada de la
memoria, en tal caso ejecuta el mtodo ejbPassivate() de la instancia
9) Mientras se encuentre en estado pasivo, el contenedor puede quitar de la
memoria la instancia si el tiempo de expiracin ya ha transcurrido
10) Si el cliente invoca a un bean que se encuentra en estado passivated
que aun no ha expirado, el contenedor restaura el estado de la instancia y
ejecuta el mtodo ejbActivate(), con lo cual la instancia queda lista para
recibir llamadas
11) Cuando el cliente ejecuta el mtodo remove() en un EJB, el contenedor
le enva el mensaje ejbRemove() al bean respectivo.

EJB - stateles

EJB - Entity
Los Entity beans son objectos que han sido diseados para almacenar
informacin de una base de datos relacional lo que nos permite manipular
dicha informacin siguiendo los principios de la POO.
Los datos en estos objetos se persiste en algn almacn de datos,
generalmente una base de datos relacional.

EJB - Entity
Clases necesarias para su implementacin:

javax.ejb.EJBObject
javax.ejb.EntityBean
javax.EJBHome

EJB de mensaje

EJB que permiten comunicacin asncrona desde otros


sistemas.
Los mensajes asncronos entre sistemas pueden verse de
forma anloga a los eventos de una GUI con su manejador.
Por ejemplo en una aplicacin business-to-business (B2B),
un distribuidor puede utilizar una aplicacin que utiliza
message-driven beans para escuchar las ordenes de compra
de sus minoristas.

EJB
Utilizando los distintos tipos de EJBs podemos afirmar que en los
EJBs se pueden configurar todos los servicios que el contenedor le
proporciona:

Distribucin
Seguridad
Manejo de recursos
Transaccionalidad

EJB
Anlogamente a las aplicaciones de un contenedor de servlets que se
empaquetan en un archivo war, las aplicaciones JEE se empaquetan en un
archivo ear.

S-ar putea să vă placă și