Title: Enterprise JavaBeans
1Enterprise JavaBeans
Unversidad Simón BolÃvar Departamento de
Computación y T.I Sistemas de Operación III
- Arvelo, Yolife
- Ascanio, Eduardo
- Chacón, Johnny
- Quintana, Susana
2Enterprise Java Beans (EJB)
- Sistemas basados en cliente/servidor
- TecnologÃa Enterprise JavaBeans
- El EJB Container
- Enterprise Beans
- Tipos de Beans
- Enterprise Beans como objetos distribuidos
- Estructutando soluciones basadas en Java Beans
- Clientes Enterprise Java Beans
- Logros, Criticas y Desventajas
- Ejemplo
3Sistemas basados en cliente/servidor
Dos niveles Fat - Client
Dos niveles Thin - Client
4Arquitectura Tres Niveles
5Arquitecturas
6Arquitecturas (II)
7TecnologÃa Enterprise JavaBeans
8Ejemplo de una aplicación de cuatro niveles
9Especificaciones
La especificación exige un modelo de
programacion, constituido por convenciones o
protocolos y un conjunto de clases e interfaces
sobre las cuales de apoya el EJB API. El
modelo de programación de EJB provee a los
desarrolladores y proveedores de beans, un
conjunto de contratos que definen un estándar
comun para el desarrollo. El principal logro de
estos contratos es asegurar la portabilidad entre
distintos proveedores y asà soportar un gran
conjunto de funcionalidades.
10El EJB Container
Los containers manejan almacenan a los
enterprise bean (EJB) de la misma forma que los
servidores web Java almacenan servlets o que los
browser HTML almacenan applets.
- Un EJB no puede funcionar fuera de un container
- Los EJB Container manejan cada aspecto de los eb
en tiempo de ejecucion, los cuales incluyen,
acceso remoto al bean, seguridad, persistencia,
transacciones concurrencia y acceso a los
recursos.
11Funcionamiento EJB Container
- El container protegé al bean del acceso directo
desde las aplicaciones clientes. - Cuando un cliente invoca un metodo remoto de un
eb, el contenedor primero intercepta esta para
asegurar la seguridad de cada operacion que se
desempenia en el bean.
Manejo de un EJB en en tiempo de ejecucion
12Enterprise Beans
Un EJB esta compuesto de cuatro partes
- "Enterprise Bean Class"
- "Home Interface"
- "Remote Interface"
- "Deployment Descriptor"
13Enterprise Beans Class
Esta clase es el componente medular de un
EJB, en esta clase se encuentran definidas todas
los funciones utilizadas por un EJB, ya sean
procedimientos rutinarios (operaciones
matemáticas) o con lógica hacia bases de datos
(con JDBC). En esta clase reside todo el código
fuente o funcional que realiza operaciones, desde
la activación del EJB hasta su destrucción
incluyendo las funciones de negocios para el que
éste fue diseñado.
14Interfases
- Home Interface define un esqueleto para
funciones utilizadas en el Enterprise Bean Class,
las funciones que deben ser declaradas en son
aquellas necesarias para la creacion-activacion
de un EJB algunas son create, passivate,activate.
- Remote Interface contiene las declaraciones para
los metodos de negocios definidas en el
Enterprise Bean Class.
15Deployment Descriptor
- Un Deployment Descriptor es un archivo en XML que
cumple varias funciones. Entre ellas - Definir parámetros que varÃan dependiendo del
ambiente nombres de bases de datos, servidores
de paginas, usuarios privilegiados,etc - Indicar al EJB Container, el tipo de EJB sesion,
entidad,mensaje, el esquema de seguridad que
posee el EJB, en caso de ser un "Container
Managed Entity EJB" las funciones para las que se
generará lógica, y otras funcionalidades más.
16Tipos de Enterprise Beans
17Creación del EJB en el servidor
Creación del EJB en el servidor
- Una aplicación cliente contacta al servidor y le
pide que genere un EJB para que procese datos en
su nombre. El servidor responde creando un Objeto
en él (la instancia del componente del EJB), y
devuelve un objeto proxy (el Objeto EJB) . - La aplicación cliente realmente contacta al
container del servidor y le pide que genere un
objeto en particular, el conteiner responde con
el Objeto EJB que puede ser utilizado para
manipular el nuevo componente EJB recién
generado.
18Creación del EJB en el servidor
Creación del EJB en el servidor
- Cuando un cliente quiere crear un bean en el
servidor, este utiliza el JNDI (java naming and
director interface) . - Una vez que el cliente tiene el home interface de
la clase del EJB que quiere generar, se llama a
uno de los métodos create() en el home interface.
El objeto del home interface del lado del cliente
hace una llamada remota al container del EJB,
quien luego genera el componente EJB y devuelve
el objeto EJB al cliente. - Luego el cliente puede llamar los metodos del
objeto EJB, que son enviados al container.
19Container y su interacción con los EJB
Container y su interacción con los EJB
- Los enterprise bean son componentes de software
que corren en un ambiente especial llamado EJB
container . Los container organizan y manejan los
beans... - Los container aislan a los enterprise beans del
acceso directo de las aplicaciones de los
clientes. Cuando un aplicación invoca un metodo
remoto en un enterprise bean, el container
inetercepta la invocación para asegurar la
persistencia, transacción, y la seguridad . - Los desarrolladores de enterprise bean se pueden
enfocar en encapsular las reglas del negocios,
mientras los container se encargan de todo lo
demás .
20Container y su interacción con los EJB
Container y su interacción con los EJB
- Para reducir el consumo y procesamiento de
memoria, los contenedores agrupan los recursos y
manejan el ciclo de vida de todos los beans muy
cuidadosamente. - Los enterprise bean dependen de los container
para todas las cosas que necesiten. - Los bean enterprise interactuan con el container
por medio de alguno de los siguientes tres
mecanismos metdos callbacks, el EJBContext
interface, o el JNDI.
21Container y su interacción con los EJB
Container y su interacción con los EJB
- Callback Cada metodo callback avisa al bean
sobre diferentes eventos en su ciclo de vida y el
container invocara estos metodos para notificar
al bean cuando esta a punto de activar el bean,
persistir su estado a la bases de datos, terminar
una transacción, mover el bean de la memoria etc - EJBContext provee de metodos para que el bean
pueda solicitar información acerca de su ambiente
como la identidad de su cliente, el estado de su
transacción, o para obtener una referencia remota
a él mismo.
22Container y su interacción con los EJB
Container y su interacción con los EJB
- JNDI El JNDI ENC permite a los bean acceder a
recursos como conecciones de JDBC, otros bean
enterprise, y propiedades especificas de esos
beans.
23Enterprise Bean como objeto distribuido
Enterprise Bean como objeto distribuido
- Las interfaces remotas y home son tipos de
interfaces remotas de RMI de Java. La interfaz
java.rmi.Remote es utilizada por objetos remotos
para representar los bean en una dirección de
espacio diferente . - Se envuelve la instancia en objeto llamado
esqueleto el cual contiene una coneccion de red
con otro objeto llamado stub . - En EJB los esqueletos para las interfaces
remotas y home estan implementados por el
container y no por las clase bean .
24Enterprise Bean como objeto distribuido
Enterprise Bean como objeto distribuido
25Enterprise Bean como objeto distribuido
Enterprise Bean como objeto distribuido
- Los protocolos de objetos distribuidos definen el
formato de los mensajes de red enviados entre los
espacios de direcciones . - La mayoria de los servidores de EJB soportan o
el Java Remote Meted Protocol (JRMP) o el
protocolo de CORBA Internet Inter.-ORB Protocol
(IIOP).
26Logros
- Hacer fácil a los desarrolladores crear
aplicaciones distribuidas, liberándolos de los
detalles de bajo nivel. - Las especificaciones estructuran el EJB
framework. Las responsabilidades del cliente, el
servidor y de los componentes individuales son
claramente descritas, lo que asegura la
portabilidad entre diferentes vendedores - EJB propone un estándar para aplicaciones
cliente servidor a ser construidas sobre el
lenguaje Java - Finalmente, puede inter-operar con otras
aplicaciones no-Java ya que es compatible con
CORBA.
27Desventajas
Desventajas
- Tiempo de Desarrollo El desarrollar un Sistema
con EJB's es sumamente complejo, aunque para
ciertas empresas puede presentar una solución
ideal, debido a la complejidad-tiempo de (
traduciendose en costo) para muchas corporaciones
EJB's resultan una solución sobrada , denominada
en Ingles "overkill". . - Conocimiento exhausto de Java EJB's es uno de
los principales componentes de J2EE y por esta
razón también depende fuertemente de otras partes
de J2EE Como RMI , JNDI y JDBC
28Ejemplo
- Para crear un componente del EJB en el servidor,
el desarrollador del enterprise bean provee dos
interfaces que definen los métodos de negocios de
los bean, mas la implementación de la clase real.
- Un bean es un componete del servidor que
representa los conceptos de negocios como un
Customer o un HotelClerk. - La interfase home representa el ciclo de vida de
los métodos de los componentes (crear, destruir,
buscar) mientras la interfaz remota representa
los métodos de negocio del bean.
29Ejemplo
- Los clientes utilizan la interfase home para
obtener referencia a la interfaz remota del bean.
- A continuación un ejemplo de como una Customer
bean puede ser accedido desde una aplicación de
cliente - CustomerHome home // ... obtain a reference
that - // implements the home
interface. - // Use the home interface to create a new
instance of - //the Customer
- bean.Customer customer home.create(customerID)
- //using a business method on the
- Customer.customer.setName(someName)
30Ejemplo
- A continuación un ejemplo de una definición de
una interfaz remota para el bean Customer. - Import javax.ejb.EJBObject
- import java.rmi.RemoteException
- public interface Customer extends EJBObject
- public Name getName()
- throws RemoteException
- public void setName(Name name)
- throws RemoteException
- public Address getAddress()
- throws RemoteException
-
-
31Ejemplo
- La interfaz remota define métodos para acceder y
modificar información acerca de los conceptos de
negocios . - Los métodos de negocios también pueden
representar tareas que el bean puede realizar. - A continuación un ejemplo de una definición de
la interfaz remota para el bean HotelClerk, el
cual es un bean de sesion
32Ejemplo
import javax.ejb.EJBObject import
java.rmi.RemoteException public interface
HotelClerk extends EJBObject public void
reserveRoom(Customer cust,RoomInfo ri, Date
from, Date to) throws RemoteException public
RoomInfo availableRooms(Location loc, Date
from, Date to) throws RemoteException
33Ejemplo
- A continuación un ejemplo de una definición de
una interfaz remota para el bean Customer.
import javax.ejb.EJBObject import
java.rmi.RemoteException public interface
HotelClerk extends EJBObject
public void
reserveRoom(Customer cust,RoomInfo ri,
Date from, Date to) throws RemoteException
public RoomInfo availableRooms(Location loc,
Date from, Date to) throws
RemoteException
34Ejemplo
A continuación una definición parcial del
customer bean class.
import javax.ejb.EntityBean public class
CustomerBean implements EntityBean Address
myAddress Name myName CreditCard
myCreditCard public Name getName()
return myName public void setName(Name
name) myName name public
Address getAddress() return myAddress
public void setAddress(Address address)
myAddress address ...