1 / 27

Enterprise Java Beans

Enterprise Java Beans. 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

morse
Download Presentation

Enterprise Java Beans

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. 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ónsin 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 unaaplicació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 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 utiliza Context ctx = new InitialContext(); MiEJB miEJBRef = (MiEJB) ctx.lookup("java:global/env/audit");

  19. Utilización de EJBssin 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 EJBssin anotaciones, III <?xml version="1.0"?> <!DOCTYPE ejb-jar ….dtd"> <ejb-jar> <enterprise-beans> <session> <display-name>Bean HolaMundo</display-name> <ejb-name>HolaMundo</ejb-name> <home>com.saludo.HolaMundoHome</home> <remote>com.saludo.HolaMundoRemote</remote> <ejb-class>com.saludo.HolaMundoBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans> </ejb-jar>

  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

More Related