03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas...

26
14/06/22 Sistemas Distribuidos 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

Transcript of 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas...

Page 1: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

21/04/23 Sistemas Distribuidos 1

JBOSS - EJB 3.0

Trabajo de InvestigaciónAsignatura de Sistemas DistribuidosCurso 5º de Ingeniería InformáticaAlumno: Pablo J. Rosique VidalProfesor: Diego Sevilla Ruiz

Page 2: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 221/04/23

Í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

Page 3: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 321/04/23

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)

Page 4: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 421/04/23

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)…

Page 5: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 521/04/23

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

Page 6: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 621/04/23

Creando Aspectos en JBoss AOPpublic 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);

}

}

}

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");

}

}

}

Dificulta el desarrollo del código

El código crece rápidamente

Dificulta la extensión de la funcionalidad

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

Page 7: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 721/04/23

Aplicar Aspectos en JBoss AOP

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

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 >

Page 8: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 821/04/23

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)

Page 9: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 921/04/23

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

Page 10: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1021/04/23

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.

Page 11: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1121/04/23

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

Page 12: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1221/04/23

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)

Page 13: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1321/04/23

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>

Page 14: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1421/04/23

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>

Page 15: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1521/04/23

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

Page 16: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1621/04/23

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)

Page 17: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1721/04/23

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

Page 18: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1821/04/23

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

Page 19: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 1921/04/23

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

PRÉSENTATION(premier tiers)

LOGIQUE MÉTIER(tiers intermediaire)

BACK-END(troisiéme tiers)

EJBSession

EJBSession

EJBSession

Table

Table

Table

Serveur d’applications J2EE

Les valeurs de la méthode invoquée

Invocation d’une méthode métier

InterfaceRemote

InterfaceHome

Réseau

( protocole RMI )POJO

JNDI

JMS

JDBC

EJBEntité

Conteneur EJB- Gestion du cycle de vie- Gestion de communication- Gestion de connexion de base de données- Gestion de transaction

InterfaceLocale

InterfaceHome locale

JDBC

Stub

Page 20: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 2021/04/23

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

Page 21: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 2121/04/23

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();

Page 22: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 2221/04/23

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

Page 23: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 2321/04/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

Page 24: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 2421/04/23

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>

Page 25: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 2521/04/23

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

Page 26: 03/06/2015Sistemas Distribuidos 1 JBOSS - EJB 3.0 Trabajo de Investigación Asignatura de Sistemas Distribuidos Curso 5º de Ingeniería Informática Alumno:

Sistemas Distribuidos 2621/04/23

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