1 / 26

JBOSS - EJB 3.0

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. Índice y Contenido. JBoss AS 4.0.x J2EE + Aspect-Oriented Programming (AOP) Contenedor EJB’s

yank
Download Presentation

JBOSS - EJB 3.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Sistemas Distribuidos

  2. Í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 Sistemas Distribuidos

  3. 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) Sistemas Distribuidos

  4. 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)… Sistemas Distribuidos

  5. 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 Sistemas Distribuidos

  6. 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"); } } } Sistemas Distribuidos

  7. 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 Sistemas Distribuidos

  8. 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) Sistemas Distribuidos

  9. 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 Sistemas Distribuidos

  10. 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. Sistemas Distribuidos

  11. 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 Sistemas Distribuidos

  12. 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) Sistemas Distribuidos

  13. 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> Sistemas Distribuidos

  14. 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> <cmp-field> <field-name>nombre</field-name> </cmp-field> … </entity> Sistemas Distribuidos

  15. 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 Sistemas Distribuidos

  16. 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) Sistemas Distribuidos

  17. 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 Sistemas Distribuidos

  18. 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 Sistemas Distribuidos

  19. 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 Sistemas Distribuidos

  20. 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 Sistemas Distribuidos

  21. 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(); Sistemas Distribuidos

  22. 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 Sistemas Distribuidos

  23. 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 Sistemas Distribuidos

  24. 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> <method-permission> Sistemas Distribuidos

  25. 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 Sistemas Distribuidos

  26. 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 Sistemas Distribuidos

More Related