Sistemas de Operación 3

Documentos relacionados
Enterprise JavaBeans Sesión 1: Características básicas de EJB

Reutilización de software

Componentes Distribuidos EJBs. Ing. Cesar Julio Bustacara Medina

Enterprise JavaBeans

Servlets. Contenedor EJB JSP. Enterprise Beans. Enterprise Beans. Enterprise Beans. Messaging (EJB 2.0: JMS, EJB 2.1: +JAXM, )

Session Beans y Entity Beans. Contenido

Software de Comunicaciones I.T.T. Especialidad Telemática Escuela Politécnica Superior Universidad Carlos III de Madrid

5.2 Introducción a EJB

Desarrollo de Componentes de Negocio con Tecnología

Curso de Sistemas Distribuidos Facultad de Informática

Parte II: Java 2 Enterprise Edition. Enterprise JavaBeans. Ignacio Ramos Zapata

Introducción a los EJBs

Aplicaciones Web Servidor

Creación de una aplicación para JBOSS

4 Encuentro Internacional de Computación Aplicada

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos

'HVDUUROORGH$SOLFDFLRQHV

TEMA 54 La arquitectura JEE

JEE Enterprise Java Beans

5.6.8 Estrategias de generación de claves primarias

Índice del tema. Entity yy y Session EJBs) Mario Muñoz Organero Departamento de Ingeniería Telemática

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados

TESIS QUE PRESENTAN LOS ALUMNOS

Oracle 10g: Creación de Aplicaciones J2EE

Enterprise Java Beans. JBoss AS. Ronier Rodríguez

Java EE Enterprise Beans (EJB)

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

Plataforma J2EE. Antonio Vega Eligio Profesor: Dr. Mauricio J. Procel Moreno 31 de Octubre de 2008

COMPONENTES Y CONTENEDORES. Ingeniería de Software II

Java RMI. Sistemas distribuidos

Nivel de negocio en J2EE: Enterprise Java Beans

Magister en Ingeniería de Software

Guía del Curso Analista Programador Java: Business Apps Expert

Desarrollo de Sistemas Software Basados en Servicios y Componentes

Session Beans y Entity Beans Avanzado. Caso de estudio: Entity Bean

Desarrollo de Software con

PRÁCTICA 3: COMPONENTES. Javier Sánchez Pérez Arquitectura del Software Grado en Informática

Diseño de la Capa de Negocio. Aplicaciones Distribuidas

Java y CDI sobre JEE 6 (JSR 330)

La capa de Negocio de la Arquitectura Java EE

Programa Formativo. Código: Curso: Programación con JAVA 8 SE Standard Edition Modalidad: ONLINE Duración: 120h.

Universidad ORT - Arquitectura de Software. Requisitos

Java EE 6: Desarrollo de componentes de negocio con JMS y EJBs

07 Java EE Tarea 7. Laboratorio de proyectos de tecnologías de la información III Prof. Emmanuel Oropeza Gonzalez

Invocación remota de métodos. Jorge Iván Meza Martínez

Aplicaciones web construidas a base de componentes:

Tutorial JBuilder 7 Entreprise JavaBeans

Este capitulo contiene una análisis de los posibles soluciones que se pueden presentar en el momento de desarrollar aplicaciones con J2EE

Enterprise JavaBeans

Enterprise JavaBeans 3. Aplicaciones Distribuidas

CURSO. Programación web JAVA JEE. Civil, sistemas, diseño

[CASI v.0109] Pág. 1

Postgrado en Servicios Java. Experto Desarrollador de Componentes de Negocio

Guía del Curso Especialista TIC en Programación con JAVA 8 SE Standard Edition

Postgrado en Java: Especialización en Desarrollo de Componentes de Negocio con Java Beans (Online)

Invocación de Métodos Remotos: Prácticas de Laboratorio

Experto en Desarrollo de Componentes de Negocio con Tecnología Empresarial Java Beans

Invocación de métodos remotos en Java: JAVA - RMI

Tema 5. Plataforma Java EE

Qué ofrece Autentia Real Business Solutions S.L?

Técnico Superior en Programación con Java SE Standard Edition

Curso: Programación con JAVA SE Estándar Edition.

Postgrado en Servicios Java. Experto Desarrollador de Componentes de Negocio y Componentes Web

El servicio de echo en Java-RMI

Qué ofrece Autentia Real Business Solutions S.L?

Remote Method Invocation (RMI)

Cambios en Ingeniería de Software

Objetos Distribuidos

SOA: Panorama WEB-SERVICES

Postgrado en Servicios Java. Experto Desarrollador de Componentes de Negocio

Postgrado en Java: Especialización en Desarrollo de Componentes de Negocio con Java Beans

Quées EJB? (1) EJB (Enterprise JavaBean) es una tecnología J2EE para la implementación de la capa modelo de una aplicación

Propuesta de Arquitectura. Grupo Técnico RedVUCE

1. Posicionarse en la vista Services y seleccionar el ítem Servers. En el menú contextual del Mouse seleccionar la opción Add Server

Experto en Desarrollo de Componentes de Negocio con Tecnología Empresarial Java Beans

Panorámica de la asignatura

JAVA RMI: ESTRUCTURA INTERNA RMI

RMI. Aplicaciones Distribuidas

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Desarrollando servidores de información con Java

Enterprise JavaBeans 2.x. Aplicaciones Distribuidas

Arquitecturas Empresariales y la plataforma J2EE

Cursos de Formación GRUPO DANYSOFT : Cursos JBuilder. Equipo Grupo Danysoft septiembre de (+34)

Diseño e Implementación con J2EE

Arquitectura Java Web. Ing. Juan Zevallos Valle

Presentación J2EE. Sesión 1: Introducción a las tecnologías J2EE. Especialista en Aplicaciones y Servicios Web con Java Enterprise.

JAVA EE 5. Arquitectura, conceptos y ejemplos.

JavaEE.

Master en Java Certificación para Programadores

Tema 5. Plataforma Java EE

DIPLOMADO EN JAVA JSE Y JEE

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Requisitos. Universidad ORT Arquitectura de Software

Introducción al Desarrollo de Aplicaciones Empresariales

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Implementación de clientes con CORBA y Java

(Dibujo de arquitectura de Ebay) Arquitectura software en capas. Arquitectura Web Multicapa. Tema 6: datos: ficheros o bbdd. 2. Capa Presentación:

Analista Programador Java: Business Apps Expert

Transcripción:

Sistemas de Operación 3

Los EJBs proporcionan un modelo de componentes distribuido estándar del lado del servidor. El objetivo de los EJBs es dotar al programador de un modelo que le permita abstraerse de los problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia, seguridad,...) para centrarse en el desarrollo de la lógica de negocio en sí. El hecho de estar basado en componentes permite que éstos sean flexibles y sobre todo reutilizables. No hay que confundir los Enterprise JavaBeans con los JavaBeans. Los JavaBeans también son un modelo de componentes creado por Sun Microsystems para la construcción de aplicaciones, pero no pueden utilizarse en entornos de objetos distribuidos al no soportar nativamente la invocación remota (RMI).

Los EJBs se disponen en un contenedor EJB dentro del servidor de aplicaciones. La especificación describe cómo el EJB interactúa con su contenedor y cómo el código cliente interactúa con la combinación del EJB y el contenedor. Dado que se trata simplemente de interfaces Java y no de clases concretas, el contenedor EJB genera clases para esas interfaces que actuarán como un proxy en el cliente. El cliente invoca un método en los proxies generados que a su vez sitúa los argumentos del método en un mensaje y envía dicho mensaje al servidor EJB. Los proxies usan RMI-IIOP para comunicarse con el servidor EJB (RMI-IIOP denota la interface RMI de Java sobre el sistema CORBA). El servidor llamará a un método correspondiente a una instancia de la clase de implementación Java para manejar la llamada del método remoto.

Cada EJB debe facilitar dos interfaces y una clase de implementación Java: Interfaz "Home La interfaz "home" permite al código cliente manipular ciertos métodos de clase del EJB, esto es, métodos que no están asociados a ninguna instancia particular. Por ejemplo: creación, borrado y búsqueda... Interfaz remota La interfaz remota especifica los métodos de instancia públicos encargados de realizar las operaciones. Clase de implementación EJB Las clases de implementación EJB las suministran los desarrolladores de aplicaciones, que facilitan la lógica de negocio ("business logic") o mantienen los datos ("business data") de la interfaz de objeto, esto es, implementan todos los métodos especificados por la interfaz remota y, posiblemente, algunos de los especificados por la interfaz "home".

Existen tres tipos de Entreprise Java Beans: EJBs de Entidad (Entity EJBs): Su objetivo es encapsular los objetos del lado del servidor que almacena los datos. Los EJBs de entidad presentan la característica fundamental de la persistencia: Persistencia gestionada por el contenedor (CMP): el contenedor se encarga de almacenar y recuperar los datos del objeto de entidad mediante el mapeo de una tabla de la base de datos. Persistencia gestionada por el bean (BMP): el propio objeto entidad se encarga, mediante una base de datos u otro mecanismo, de almacenar y recuperar los datos a los que se refiere, por lo cual, la responsabilidad de implementar los mecanismos de persistencia es del programador.

EJBs de Sesión (Session EJBs): Gestionan el flujo de la información en el servidor. Generalmente sirven a los clientes como una fachada de los servicios proporcionados por otros componentes disponibles en el servidor. Puede haber dos tipos: con estado (stateful). Los beans de sesión con estado son objetos distribuidos que poseen un estado. El estado no es persistente, pero el acceso al bean se limita a un solo cliente. sin estado (stateless). Los beans de sesión sin estado son objetos distribuidos que carecen de estado asociado permitiendo por tanto que se los acceda concurrentemente. No se garantiza que los contenidos de las variables de instancia se conserven entre llamadas al método.

EJBs dirigidos por mensajes (Message-driven EJBs): Son los únicos beans con funcionamiento asíncrono. Usando el Java Messaging System (JMS), se suscriben a un tema (topic) o a una cola (queue) y se activan al recibir un mensaje dirigido a dicho tema o cola. No requieren de su instanciación por parte del cliente.

Un EJB a través de un "EJB Container" ofrece varios servicios y funcionalidades, algunas son las siguientes: Servicios ("Middleware") Esta posiblemente sea la mayor ventaja de un EJB. Cuando se diseña un componente de Software se deben definir varios servicios para su funcionamiento, algunos pueden ser: Si ocurre un error que procedimiento debe ejecutarse? Si la base de datos especificada se encuentra desactivada, existe otra alternativa? No fue posible cumplir exitosamente "x" procedimiento, se deben retractar sus acciones parciales o reinvocar la transacción? Estos Servicios (comúnmente llamados "Middleware") por lo general son requeridos además de la lógica contenida en los componentes principales, obviamente estos servicios ("Middleware") aún deben ser diseñados, sin embargo, mediante un "EJB Container" se ofrecen algunos de estos.

División de Trabajo La posibilidad de dividir "Servicios"(EJB Container) de "Componentes Principales"(EJB'S) permite una clara división de trabajo, esto es, un diseñador de "componentes"(ejb's) puede concentrar sus esfuerzos en la "lógica de proceso" sin preocuparse del diseño de servicios. Y de la misma manera un "diseñador" de servicios("middleware") concentrarse en su área. Esta división de trabajo trae consigo otra pregunta: Como se logra la interoperabilidad? La interoperabilidad entre "Servicios" y "Componentes" se debe a la existencia de especificaciones para EJB's, estas especificaciones (parte primordial de J2EE ) definen los requerimientos para un "EJB Container" y los requisitos para un "Enterprise Java Bean". Procedimientos Remotos ( RMI ) Debido a la solución que intenta ofrecer "Enterprise Java Beans" su diseño gira alrededor de procedimientos remotos.

Diversos Vendedores El uso de especificaciones para EJB's permite que existan diversos vendedores tanto de "EJB Containers" los cuales son incluidos en un java application server, así como "Enterprise Java Bean's" los cuales resuelven algún tipo de lógica. Lo anterior permite ejecutar cualquier "EJB" en cualquier "EJB Container", esto es, puede adquirir un conjunto de EJB's producidos por Inprise o inclusive desarrollarlos dentro de su empresa y estos podrán ser ejecutados en un "EJB Container" de IBM, Inprise o JBoss. En lo que se refiere a diferencias en costo y calidad, generalmente estas dependen de las funcionalidades que van más allá de las especificaciones EJB. El "EJB Container" de IBM ofrece una integración más eficiente con sus productos (Domino, DB2), mientras Inprise puede desarrollar su "EJB Container" orientado hacia ambientes financieros, Oracle hacia manufactura y sus productos en "Bases de Datos", etc. Diversos Clientes Un EJB puede interactuar con una gran gamma de clientes desde: JSP o Servlets, bases de datos, Applets, sistemas ERP (SAP, JDEdward's).

Asimismo, algunas de las desventajas son las siguientes: 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 (traduciéndose 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.

HolaMundoRemote.java package com.saludo; import java.rmi.remoteexception; import javax.ejb.ejbobject; public interface HolaMundoRemote extends EJBObject{ public String saludo(string nombre) throws RemoteException; } HolaMundoHome.java package com.saludo; import java.rmi.remoteexception; import javax.ejb.createexception; import javax.ejb.ejbhome; public interface HolaMundoHome extends EJBHome{ HolaMundoRemote create() throws RemoteException, CreateException; }

HolaMundoRemote.java package com.saludo; import java.rmi.remoteexception; import javax.ejb.ejbexception; import javax.ejb.sessionbean; import javax.ejb.sessioncontext; public class HolaMundoBean implements SessionBean{ private static final long serialversionuid ; // Nuestro método "de negocio" public String saludo(string nombre){ System.out.println("Un cliente me ha invocado"); return "Hola, " + nombre; } } // Métodos del ciclo de vida del Bean (obligatorios) public void ejbcreate(){} public void ejbactivate() throws EJBException, RemoteException {} public void ejbpassivate() throws EJBException, RemoteException {} public void ejbremove() throws EJBException, RemoteException {} public void setsessioncontext(sessioncontext arg0) throws EJBException, RemoteException {}

jar cfv holamundo.jar com/saludo/* META-INF/ejb-jar.xml Enterprise JavaBeans ejb-jar.xml <?xml version="1.0"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <description>ejemplo de EJB Simple</description> <enterprise-beans> <session> <display-name>bean HolaMundo</display-name> <ejb-name>holamundo</ejb-name> <home>com.saludo.holamundohome</home> <remote>com.saludo.holamundoremote</remote> <ejb-class>com.saludo.holamundobean</ejb-class> <session-type>stateless</session-type> <transaction-type>bean</transaction-type> </session> </enterprise-beans> </ejb-jar> Para instalar la aplicación: jar cfv holamundo.jar com/saludo/* META-INF/ejb-jar.xml Ello conlleva generar un fichero java comprimido (.jar) que colocaremos en otro directorio concreto del servidor de aplicaciones.

HolaMundoRemote.java import java.util.properties; import javax.naming.context; import javax.naming.initialcontext; import javax.rmi.portableremoteobject; import com.saludo.holamundohome; import com.saludo.holamundoremote; public class BeanCliente { public static void main(string[] args) { // Preparación de propiedades para construir el contexto inicial de JNDI Properties prop = new Properties(); prop.put(context.initial_context_factory,"org.jnp.interfaces.namingcontextfactory"); prop.put(context.provider_url, "localhost:1099"); try{ InitialContext jndicontext = new InitialContext(prop); // obtener el contexto inicial antes preparado System.out.println(" >> Obtenido un contexto JNDI"); Object ref = jndicontext.lookup("holamundo"); // Obtener una referencia al Bean System.out.println(" >> Obtenida una referencia al Bean \"HolaMundo\""); HolaMundoHome home = (HolaMundoHome) // Obtener una referencia a la interfaz Home PortableRemoteObject.narrow(ref, HolaMundoHome.class); HolaMundoRemote h = home.create(); // Creación de la interfaz remota a partir del Home: System.out.println("Invocando el EJB: " + h.saludo("pedro")); // Invocamos finalmente al Bean }catch(exception ex){ System.out.println(ex.toString()); } } }

Resultado de ejecución: >> Obtenido un contexto JNDI >> Obtenida una referencia al Bean "HolaMundo" Invocando el EJB: Hola, Pedro