Download Enterprise JavaBeans

Document related concepts
no text concepts found
Transcript
Unversidad Simón Bolívar
Departamento de Computación y T.I
Sistemas de Operación III
Enterprise JavaBeans
Arvelo, Yolife
Ascanio, Eduardo
Chacón, Johnny
Quintana, Susana
Enterprise 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
Sistemas basados en
cliente/servidor
Dos niveles
Dos niveles
Fat - Client
Thin - Client
Arquitectura Tres Niveles
Arquitecturas
Arquitectura Pros
Un nivel
Dos niveles
Simple
Alto desempeño
Auto contenida
Limpio, diseño
modular
Separa UI de la
logica de
negocios
Contras
Centralizado
Potencial para
codigo spaghetti
Debe diseñar e
implementar
protocolos de
comunicación.
Debe diseñar e
implementar
almacenamiento
confiable
Arquitecturas (II)
Arquitectura Pros
Tres Nieveles Separa UI, logica de
Contras
Necesidad de
negocios y
adquirir BD.
almacenamiento
Necesidad de DBA
Almacenamiento
El mapping entre
confiable y replicable. objetos y bd
Acceso concurrente y relacionales es
dificil
eficiente a los datos
via transaciones
N - niveles
Soporta multiple
aplicaciones
facilmente
Poco ineficiente
Mayor complejidad, posibilidad
de bugs
Dificil de
balancear la carga
Tecnología Enterprise JavaBeans
Arquitectura
Desarrollo y
estructuración de
aplicaciones
EJB
Container
Convenciones
Protocolos
Interfases
Especificaciones
Objetos
distribuidos y
componentes del
lado del servidor
EJB
Ejemplo de una aplicación
de cuatro niveles
Especificaciones
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.
El 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.
Funcionamiento EJB Container
 El container protegé al
bean del acceso directo
desde las aplicaciones
clientes.
Manejo de un EJB en en
tiempo de ejecucion
 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.
Enterprise Beans
Un EJB esta compuesto de cuatro partes:




"Enterprise Bean Class"
"Home Interface"
"Remote Interface"
"Deployment Descriptor"
Enterprise 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.
Interfases
 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.
Deployment 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.
Tipos de Enterprise Beans
Tipo
Entidad
Propósito
Representa un objeto de
negocios que existe en un
mecanismo de
almacenamiento persistente.
Sesion
Desempeña tareas para el
cliente
Message-Driven Ofrece el funcionamiento de
intermediario para recibir y
publicar mensajes, en forma
asincrona.
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.
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.
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 .
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.
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.
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.
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 .
Enterprise 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).
Logros




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.
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
Ejemplo
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.
Ejemplo
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);
Ejemplo
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;
…
}
Ejemplo
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:
Ejemplo
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;
}
Ejemplo
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;
}
Ejemplo
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;
}
...}