Introducción a los EJB (parte 1)

      1 comentario en Introducción a los EJB (parte 1)

En esta entrada inicial, veremos una introducción al mundo de los EJBs. Para cualquiera que quiera iniciarse en el espacio JAVA EE, este es un lugar fantástico para empezar

Empezando con Enterprise Java Beans

En este artículo, descubriremos los diferentes servicios que nos proporcionan los EJBs por contenedor y como se controla el acceso a los EJBs.
Veremos como el contenedor configura los beans usando el concepto de convención sobre configuración y como nosotros como desarrolladores podemos obtener de nuevo el control sobre la configuración a través de metadatos especificados en anotaciones.
Aprenderemos la diferencia entre los beans @Stateless, @Stateful, @Singleton y @MessageDriven y los roles que juegan en la capa de negocio de una aplicación.

¿Qué es un Enterprise Java Bean?

El modelo de programación Java EE se ha simplificado bastante desde J2EE. Las anotaciones han reemplazado a los ficheros de descripción XML, convención sobre configuración ha sustituido a la tediosa configuración manual y la inyección de dependencias ha ocultado la creación y búsqueda de recursos.
En artículos anteriores (Introducción a CDI, ¿Qué es JSF?, y ¿Qué son las anotaciones JAX-RS? (en inglés)), hemos hablado acerca de las diferentes capas de una aplicación empresarial típica. Hemos hablado de la capa de presentación, y ahora hablaremos de la capa de negocio.

Encapsular la lógica de negocio

Esto es donde los EJBs encajan en nuestra arquitectura. Los EJBs tienden a encapsular la lógica de negocio, así que aquí es donde encontraremos que se ejecuta la mayoría de la lógica principal.
Los EJBs se ejecutan en un contenedor que proporciona una variedad de servicios como seguridad de hilos. De hecho, todos los EJBs son seguros a nivel de hilo, ya que como cada instancia del EJB se ejecuta en un contexto de hilo único, nunca tendremos problemas de concurrencia. Las instancias se agrupan y el acceso se limita.
Los EJBs se monitorizan. Si observas la consola del contenedor, verás un interfaz mostrando datos relacionados con los EJBs que están ejecutándose, sus tiempos de respuesta y otra información útil.
Los EJBs siempre se ejcutan dentro de una transacción de modo que cada vez que llamas a un método de un EJB, se ejecutará de forma segura en una transacción.
Todos estos servicios los proporciona el contenedor sin que tengamos que solicitarlo expresamente.

Dos tipos de EJB

Esencialmente hay dos tipos de EJBs:

  • Beans de sesión
  • Beans dirigidos por mensajes

Estos beans tienen anotaciones de apoyo, echemos un vistazo a los beans de sesión:

Beans de sesión

Los beans de sesión implementan la lógica de negocio. Estos podrán ser con estado (stateful), sin estado (stateless) o singletons y se definen usando las anotaciones: @Stateful, @Stateless o @Singleton.
Un bean de sesión funciona como una extensión del cliente en el sentido de que mantiene datos relacionados con el cliente que son únicos y diferentes datos del estado del cliente.
Crea una relación uno a uno entre el cliente y el propio bean. Así pues si hay 100 conexiones cliente habrá 100 instancias de un bean stateful en memoria.
Así que cuando diseñemos un bean, pregúntate: ¿es este bean una extensión del cliente? Si lo es, necesitamos que el bean mantenga el estado, así que tendrá que ser un bean stateful. En caso contrario, será un bean stateless.
Si queremos reutilizar objetos y tener un único objeto al que pueden acceder múltiples clientes, debemos usar o bien un singleton o un bean stateless.
En un mundo sin estado, esta relación muchos a uno se crea a través de una estructura de agrupación (pooling), de modo que cuando un cliente hace una petición, puede parecer una relación muchos a uno, pero en realidad se recupera un sólo objeto de la agrupación en cada petición.

Beans de mensaje

Tan sólo hay un tipo de bean de flujo de trabajo – el bean dirigido por mensaje – y se anota con @MessageDriven. Estos beans son la extensión del sistema de mensajes y representan la funcionalidad del endpoint.
No necesitan ocuparse de como el mensaje se entrega o consume, sólo de qué hacer con él cuando lo reciben. Se trata tan sólo de gestionar el mensaje.
Se parecen mucho a los beans stateless, pero no puede accederse a ellos directamente desde el cliente. El único modo de interactuar con ellos es a través de mensajes. Están totalmente ocultos para el cliente.

Como seguir

Esta es una de las dos partes del resumen de Enterprise Java Beans. A continuación, en la parte 2, introduciremos la idea del acceso a beans y hablaremos de los tres modos de acceso diferentes.

Nota: puedes encontrar el artículo original en https://dzone.com/articles/introduction-to-ejb-part-1

Un pensamiento en “Introducción a los EJB (parte 1)

  1. Pingback: Introducción a los EJB (parte 2) – Developing in Spanish

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *