Sistemas Distribuidos

Slides:



Advertisements
Presentaciones similares
2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
Advertisements

JEE Introducción a Java Enterprise Edition (JEE) y el modelo Enterprise Java Beans (EJB)
Web Services.
Programación Orientada a Objeto 1
U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
2011Integración de Aplicaciones Desarrollo Basado en Componentes.
J2EE – Java 2 Enterprise Edition
Servicios Web.
Arquitectura, conceptos y ejemplos
"java del lado del servidor" Servlet y JSP Java Server Pages.
Introducción al software
Unidad 6: EJB 3.0 David Rodríguez 1.
Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz.
Investigación Servidor de Aplicaciones WebSphere
RMI Remote Method Invocation
Java 2 Platform Enterprise Edition
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
BASES DE DATOS ORIENTADAS A OBJETO
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Sistemas Operativos Distribuidos Plataforma Cliente/Servidor
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
MAIRA LUCIA ORTIZ CAMILO ORTEGON DIAZ CRISTIAN CAMILO VARGAS
Desarrollo de Aplicaciones Utilizando Java Edición Empresarial – JEE6
Propósito: * Mostrar indicativos porcentuales de los diversos microorganismos con los que se alimentan el camarón en un manejo semi-intensivo aplicado.
Ingeniería de Software
Viviana Poblete López Módulo: Modelo de Datos
Arquitectura de una aplicación
Programación Orientada a Aspectos (POA)
Bases de Datos Orientadas a Objetos (BDOO)
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
SPRING MVC.
J2EE Java Enterprise edition eilin chang Matthew pabon Gabriel vega.
Patrones de Diseño: Command
J2EE – Java 2 Enterprise Edition
Computación en la Nube UASF.
Enterprise Middleware: Software entre el sistema operativo y tus aplicaciones que provee servicios como: Persistencia de datos Transacciones Mensajes.
Asignatura: Base de datos para aplicaciones Integrantes:
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
Haga clic para modificar el estilo de subtítulo del patrón 28/04/09 Por ARLEDY SARRIA MOLINA NAZLY DIAZ ARIZA JHOANNA MARQUELLA DESARROLLO DE SOFTWARE.
Integración CORBA/OODB - Discusión Una Nueva Arquitectura para la Integración de CORBA y OODB Helios Alonso - Luis Pandolfi - Pablo Rodríguez Bocca Universidad.
Universidad Nacional de San Juan Facultad de Ciencias Exactas, Físicas y Naturales “WEB SERVICES” Integrantes: Ene Adriana Guevara Vanina Martínez Cintia.
Enterprise JavaBeans Arvelo, Yolife Ascanio, Eduardo Chacón, Johnny Quintana, Susana Unversidad Simón Bolívar Departamento de Computación y T.I Sistemas.
Introducción al lenguaje de programación Java
Desacoplamiento de Capas
Aplicaciones Web de Servidor
Contacta un Servlet o un JSP
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
PROGRAMAS INFORMATICOS
Términos y Conceptos Básicos
Métrica v2.1 Técnicas: Modelado de datos (Parte 1)
Modelo de 3 capas.
Enterprise JavaBeans Distributed Component Object Model
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
Your Logo ING. FREDY ALEXANDER MARTINEZ. Here comes your footer  Page 2 Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación.
Acceso a Datos Erick López Ovando Licenciado en Informática.
Programación Orientada a Objetos: CLASES Y OBJETOS
Arquitectura de una aplicación Arquitectur a: desarrolla un plan general del sistema, asegurando que las necesidades de los usuarios sean atendidas. Ingeniería.
Arquitecturas de Integración Mensajería
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLEMENTACIÓN DE COMPONENTES.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
Autores: Myriam Montes, Iván Viera, Carlos Caizaguano, José Sancho
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
1.  Tomcat es un contenedor web basado en el lenguaje Java que actúa como motor de servlets y JSPs.  Se ha convertido en la implementación de referencia.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Servicios Web-SOA Aula: Fomento 05/06/2006 a 08/05/2006.
ENTERPRISE JAVA BEANS. ACCESO AL EJB EJB_HOME. Accesible mediante JNDI. Permite crear y destruir EJB. EJB_OBJECT Expone los métodos del negocio del EJB.
Transcripción de la presentación:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sistemas Distribuidos Bibliografía JBoss + AOP http://docs.jboss.org/aop/1.3/aspect-framework/userguide/en/pdf/jbossaop_userguide.pdf http://docs.jboss.org/aop/1.3/aspect-framework/ http://aopalliance.sourceforge.net/ EJB 3.0 http://java.sun.com/products/ejb/ http://java.sun.com/products/ejb/docs.html http://www.oracle.com/technology/tech/java/ejb30.html 16/04/2017 Sistemas Distribuidos