Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

22
Enterprise Java Enterprise Java Beans Beans Rubén Trujillo Rubén Trujillo Sept-Dic 2008 Sept-Dic 2008

Transcript of Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Page 1: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Enterprise Java Enterprise Java BeansBeans

Rubén TrujilloRubén TrujilloSept-Dic 2008Sept-Dic 2008

Page 2: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Enterprise Java BeansEnterprise Java Beans

Es una tecnología para desarrollar Es una tecnología para desarrollar componentes de una aplicación J2EE componentes de una aplicación J2EE basada en componentes.basada en componentes.

Un componente Enterprise JavaBeans Un componente Enterprise JavaBeans (también llamado Enterprise Bean) es un (también llamado Enterprise Bean) es un componente del lado del servidor que componente del lado del servidor que encapsula la lógica de negocios de una encapsula la lógica de negocios de una aplicación.aplicación.

Page 3: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

BeneficiosBeneficios

Los Enterprise Beans simplifican el Los Enterprise Beans simplifican el desarrollo de aplicaciones, ya que:desarrollo de aplicaciones, ya que:La lógica de negocios de la aplicación se La lógica de negocios de la aplicación se

encuentra en los Beans, de modo que el encuentra en los Beans, de modo que el cliente solo debe encargarse de la cliente solo debe encargarse de la presentación. Muy útil para dispositivos presentación. Muy útil para dispositivos pequeños.pequeños.

Son portables, pueden ser ejecutados en Son portables, pueden ser ejecutados en cualquier servidor que soporte J2EE.cualquier servidor que soporte J2EE.

Page 4: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

BeneficiosBeneficios

El programador de aplicaciones solo debe El programador de aplicaciones solo debe concentrarse en el desarrollo de la lógica concentrarse en el desarrollo de la lógica de negocios, ya que el EJB Container de negocios, ya que el EJB Container provee rutinas a nivel de sistema para el provee rutinas a nivel de sistema para el manejo de transacciones, memoria virtual, manejo de transacciones, memoria virtual, entre otros servicios.entre otros servicios.

Page 5: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

EJB ContainerEJB Container

Es un Es un runtime enviromentruntime enviroment para los para los Enterprise Beans. Maneja la operación de Enterprise Beans. Maneja la operación de los beans dentro del servidor, actuando los beans dentro del servidor, actuando como intermediario entre la lógica de la como intermediario entre la lógica de la aplicación y el servidor.aplicación y el servidor.

Page 6: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Servicios del EJB ContainerServicios del EJB Container

Manejo de Transacciones: Inicio de Manejo de Transacciones: Inicio de transacciones, transacciones, commitingcommiting y y rollback.rollback.

Manejo de Instancias: Maneja grupos de Manejo de Instancias: Maneja grupos de instancias activas e inactivas, moviendo instancias activas e inactivas, moviendo instancias de un estado a otro según convenga.instancias de un estado a otro según convenga.

Sincronización de datos entre las variables de la Sincronización de datos entre las variables de la instancia y sus correspondientes en instancia y sus correspondientes en almacenamiento persistente.almacenamiento persistente.

Page 7: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Contenido de un Enterprise BeanContenido de un Enterprise Bean

Deployment descriptorDeployment descriptor: Un archivo XML con información : Un archivo XML con información acerca del tipo de persistencia y los tipos de acerca del tipo de persistencia y los tipos de transacciones.transacciones.

La clase Enterprise Bean: La clase principal del bean, La clase Enterprise Bean: La clase principal del bean, que implementa los métodos de las interfaces que implementa los métodos de las interfaces homehome y y remoteremote..

Interfaces Interfaces homehome y y remoteremote: Interfaces para la : Interfaces para la comunicación con el cliente remoto. La interfaz comunicación con el cliente remoto. La interfaz homehome provee los métodos de ciclo de vida del bean, y la provee los métodos de ciclo de vida del bean, y la interfaz interfaz remoteremote los métodos de la lógica de la aplicación. los métodos de la lógica de la aplicación.

Clases auxiliares como excepciones y otras clases Clases auxiliares como excepciones y otras clases utilitarias.utilitarias.

Page 8: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Tipos de Enterprise BeansTipos de Enterprise Beans

Session Beans.Session Beans.Session beans con estadoSession beans con estadoSession beans sin estadoSession beans sin estado

Entity Beans.Entity Beans.Persistencia manejada por el BeanPersistencia manejada por el BeanPersistencia manejada por el ContainerPersistencia manejada por el Container

Message-Driven Beans.Message-Driven Beans.

Page 9: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Session BeansSession Beans

Representan a un solo cliente dentro de Representan a un solo cliente dentro de un servidor J2EE. El cliente se comunica a un servidor J2EE. El cliente se comunica a través de los métodos de un session bean través de los métodos de un session bean con una aplicación instalada en el con una aplicación instalada en el servidor, simplificando el cliente al servidor, simplificando el cliente al ejecutar la tareas de la aplicación en el ejecutar la tareas de la aplicación en el servidor.servidor.

Page 10: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Session Beans con estadoSession Beans con estado

Mantienen el estado (los valores de las Mantienen el estado (los valores de las variables de la instancia) durante toda la variables de la instancia) durante toda la sesión bean-cliente.sesión bean-cliente.

Ejemplo:Ejemplo:Aplicaciones de Shopping Cart en sitios de Aplicaciones de Shopping Cart en sitios de

compras por internet.compras por internet.

Page 11: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Ciclo de Vida de un Session Bean Ciclo de Vida de un Session Bean con estadocon estado

Page 12: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Session Beans sin estadoSession Beans sin estado

No mantienen el estado para un cliente No mantienen el estado para un cliente particular, es decir, cuando un cliente particular, es decir, cuando un cliente llama a un método del bean, las variables llama a un método del bean, las variables de la instancia pueden tener valores, pero de la instancia pueden tener valores, pero estos solo duran lo que dura la llamada al estos solo duran lo que dura la llamada al método.método.

Ejemplo:Ejemplo:Un bean puede obtener de la base de datos Un bean puede obtener de la base de datos

de un sitio de compras por internet los de un sitio de compras por internet los productos en oferta y mostrarlos al cliente.productos en oferta y mostrarlos al cliente.

Page 13: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Ciclo de Vida de un Session Bean Ciclo de Vida de un Session Bean sin estadosin estado

Page 14: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Requisitos de un session beanRequisitos de un session bean

Debe implementar la interfaz SessionBean.Debe implementar la interfaz SessionBean. La clase debe ser definida como pública, y no La clase debe ser definida como pública, y no

puede ser definida como abstracta o final.puede ser definida como abstracta o final. Debe implementar por lo menos un método Debe implementar por lo menos un método

ejbCreate()ejbCreate().. Debe contener un constructor público sin Debe contener un constructor público sin

parámetros.parámetros. No debe definir el método No debe definir el método finalize().finalize().

Page 15: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

EjemploEjemplopublic class CartBean implements SessionBean {public class CartBean implements SessionBean {

String customerName;String customerName;String customerId;String customerId;Vector contents; Vector contents; public void ejbCreate(String person) throws CreateException { public void ejbCreate(String person) throws CreateException {

if (person == null) { if (person == null) { throw new CreateException("Null person not allowed.");throw new CreateException("Null person not allowed.");

} else {} else {customerName = person;customerName = person;

} } customerId = "0"; contents = new Vector();customerId = "0"; contents = new Vector();}}public void addBook(String title) {public void addBook(String title) {

contents.addElement(title);contents.addElement(title);}}public CartBean() {} public CartBean() {} public void ejbRemove() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbActivate() {} public void ejbPassivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {}public void setSessionContext(SessionContext sc) {}

} }

Page 16: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Entity BeansEntity Beans Representan objetos en un mecanismo de Representan objetos en un mecanismo de

almacenamiento persistente, como una base de datos almacenamiento persistente, como una base de datos relacional.relacional.

Por lo general, un entity bean representa una tabla en Por lo general, un entity bean representa una tabla en una base de datos y cada instancia un fila de esa tabla.una base de datos y cada instancia un fila de esa tabla.

El manejo de la persistencia puede ser por el El manejo de la persistencia puede ser por el programador (programador (Bean-managedBean-managed) en donde el programador ) en donde el programador implementa los métodos para acceder a la base de implementa los métodos para acceder a la base de datos, o por el contenedor (datos, o por el contenedor (Container-managedContainer-managed) en ) en donde el contenedor se encarga de todos los accesos a donde el contenedor se encarga de todos los accesos a la base de datos.la base de datos.

Page 17: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Requisitos para un Entity BeanRequisitos para un Entity Bean Al igual que para session bean, se debe implementar la Al igual que para session bean, se debe implementar la

interfaz correspondiente, en este caso la interfaz interfaz correspondiente, en este caso la interfaz EntityBean.EntityBean.

Debe implementar métodos Debe implementar métodos finderfinder que permiten al que permiten al cliente localizar entity beans y métodos cliente localizar entity beans y métodos home home que que permiten al cliente aplicar rutinas a todas las instancias permiten al cliente aplicar rutinas a todas las instancias de un entity bean (por ejemplo en una aplicación de un entity bean (por ejemplo en una aplicación bancaria, descontar el monto respectivo a todas las bancaria, descontar el monto respectivo a todas las cuentas con balance menor a cierto monto). cuentas con balance menor a cierto monto).

Además, debe cumplir con los requisitos usuales: La Además, debe cumplir con los requisitos usuales: La clase de ser definida publica, y nunca abstracta ni clase de ser definida publica, y nunca abstracta ni finalfinal, , debe tener un constructor vacío, y no definir el método debe tener un constructor vacío, y no definir el método finalizefinalize. .

Page 18: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Ciclo de vida de un Entity BeanCiclo de vida de un Entity Bean

Page 19: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

EjemploEjemplopublic class HelloEntityEJB implements EntityBean {public class HelloEntityEJB implements EntityBean {

public String name;public String name;

public String email;public String email;

public String ejbCreate(String name) {public String ejbCreate(String name) {

this.name = name;this.name = name;

return null;return null;

}}

public void ejbPostCreate(String name) {public void ejbPostCreate(String name) {

}}

public String getEmail() {public String getEmail() {

return email;return email;

}}

public void setEmail(String email) {public void setEmail(String email) {

this.email = email;this.email = email;

}}

}}

Page 20: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Message-Driven BeansMessage-Driven Beans

Permiten recibir mensajes JMS de forma Permiten recibir mensajes JMS de forma asíncrona.asíncrona.

A diferencia de los entity beans y los A diferencia de los entity beans y los session beans, no poseen interfaces, por session beans, no poseen interfaces, por tanto se componen solo de una clase tanto se componen solo de una clase bean.bean.

Page 21: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

Ciclo de vida de un Message-Ciclo de vida de un Message-Driven BeanDriven Bean

Page 22: Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.

EjemploEjemplopublic void onMessage(Message inMessage) {public void onMessage(Message inMessage) {

TextMessage msg = null; TextMessage msg = null; try { try {

if (inMessage instanceof TextMessage) {if (inMessage instanceof TextMessage) { msg = (TextMessage) inMessage;msg = (TextMessage) inMessage; System.out.println ("MESSAGE BEAN: Message received: " + System.out.println ("MESSAGE BEAN: Message received: " +

msg.getText()); msg.getText()); } else { } else {

System.out.println ("Message of wrong type: " + System.out.println ("Message of wrong type: " + inMessage.getClass().getName()); inMessage.getClass().getName());

} } } catch (JMSException e) { } catch (JMSException e) {

e.printStackTrace(); e.printStackTrace(); mdc.setRollbackOnly(); mdc.setRollbackOnly();

} catch (Throwable te) { } catch (Throwable te) { te.printStackTrace(); te.printStackTrace();

} } } }