ejbs - java

24
EJBs • Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas de mensajes, ficheros, etc) y proporcionar servicios (seguridad, transacciones, mensajería, nombres) de forma sistemática y optimizada • La utilización de EJB SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Upload: orlando-pihue-montoya

Post on 06-Dec-2015

29 views

Category:

Documents


2 download

DESCRIPTION

Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos y proporcionar servicios de forma sistemática y optimizada.

TRANSCRIPT

Page 1: EJBs - JAVA

EJBs

• Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas de mensajes, ficheros, etc) y proporcionar servicios (seguridad, transacciones, mensajería, nombres) de forma sistemática y optimizada

• La utilización de EJB simplifica el desarrollo de aplicaciones web y permite construir aplicaciones escalables

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 2: EJBs - JAVA

Tipos de EJBsLas EJBs pueden ser de sesión o dirigidas por mensajes.

– Las EJBs de sesión ejecutan métodos de forma síncrona, pudiendo devolver valores

– Las EJBs dirigidas a mensajes añaden un mensaje a una cola indicando tareas pendientes de ejecutar, que se llevan a cabo de forma asíncrona

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 3: EJBs - JAVA

Tipos de EJBs, II

Las EJBs de sesión pueden ser con estado, sin estado o únicas (singleton)

– Las EJBs con estado las utiliza un único cliente para ejecutar sus métodos y mantienen sus atributos entre llamadas

– Las EJBs sin estado pueden ser utilizadas consecutivamente por clientes arbitrarios cada vez que ejecutan un método. Pueden mantener sus atributos entre llamadas

– Las EJBs únicas tienen una sola instancia para toda la aplicaciónSEMANA 6: EJBs - Ing. Orlando Pihue

Montoya

Page 4: EJBs - JAVA

Especificación de EJBsLas EJBs se pueden inyectar en otros objetos gestionados por el servidor, como los servlets, utilizando la anotación @EJBEl objeto en el que se inyecta la EJB se llama clienteLas EJBs pueden ejecutarse en el módulo del cliente o en módulos específicos, que pueden incluso estar en ordenadores diferentes del del cliente

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 5: EJBs - JAVA

Especificación de EJBsLas EJBs sin estado se definen mediante la anotación @Stateless en su claseLas EJBs con estado se definen mediante la anotación @Stateful en su claseLas EJBs únicas se definen mediante la anotación @Singleton en su clase

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 6: EJBs - JAVA

Ejemplo de anotación de inyección en un servlet

public class MiServ extends HttpServlet {@EJBprivate MiEJB miEJBRef;protected void doGet(…) {

…miEJBRef.miMetodo();… }

}SEMANA 6: EJBs - Ing. Orlando Pihue

Montoya

Page 7: EJBs - JAVA

Ejemplo de EJB de sesiónsin estado

package myPack;Import javax.ejb.Stateless;@Statelesspublic class MyEJB implements

MyEJBLocal {public String myMethod(String myName) {

return “Hello “ + myName; }}

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 8: EJBs - JAVA

Contextos y EJBsLas EJBs únicas corresponden al contexto de aplicación, pues hay garantías de que hay una sola por cada aplicación y el contenedor correspondiente la inyecta en su momento dentro del ciclo de vida del objeto gestionado que lo solicitaSolamente se deben utilizar si se van a utilizar para ejecutar métodos, pues en caso contrario son innecesariamente ineficientes

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 9: EJBs - JAVA

Contextos y EJBsClientes dentro de diferentes sesiones de una aplicación web pueden acceder a la misma EJB de sesión no únicas, por lo que estas EJBs no corresponden al contexto de sesiónDiferentes componentes web pueden acceder a diferentes EJBs de sesión no únicas de la misma clase al ejecutar la misma instrucción, por lo que las EJBs no corresponden al contexto de aplicación

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 10: EJBs - JAVA

Contextos y EJBs, IILo anterior es cierto también para las componentes dirigidas por mensajesComo consecuencia de lo anterior, las EJBs de sesión nunca corresponden a una sesión de la aplicación

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 11: EJBs - JAVA

Reutilización y escalabilidad de EJBs

Los módulos que forman las aplicaciones Java EE, que dan lugar a ficheros jar que se incluyen en el fichero ear de las aplicaciones correspondientes, permiten la reutilización de códigoLas aplicaciones web pueden incluir módulos específicos EJB, en cuyo caso se llaman aplicaciones Enterprise

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 12: EJBs - JAVA

Estructura de unaaplicación Enterprise

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 13: EJBs - JAVA

Reutilización y escalabilidad de EJBs, II

Cuando una aplicación Enterprise utiliza un módulo EJB, el módulo Web de la aplicación incluye una interfaz implementada por las clases de las EJBs que utiliza.La interfaz utilizada por los objetos de un módulo que acceden a EJBs que están en otro módulo se llama interfaz de negocios, y lleva una anotación especial

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 14: EJBs - JAVA

Reutilización y escalabilidad de EJBs, III

Una aplicación puede acceder a un módulo EJB que está en otra máquina java (normalmente, en otro servidor)La interfaz utilizada por los objetos de un módulo que acceden a EJBs que están en la misma máquina Java se llama interfaz local y se define con la anotación @local

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 15: EJBs - JAVA

EJB: Clientes remotos

• En el caso de EJBs que están en la máquinas Java diferentes se utiliza la anotación @Remote

• Las llamadas a métodos de EJBs remotas pasan los atributos por copia en lugar de por valor, y los valores devueltos también se copian

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 16: EJBs - JAVA

Características recientes de Java EE

La utilización de EJBs sin definir explícitamente una interfaz ha sido incorporada recientemente a Java EE (especificación Java Beans 3.1, dentro de Java EE 6)La utilización de anotaciones ha sido incorporada recientemente a Java (Java SE 5) y a Java EE (Java EE 5)

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 17: EJBs - JAVA

Utilización de EJBssin anotaciones

Java EE permite inyectar elementos mediante un servicio de búsqueda basado en nombres (JNDI, Java Naming and Directory Interface). En lugar de

@EJB private MiEJB miEJBRef;se utilizaContext ctx = new InitialContext();MiEJB miEJBRef = (MiEJB) ctx.lookup("java:global/env/audit");

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 18: EJBs - JAVA

Transacciones en Java EEJava EE permite definir transacciones de SQL, según se describieron al estudiar la API de Persistencia, o de software.Una transacción de software corresponde a la ejecución de un método de una EJB.Si se lanza una excepción durante una transacción de software, se ejecutan acciones de recuperación del error.

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 19: EJBs - JAVA

Transacciones en JEE, II

Por defecto cualquier método de cualquier EJB comienza una transacción si no hay una comenzada.Por defecto las transacciones terminan con éxito cuando se termina de ejecutar el método que las comienza sin excepciones.Al terminar con éxito una transacción los EntityManagers involucrados llaman al método flush() y ejecutan un COMMIT.

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 20: EJBs - JAVA

Transacciones en JEE, IIILas transacciones se terminan deshacien-do los cambios realizados desde su comienzo si se lanza una excepción antes de su terminación natural.Cuando se termina una transacción debido a una excepción los EntityManager involucrados ejecutan un ROLLBACK en el SGBD.

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 21: EJBs - JAVA

Transacciones en JEE, IVCuando se termina cualquier transacción todas las entidades persistentes involucradas pasan al estado Detached (el EntityManager correspondiente ejecuta el método close sobre ellas).La excepción IncompleteConversationalState, si se recoge, no termina la transacción que se está ejecutando.

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 22: EJBs - JAVA

Ciclo de vida de entidades

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 23: EJBs - JAVA

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya

Page 24: EJBs - JAVA

Java Transaction API Es parte de Java EE APIs, JTA establece una serie de

Interfaces java entre el manejador de transacciones y las partes involucradas en el sistema de transacciones distribuidas: el servidor de aplicaciones, el manejador de recursos y las aplicaciones transaccionales, JTA fue desarrollado por SUN.

JTA es una especificación construida bajo el Proceso de comunidad Java JSR 907.

SEMANA 6: EJBs - Ing. Orlando Pihue Montoya