La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.

Presentaciones similares


Presentación del tema: "Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas."— Transcripción de la presentación:

1 Enterprise Java Beans

2 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

3 Tipos de EJBs Las 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

4 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ón

5 Especificación de EJBs Las EJBs se pueden inyectar en otros objetos gestionados por el servidor, como los servlets, utilizando la anotación @EJB El objeto en el que se inyecta la EJB se llama cliente Las 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

6 Ejemplo de anotación de inyección en un servlet public class MiServ extends HttpServlet { @EJB private MiEJB miEJBRef; protected void doGet(…) { … miEJBRef.miMetodo(); …} }

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

8 Ejemplo de EJB de sesión sin estado package myPack; Import javax.ejb.Stateless; @Stateless public class MyEJB implements MyEJBLocal { public String myMethod(String myName) { return “Hello “ + myName;} }

9 Contextos y EJBs Las 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 solicita Solamente se deben utilizar si se van a utilizar para ejecutar métodos, pues en caso contrario son innecesariamente ineficientes

10 Contextos y EJBs Clientes 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ón Diferentes 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

11 Contextos y EJBs, II Lo anterior es cierto también para las componentes dirigidas por mensajes Como consecuencia de lo anterior, las EJBs de sesión nunca corresponden a una sesión de la aplicación

12 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ódigo Las aplicaciones web pueden incluir módulos específicos EJB, en cuyo caso se llaman aplicaciones Enterprise

13 Estructura de una aplicación Enterprise

14 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

15 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

16 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

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

18 Utilización de EJBs sin 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 utiliza Context ctx = new InitialContext(); MiEJB miEJBRef = (MiEJB) ctx.lookup("java:global/env/audit");

19 Utilización de EJBs sin anotaciones, II Cuando se utiliza JNDI para acceder a EJBs (u otros objetos inyectables) hay que especificar la creación de los objetos en un fichero XML de configuración, llamado ejb-jar.xml.

20 Utilización de EJBs sin anotaciones, III Bean HolaMundo HolaMundo com.saludo.HolaMundoHome com.saludo.HolaMundoRemote com.saludo.HolaMundoBean Stateless Bean

21 Transacciones en Java EE Java 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.

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

23 Transacciones en JEE, III Las 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.

24 Transacciones en JEE, IV Cuando 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.

25 Transacciones en JEE, V JEE permite la definición programática de transacciones mediante la clase inyectable UserTransaction, que tiene métodos begin(), commit() y rollback().

26 Ciclo de vida de entidades

27 Ejercicio voluntario [EJBPERS] Aplicación web que amplía la del ejercicio [DBPERS1] del capítulo de Persistencia utilizando transacciones


Descargar ppt "Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas."

Presentaciones similares


Anuncios Google