ENTERPRISE JAVA BEANS (EJB) DAVID VIRGIL NARANJO PROGRAMACIÓN AVANZADA INGENIERIA INFORMÁTICA.

1 ENTERPRISE JAVA BEANS (EJB) DAVID VIRGIL NARANJO PROGRA...
Author: Marta Ramírez Montoya
0 downloads 0 Views

1 ENTERPRISE JAVA BEANS (EJB) DAVID VIRGIL NARANJO PROGRAMACIÓN AVANZADA INGENIERIA INFORMÁTICA

2 ÍNDICE DE CONTENIDOS(1/2) 1. Introducción 2. Introducción J2EE 3. ¿Qué es un Java Bean? 4. Diferencias entre un EJB y un Java Bean 5. Ventajas EJB 6. Desventajas EJB

3 ÍNDICE DE CONTENIDOS(2/2) 7. Tipos de EJB 8. Resumen general 9. Componente EJB 10. Ejemplos 11. Creación proyecto

4 1. INTRODUCCION  Construir aplicaciones independientes  Programador solo interesado en la lógica de negocio.  Uso de componentes Java independientes de los descriptores de despliegue  Xdoctlet permite la independencia.  Acelerar proceso de desarrollo y despliegue

5 2. INTRODUCCIÓN J2EE (1/4)  Arquitectura multicapa.  Aplicaciones empresariales basadas en web  Aplicaciones cliente-servidor  Utilizar componentes del lado del servidor  Uso de contenedores web

6 2. INTRODUCCIÓN J2EE (2/4)

7 2. INTRODUCCIÓN J2EE (3/4) COMPONENTES DE NEGOCIO:

8 2. INTRODUCCIÓN J2EE (4/4) CONTENEDORES J2EE

9 2. ¿QUÉ ES UN JAVA BEAN (1/3) Un Java Bean es una clase Java que permite agrupar funcionalidades y propiedades utilizadas en una aplicación y poder utilizarse desde una página JSP. Así se consigue aislar la lógica de la aplicación del diseño y aspecto, permitiendo que ambas fases puedan ser desarrolladas de forma simultánea y separadas para luego ser integradas.

10 2. ¿QUÉ ES UN JAVA BEAN (2/3) Ejemplo: public class LibroListenerBean implements¬ HttpSessionBindingListener { private String titulo; private String autor; public void setTitulo(String titulo) { this.titulo = titulo; } public void setAutor(String autor) { this.autor = autor; } public String getTitulo() { return titulo; } public String getAutor() { return autor; } }

11 2. ¿QUÉ ES UN JAVA BEAN (3/3) Ejemplo:Libro.jsp jsp:useBean id="libro"¬ class="iworld.LibroListenerBean"¬ scope="session" /> " %> JavaBeans - iWorld Guardamos los datos... ¬ Recuperamos los datos...

12 4. JAVA BEAN VS EJB (1/2)  Un "Java Bean" es un componente utilizado en Java que permite agrupar funcionalidades para formar parte de una aplicación.  "Enterprise Java Bean" también agrupa funcionalidades para una aplicación, sin embargo, a diferencia de un "Java Bean" un "Enterprise Java Bean" es un "deployable component".

13 4. JAVA BEAN VS EJB (2/2)  Un "Java Bean" requiere ser integrado con otros componentes para que éste sea funcional, mientras un "Enterprise Java Bean" a través de un "EJB Container" puede ser activado("deployed").

14 5. VENTAJAS EJB  Servicios ("Middleware")  Si ocurre un error que proceso ha de ejecutarse.  Si la base de datos especificada se encuentra desactivada, existe otra alternativa  Division de trabajo  Concentrar esfuerzos en la "lógica de proceso" sin preocuparse del diseño de servicios.  Diversos clientes  JSP o servlets, bases de datos, applets…  Diversos vendedores  Ejecutar cualquier "EJB" en cualquier "EJB Container“ (IBM, Jboss, Inprise)

15 6. DESVENTAJAS EJB  Tiempo de Desarrollo  El desarrollar un Sistema con EJB's es sumamente complejo.  Alto conocimiento de Java  RMI,JDBC, JNDI, JavaBeans…

16 7. TIPOS DE EJB (1/2)  ENTITY EJB  Datos persistentes almacenados en una fila de una tabla/relación de una base de datos  SESSION EJB  Conversación temporal con un cliente  TIPOS: Stateless (Session) EJB's Statefull (Session) EJB's  BEANS dirigidos por mensajes

17 7. TIPOS DE EJB (2/2) DIFERENCIAS Entity Bean/Session Bean  Persistencia  Acceso compartido  Clave primaria

18 8. RESUMEN GENERAL  Los EJB se utilizan en la capa de negocio  Los EJB siempre son utilizados desde el servidor.  Los JavaBeans se pueden utilizar tanto en el cliente como en el servidor.  Tipos de EJB: de sesión o de entidad.  Los EJB agrupan funcionalidades  Contenedor EJB disponible con J2EE

19 9. COMPONENTE EJB DIFERENCIAS EJB SESIÓN CON/SIN ESTADO Un EJB con estado almacena información entre llamadas PARTES COMPONENTE EJB Interfaz componente -> define los métodos del bean Interfaz home -> define el metodo create Clase de implementación del bean Clase prueba bean

20 10. EJEMPLOS (1/7) EJB de sesión sin estado: Conversor de monedas */ package converter; import javax.ejb.EJBObject; import java.rmi.RemoteException; import java.math.*; public interface Converter extends EJBObject { // Método que permite convertir una cantidad en dolares a yenes public BigDecimal dollarToYen(BigDecimal dollars) throws RemoteException; // Método que permite convertir una cantidad en yenes a euros public BigDecimal yenToEuro(BigDecimal yen) throws RemoteException; } INTERFAZ COMPONENTE

21 10. EJEMPLOS (2/7)  /*  * Clase del Bean de Sesion sin estado ConverterBean  */  package converter;  import java.rmi.RemoteException;  import javax.ejb.SessionBean;  import javax.ejb.SessionContext;  import java.math.*;  public class ConverterBean implements SessionBean {   // Factor de cambio a yenes  BigDecimal yenRate = new BigDecimal("121.6000");  // Factor de cambio a euros  BigDecimal euroRate = new BigDecimal("0.0077");  // Implementación del método de negocio dollarToYen  public BigDecimal dollarToYen(BigDecimal dollars) {  BigDecimal result = dollars.multiply(yenRate);  return result.setScale(2, BigDecimal.ROUND_UP);  } // Implementación del método de negocio yenToEuro public BigDecimal yenToEuro(BigDecimal yen) { BigDecimal result = yen.multiply(euroRate); return result.setScale(2, BigDecimal.ROUND_UP); } // Constructor público sin parámetros public ConverterBean() {} // Métodos ejbCreate public void ejbCreate() {} // Métodos del interfaz SessionBean public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} } Implementacion BEAN

22 10. EJEMPLOS (3/7)  /*  * Interfaz Home del EJB ConverterBean  */  package converter;  import java.io.Serializable;  import java.rmi.RemoteException;  import javax.ejb.CreateException;  import javax.ejb.EJBHome;  public interface ConverterHome extends EJBHome {  // Método create que devuelve un objeto de tipo Converter  // (interfaz remota de ConverterBean)  Converter create() throws RemoteException, CreateException;  } Interfaz homeCliente JSP

23 10. EJEMPLOS (4/7)  ……  Introduce una cantidad para convertir:   0 ) {  BigDecimal d = new BigDecimal (amount);  %>   dollars son Yen.   Yen son Euro. 

24 10. EJEMPLOS (5/7)  /*  * Interfaz remota del EJB CartBean  */  import java.util.*;  import javax.ejb.EJBObject;  import java.rmi.RemoteException;  public interface Cart extends EJBObject {   public void addBook(String title) throws RemoteException;  public Vector getContents() throws RemoteException;  } EJB de sesión con estado: Carrito compra libros /* * Interfaz home del EJB CartBean */ import java.io.Serializable; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface CartHome extends EJBHome { Cart create(String person) throws RemoteException, CreateException; }

25 10. EJEMPLOS (6/7)  /*  * Clase CartBean  */  import java.util.*;  import javax.ejb.*;  public class CartBean implements SessionBean {  String customerName;  Vector contents;  public void ejbCreate(String person) throws CreateException {  if (person == null) {  throw new CreateException("No se permite entrar sin indentificación.");  } else {  customerName = person;  }  contents = new Vector();  }  public void addBook(String title) { contents.addElement(title); } public Vector getContents() { return contents; } public CartBean() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} }

26 10. EJEMPLOS (7/7)  /*  * Aplicación cliente para CartBean  */  import java.util.*;  import javax.naming.Context;  import javax.naming.InitialContext;  import javax.rmi.PortableRemoteObject;  public class CartClient {  public static void main(String[] args) {  try {  Context initial = new InitialContext();  Object objref = initial.lookup("java:comp/env/ejb/SimpleCart");  CartHome home = (CartHome) PortableRemoteObject.narrow(objref,  CartHome.class);  Cart shoppingCart = home.create("swc");  shoppingCart.addBook("Harry Potter: La piedra filosofal");  shoppingCart.addBook("Harry Potter: La cámara secreta");  shoppingCart.addBook("Harry Potter: El caliz de fuego"); Vector bookList = new Vector(); bookList = shoppingCart.getContents(); Enumeration enumer = bookList.elements(); while (enumer.hasMoreElements()) { String title = (String) enumer.nextElement(); System.out.println(title); } System.exit(0); } catch (Exception ex) { System.err.println("Capturada una excepción!!!!!"); ex.printStackTrace(); System.exit(1); }

27 CREACIÓN PROYECTO (1/1) 1. Bajarse contenedor EJB: BEA Weblogic 8.1 2. Cargar servidor de aplicaciones WebLogic 3. Creación de proyecto Java con Eclipse 4. Añadir las 3 clases del Bean 5. Hacer deploy del EJB en BEA 6. Crear clase cliente