Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad...

34
Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas de Operación III

Transcript of Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad...

Page 1: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Enterprise JavaBeans

Arvelo, Yolife

Ascanio, Eduardo

Chacón, Johnny

Quintana, Susana

Unversidad Simón Bolívar

Departamento de Computación y T.I

Sistemas de Operación III

Page 2: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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

Page 3: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Sistemas basados en cliente/servidor

Dos niveles

Fat - Client

Dos niveles

Thin - Client

Page 4: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Arquitectura Tres Niveles

Page 5: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Arquitecturas

Arquitectura Pros Contras

Un nivel SimpleAlto desempeñoAuto contenida

CentralizadoPotencial para codigo spaghetti

Dos niveles Limpio, diseño modularSepara UI de la logica de negocios

Debe diseñar e implementar protocolos de comunicación.Debe diseñar e implementar almacenamiento confiable

Page 6: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Arquitecturas (II)Arquitectura Pros Contras

Tres Nieveles Separa UI, logica de negocios y almacenamientoAlmacenamiento confiable y replicable. Acceso concurrente y eficiente a los datos via transaciones

Necesidad de adquirir BD. Necesidad de DBAEl mapping entre objetos y bd relacionales es dificil

N - niveles Soporta multiple aplicaciones facilmente

Poco ineficienteMayor comple-jidad, posibilidad de bugsDificil de balancear la carga

Page 7: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Tecnología Enterprise JavaBeans

ArquitecturaDesarrollo y

estructuración de aplicaciones

Objetos distribuidos y

componentes del lado del servidor

ConvencionesProtocolos Interfases

Especificaciones

EJB

EJB Container

Page 8: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Ejemplo de una aplicación de cuatro niveles

Page 9: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Page 10: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Page 11: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Funcionamiento EJB Container

Manejo de un EJB en en tiempo de ejecucion

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.

Page 12: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Enterprise Beans

"Enterprise Bean Class" "Home Interface" "Remote Interface" "Deployment Descriptor"

Un EJB esta compuesto de cuatro partes:

Page 13: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Page 14: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Page 15: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Page 16: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Tipos de Enterprise Beans

Tipo Propósito

Entidad 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.

Page 17: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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

Page 18: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Creación del EJB en el servidor

Page 19: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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

Page 20: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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

Page 21: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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

Page 22: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Container y su interacción con los EJB

Page 23: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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

Page 24: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Enterprise Bean como objeto distribuidoEnterprise Bean como objeto distribuido

Page 25: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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).

Enterprise Bean como objeto distribuido

Page 26: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Page 27: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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

Desventajas

Page 28: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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.

Page 29: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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);

Page 30: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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;…

}

Page 31: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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:

Page 32: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

Ejemploimport 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;

}

Page 33: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

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;

}

Page 34: Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.

EjemploA 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; } ...}