La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistemas Distribuidos

Presentaciones similares


Presentación del tema: "Sistemas Distribuidos"— Transcripción de la presentación:

1 Sistemas Distribuidos
JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno: Pablo J. Rosique Vidal Profesor: Diego Sevilla Ruiz 16/04/2017 Sistemas Distribuidos

2 Sistemas Distribuidos
16/04/2017 Índice y Contenido JBoss AS 4.0.x J2EE + Aspect-Oriented Programming (AOP) Contenedor EJB’s Contenedor Servlets y JSP’s (tomcat) EJB 3.0 Motivación Implementación del Modelo Tipos de Entidades EJB’s de Entidad Persistencia (BMP, CMP) EJB’s de Sesion EJB’s Dirigidos por Mensajes Funcionamiento de los Enterprise JavaBean Anotaciones (Xdoclet) Transacciones Roles y Seguridad Conclusiones 16/04/2017 Sistemas Distribuidos

3 Sistemas Distribuidos
16/04/2017 JBoss AS 4.0.x Primer servidor de aplicaciones de código abierto disponible en el mercado Es una arquitectura orientada a servicios Por estos motivos, JBoss es una plataforma muy popular de middleware para desarrolladores Las características más destacadas de JBoss son: Producto de licencia de código abierto sin coste adicional Cumple los estándares Confiable a nivel de empresa Orientado a arquitectura de servicios Es flexible y consistente Ofrece servicios del middleware para cualquier objeto de Java Soporte completo para Java Management Extensions (JMX) 16/04/2017 Sistemas Distribuidos

4 J2EE + Aspect-Oriented Programming (AOP)
16/04/2017 J2EE + Aspect-Oriented Programming (AOP) Java 2 Enterprise Editions (J2EE) Comprenden un conjunto de especificaciones y funcionalidades orientadas al desarrollo de aplicaciones empresariales J2EE no deja de ser un estándar de desarrollo, construcción y despliegue de aplicaciones Algunas de sus funcionalidades más importantes son: Acceso a base de datos (JDBC) Utilización de directorios distribuidos (JNDI) Acceso a métodos remotos (RMI/CORBA) Funciones de correo electrónico (JavaMail)… 16/04/2017 Sistemas Distribuidos

5 J2EE + Aspect-Oriented Programming (AOP)
16/04/2017 J2EE + Aspect-Oriented Programming (AOP) ¿Qué es AOP? Los aspectos en la metodología de desarrollo AOP se basa en el cross-cutting concern AOP se beneficia principalmente del entorno J2EE (pero no solo de este) Existen muchas implementaciones especificas de AOP (AspectJ, JBoss-AOP, etc.) Las construcciones AOP se definen en JAVA y están vinculadas a una aplicación vía XML o por anotaciones 16/04/2017 Sistemas Distribuidos

6 Creando Aspectos en JBoss AOP
16/04/2017 Creando Aspectos en JBoss AOP Dificulta el desarrollo del código El código crece rápidamente Dificulta la extensión de la funcionalidad public class BankAccountDAO { public void withdraw(double amount) { long startTime = System.currentTimeMillis(); try { // Actual method body...} finally { long endTime = System.currentTimeMillis() - startTime; System.out.println("withdraw took: " + endTime); } El framework AOP rompe la llamada al método en partes “invocation.invokeNext()” envuelve y delega en el método actual Podemos extraer información contextual de la invocación public class Metrics implements org.jboss.aop.advice.Interceptor { public Object invoke(Invocation invocation) throws Throwable { long startTime = System.currentTimeMillis(); try { return invocation.invokeNext(); } finally { long endTime = System.currentTimeMillis() - startTime; java.lang.reflect.Method m = ((MethodInvocation)invocation).method; System.out.println("method " + m.toString() + " time: " + endTime + "ms"); } 16/04/2017 Sistemas Distribuidos

7 Aplicar Aspectos en JBoss AOP
16/04/2017 Aplicar Aspectos en JBoss AOP 1. <bind pointcut="public void com.mc.BankAccountDAO->withdraw(double amount)"> 2. <interceptor class="com.mc.Metrics"/> 3. </bind > 4. <bind pointcut="* com.mc.billing.*->*(..)"> 5. <interceptor class="com.mc.Metrics"/> 6. </bind > El código de los aspectos se ejecutan en los puntos de corte (expresiones regulares) Los puntos de entrada a eventos, pueden ser campos de acceso, llamadas a métodos, a constructores, etc. Utiliza un formato XML para definir puntos de corte Esto nos permite extender la funcionalidad de nuestro código sin que este crezca rápidamente 16/04/2017 Sistemas Distribuidos

8 Enlazado de los aspectos
16/04/2017 Enlazado de los aspectos La compilación de la aplicación con los puntos de corte se puede realizar de varias formas: Preprocesado: el código se preprocesa (similar a la implementación de C++) Post-procesado: “parchea” el codigo binario generado, enlazando las clases con sus aspectos AOP-aware: la compilación genera los códigos binarios con los aspectos asociados load-time: la maquina virtual de JAVA es la que se encarga de asociar a cada clase su/s aspectos en caso necesario, cuando se carga la clase run-time: captura cada punto de corte en tiempo de ejecución y ejecuta el aspecto correspondiente en caso necesario (esta opción requiere un entorno de ejecución adicional, JVM en caso de JAVA) 16/04/2017 Sistemas Distribuidos

9 Sistemas Distribuidos
16/04/2017 Problemas del AOP La depuración es difícil, debido a que sintácticamente el código aparece como separado pero en tiempo ejecución no lo esta Se han considerado alternativas para tratar el código separado como tipos C# Otro problema del AOP es que la captura de los “joinpoints” son unidireccionales Un entorno de desarrollo adecuado, puede ayudar a reducir los errores de este tipo 16/04/2017 Sistemas Distribuidos

10 Motivación y Contenedor EJB
16/04/2017 Motivación y Contenedor EJB Un contenedor es el código añadido a una aplicación usando servicios a fin de añadir semántica y propiedades Servicios: persistencia, transacciones, seguridad, etc. Implementación del modelo (Datos + Lógica del Negocio) de calidad en un entorno empresarial Desafíos: Representación de datos: BD relacional/OO, XML LAPD Acceso a datos: JDBC, JNDI, DAO, JDO, etc. Representación de la lógica del negocio Todo esto de un modo distribuido, eficiente escalable, seguro, transaccional, reutilizable, etc. 16/04/2017 Sistemas Distribuidos

11 Implementación del Modelo EJB
16/04/2017 Implementación del Modelo EJB Los Enterprise JavaBeans son una de las API que forman parte del estándar J2EE, pueden ofrecer: comunicación remota utilizando CORBA persistencia transacciones control de la concurrencia eventos utilizando JMS (Java messaging service) servicios de nombres y de directorio seguridad ubicación de componentes en un servidor de aplicaciones Los EJB’s proporcionan un modelo de componentes distribuido estandar para el lado del servidor 16/04/2017 Sistemas Distribuidos

12 Implementación del Modelo
16/04/2017 Implementación del Modelo El objetivo es compartir entidades del modelo entre aplicaciones Compartir la lógica del negocio (lógica del negocio cercana a los datos) 16/04/2017 Sistemas Distribuidos

13 Tipos de Enterprise JavaBeans
16/04/2017 Tipos de Enterprise JavaBeans EJB’s de Entidad (Entity EJBs): su objetivo es encapsular los objetos de lado de servidor que almacenan los datos (persistencia) Persistencia gestionada por el bean (BMP): el propio objeto entidad se encarga, mediante una BD u otro mecanismo, de almacenar y recuperar los datos a los que se refiere La responsabilidad de implementar los mecanismos de persistencia es del programador Atributos para la persistencia, contexto EJB y propiedades Constructor de inicialización Métodos de creación localización, borrado, sincronización, etc. Requiere la declaración de ciertas propiedades de configuración del bean (fichero ejb-jar.xml) <entity> <ejb-name>Producto</ejb-name> <home>ProductoHome</home> <remote>Producto</remote> <ejb-class>ProductoBean</ejb-class> <persistence-type>bean</persistence-type> <prim-key-class>java.lang.String</prim-key-class> <reentrant>False</reentrant> </entity> 16/04/2017 Sistemas Distribuidos

14 Sistemas Distribuidos
16/04/2017 Persistencia CMP 2.x Persistencia gestionada por el contenedor (CMP): el contenedor se encarga de almacenar y recuperar los datos del objeto de entidad mediante un mapeado en una tabla de una BD Todo lo relativo a la persistencia se indica declarativamente en ficheros de configuración <entity> <ejb-name>Producto</ejb-name> <ejb-class>ProductoBean</ejb-class> <home>ProductoHome</home> <remote>Producto</remote> <persistence-type>Container</persistence-type> <primkey-field>id</primkey-field> <prim-key-class>java.lang.String</prim-key-class> <reentrant>True</reentrant> <cmp-version>2.x</cmp-version> <cmp-field> <field-name>id</field-name> </cmp-field> <field-name>nombre</field-name> </entity> 16/04/2017 Sistemas Distribuidos

15 Sistemas Distribuidos
16/04/2017 Persistencia CMP 2.x En la configuración definimos los métodos de localización utilizando un lenguaje neutral EJB-QL (ej. SELECT OBJECT (P) FROM Productos AS P) <query> <query-method> <method-name>findByNombre</method-name> <method-params> <method-param>java.lang.String</method-param> </method-params> </query-method> <ejb-ql> ... </ejb-ql> </query> Modelo ideal cuando desarrollamos el sistema de información desde el principio 16/04/2017 Sistemas Distribuidos

16 Tipos de Enterprise JavaBeans
16/04/2017 Tipos de Enterprise JavaBeans 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 Con estado (stateful): son objetos distribuidos que poseen un estado, que no es persistente, pero el acceso al bean se limita a un solo cliente Sin estado (stateless): son objetos distribuidos que carecen de estado asociado permitiendo por tanto que se los acceda concurrentemente <session> <ejb-name>GestorPedidos</ejb-name> <home>GestorPedidosHome</home> <remote>GestorPedidos</remote> <ejb-class>GestorPedidosBean</ejb-class> <session-type>Stateful</session-type> <transaction-type>Container</transaction-type> </session> EJB’s dirigidos por mensajes (Message-driven EJBs): los únicos beans con funcionamiento asíncrono. Usando el Java Messaging System (JMS), se suscriben a un tópico (topic) o a una cola y se activan al recibir un mensaje dirigido a dicho tópico o cola. No requieren de su instanciación por parte del cliente (componentes anónimos) 16/04/2017 Sistemas Distribuidos

17 Funcionamiento de los Enterprise JavaBean
16/04/2017 Funcionamiento de los Enterprise JavaBean Se diseñan componentes que ofrecen una funcionalidad concreta Los componentes se disponen en un contenedor EJB dentro del servidor de aplicaciones (ej. JBoss) El servidor puede distribuir cada componente en distintos clusters (hosts, estaciones de trabajo, etc.) Las aplicaciones empresariales son cada vez mas complejas y distribuidas, de modo que es muy importante automatizar los procesos de mantenimiento 16/04/2017 Sistemas Distribuidos

18 Funcionamiento de los Enterprise JavaBean
16/04/2017 Funcionamiento de los Enterprise JavaBean Cada EJB debe facilitar una clase de implementación Java y dos interfaces Java Interface Home: permite al código cliente manipular ciertos métodos de clase del EJB (métodos que no están asociados a ninguna instancia particular) Interface Remoto: especifica los métodos de instancia públicos encargados de realizar las operaciones Estas Interfaces especifican las signaturas de los métodos remotos del EJB, pueden ser: métodos que no están ligados a una instancia específica métodos ligados a una instancia específica Se debe mantener la correspondencia entre métodos de interfaz y métodos de implementación 16/04/2017 Sistemas Distribuidos

19 Sistemas Distribuidos
16/04/2017 Modelo de sesión EJB Trabajamos simplemente con interfaces Java y no con clases concretas El cliente invoca un método en los proxies generados El servidor llamará al método correspondiente de la instancia de la clase de implementación Java 16/04/2017 Sistemas Distribuidos

20 Anotaciones de Metadatos
16/04/2017 Anotaciones de Metadatos Esta es una de las claves de EJB 3.0 Se usa principalmente por los desarrolladores para especificar requisitos en el comportamiento del contenedor Las anotaciones de metadatos se utilizan como una alternativa a los Descriptores de Despliegue (Deployment Descriptors) de versiones anteriores Ambas posibilidades se pueden usar de forma combinada 16/04/2017 Sistemas Distribuidos

21 Anotaciones (Xdoclet)
16/04/2017 Anotaciones (Xdoclet) Toda esta meta-información es conveniente expresarla dentro del código (herramienta XDocLet) /** type="CMP" name="Producto" cmp-version="2.x" * primary-key="id“ schema="Productos" remote-class="Producto" remote-class="ProductoHome" signature="java.util.Collection findAll()" * query="SELECT OBJECT(o) FROM Productos AS o" class="java.lang.String" */ pubic abstract class ProductoBean implements EntityBean { public abstract String getId(); 16/04/2017 Sistemas Distribuidos

22 Sistemas Distribuidos
16/04/2017 Transacciones Los componentes EJB pueden ser transaccionales El contenedor garantiza La atomicidad de las operaciones La consistencia de los datos El aislamiento transaccional La perdurabilidad de las modificaciones Existen distintos modelos de transaccionalidad, como: Required: arranca una transacción si no hay ninguna actual RequiresNew: inicia siempre una nueva transaccion y suspende las que han dejado de usarse Supports: reutiliza transacciones existentes 16/04/2017 Sistemas Distribuidos

23 Sistemas Distribuidos
Transacciones Las transacciones de los EJB entidad son gestionadas por el contenedor Para los sesión, dos alternativas (fichero configuración): Gestionada por el bean Gestionada por el contenedor (recomendada) Situaciones que abortan una transacción: Una excepción de Runtime: La instancia que la lanza queda descartada. Marcar la transacción como rollback: context.setRollbackOnly() Transacciones gestionadas por el contenedor 16/04/2017 Sistemas Distribuidos

24 Sistemas Distribuidos
16/04/2017 Roles y Seguridad Desarrollo de aplicaciones basada en el ensamblado de componentes Rol ensamblador Rol deployer Ficheros de configuración Pueden definir enlace entre componentes, transaccionalidad, control de ejecución de métodos, etc. <method-permission> <role-name>Gerente</role-name> <method> <ejb-name> Producto </ejb-name> <method-name> setPrecioBase </ejb-name> </method> 16/04/2017 Sistemas Distribuidos

25 Sistemas Distribuidos
16/04/2017 Conclusiones Existe mucho soporte de servidores de aplicaciones (JBoss, WebLogic, etc.) Eficiente (controla el uso de objetos) Transaccional mediante reglas declarativas Reglas de seguridad Orientado a la programación con componentes EJB 3.0, ofrece una nueva, simplificada y mejorada API, para el desarrollo de aplicaciones empresariales distribuidas Independiente de la plataforma Ejecución JAVA y protocolo CORBA/IIOP Mejora la arquitectura y reduce la complejidad de las versiones anteriores (EJB 2.1) Permite anotaciones para facilitar su uso y AOP para el mejorar la extensibilidad 16/04/2017 Sistemas Distribuidos

26 Sistemas Distribuidos
Bibliografía JBoss + AOP EJB 3.0 16/04/2017 Sistemas Distribuidos


Descargar ppt "Sistemas Distribuidos"

Presentaciones similares


Anuncios Google