Introducción a la arquitectura empresarial Java (Java EE)


El presente artículo es una breve introducción a la arquitectura empresarial de Java denominada Java EE o JEE de forma abreviada. Este artículo sirve como base para futuros artículos que ejemplifican el uso y la implementación de elementos pertenecientes a esta arquitectura.

La plataforma Java EE (anteriormente conocida como Java 2 Platform, Enterprise Edition o J2EE hasta la versión 1.4) está definida por una nueva especificación.
Similar a otras especificaciones del Java Community Process, Java EE es también considerada informalmente como un estándar debido a que los proveedores deben cumplir ciertos requisitos de conformidad para declarar que sus productos son conformes a Java EE.
Java EE incluye varias especificaciones de API o interfaz de programación de aplicaciones, como son JDBC,  RMI, e-mail, JMS, Servicios Web, XML. etc. y define cómo coordinarlos. Java EE también configura algunas especificaciones únicas para Java EE para componentes. Estas incluyen Enterprise JavaBeans, servlets, portlets, JSP y varias tecnologías de servicios web tales como Axis2 o JAX-WS (Apache CXF). 
El desarrollador puede crear una aplicación empresarial portable entre plataformas y escalable, a la vez que integrable con tecnologías anteriores. Otros beneficios añadidos son, por ejemplo, que el servidor de aplicaciones puede manejar transacciones, la seguridad, escalabilidad, concurrencia y gestión de los componentes desplegados, significando que los desarrolladores pueden concentrarse más en la lógica de negocio de los componentes en lugar de en tareas de mantenimiento de bajo nivel.
Enterprise Java Beans (EJB)
Los EJBs (o beans empresariales) son componentes Java EE que implementan la tecnología Enterprise JavaBeans (EJB). Un EJB se ejecuta en un contenedor de EJB que es un entorno de ejecución dentro un servidor de aplicaciones. Aunque transparente para la aplicación, el contenedor de EJB provee una serie de servicios a nivel de sistema entre los que se incluyen las transacciones y la seguridad de los EJBs.
Estos servicios permiten la construcción rápida y el despliegue de EJBs los cuáles forman el núcleo transaccional de las aplicaciones JEE.
Escritos en lenguaje de programación Java, un EJB es un componente de servidor que encapsula la lógica de negocio de una aplicación. Entre sus ventajas están:
  • Simplifican el desarrollo de grandes aplicaciones distribuidas. El contenedor de EJB se encarga de la seguridad y el manejo de transacciones, dejando al bean solo la lógica de negocio
  • Como la lógica de negocio está en los beans, el desarrollador puede ocuparse de desarrollar la capa de presentación sin tener que codificar lógica de negocio o acceso a bases de datos. Como resultado se producen clientes muy ligeros, especialmente deseables para ejecutarse en pequeños dispositivos como los smartphones
  • Los beans pueden ser reutilizados para crear nuevos beans que extiendan su funcionalidad. Al fin y al cabo son también componentes reutilizables.
¿Cuándo utilizar EJBs?
  • La aplicación debe ser escalable.
  • Las transacciones tienen que asegurar la integridad de los datos
  • La aplicación puede tener varios tipos de clientes incluso en diferentes plataformas
Tipos de EJBs

Tipo
Objetivo
De sesión (Session)
Realizan una tarea para un cliente; opcionalmente pueden implementar un servicio Web
Dirigidos por mensajes (Message-Driven)
Actúan como un listener para un tipo particular de mensaje, como los soportados por el Java Message Service API

Bean de Sesión


Un bean de sesión representa a un cliente simple dentro de un servidor de aplicaciones. Para acceder a una aplicación desplegada en el servidor, el cliente invoca un método del bean de sesión que se encarga de ejecutar la lógica de negocio.
Como su nombre sugiere, el bean de sesión es similar a una sesión interactiva. Un bean de sesión no se comparte; solo puede tener un cliente, de la misma manera que una sesión interactiva solo puede tener un usuario. Cuando el bean de sesión termina no sigue asociado con el cliente que lo había invocado.

Tipos de Bean de Sesión
Descripción
Con estado (stateful)
Las variables de instancia de la clase del bean guardan sus valores (estado conversacional) manteniéndolo mientras dure la sesión. Si el cliente termina o elimina el bean, este estado desaparece.
Sin estado (stateless)
No mantiene un estado conversacional con el cliente: los valores de sus variables de instancia solo se mantienen durante la invocación de un método. Excepto durante la invocación de un método, todas las instancias de los beans sin estado son equivalentes, permitiendo al contenedor de EJB asignar una instancia a cualquier cliente. Ofrecen mejor escalabilidad para aplicaciones que soportan un gran número de clientes y son los únicos que soportan la implementación de servicios Web

Cuando utilizar los Beans de Sesión


En general, se deben utilizar beans de sesión siempre que se den las siguientes circunstancias:
  • En cualquier momento, solo un cliente tiene acceso a la instancia del bean
  • El estado del bean no es persistente, existiendo solo por un corto período de tiempo
  • El bean implementa un servicio Web
Un bean de sesión es apropiado si alguna de las siguientes condiciones son verdaderas:
  • El estado del bean representa la interacción entre el bean y un cliente específico
  • El bean necesita mantener información del cliente entre diferentes invocaciones de métodos
  • El bean media entre el cliente y otros componentes de la aplicación representando una vista simplificada para el cliente
  • El bean orquestra el flujo de varios EJBs
Para mejorar el desempeño deberíamos utilizar bean sin sesión si se da alguna de las situaciones siguientes:
  • El estado del bean no contiene datos para un cliente específico
  • Con la invocación de un método, el bean realiza una tarea genérica para todos los clientes (por ejemplo el envío de un correo electrónico de confirmación)
Definiendo el acceso de los clientes mediante interfaces

Los clientes solo pueden acceder a un bean de sesión solo invocando los métodos definidos en una interfaz. Las interfaces de negocio definen la vista cliente del bean, quedando ocultos la implementación de los métodos o los parámetros de despliegue.
Las interfaces bien diseñadas simplifican el desarrollo y mantenimiento de las aplicaciones Java EE. Las interfaces claras no solo protegen al cliente de las complejidades de las clases que implementan el EJB, sino que permiten a los beans cambiar internamente sin afectar a los clientes (desacoplan al cliente de la implementación del EJB).
Cuando se diseña una aplicación Java EE, una de las decisiones más importantes es el tipo de acceso que va a tener el EJB: local, remoto o servicio Web.

Clientes Remotos

Un cliente remoto de un EJB se caracteriza por:
  • Puede ejecutarse en un ordenador diferente y en una maquina virtual de Java diferentes a las que tiene acceso el EJB
  • Puede ser un componente Web, un cliente de aplicación u otro EJB
  • Para un cliente remoto, el lugar donde está alojado el EJB es transparente


Para crear un EJB que permita acceso remoto simplemente hay que decorar la interfaz de negocio del EJB con la anotación @Remote




Clientes locales


Un cliente local se caracteriza por:
  • Debe ejecutarse en la misma JVM a la que tiene acceso el bean
  • Puede ser un componente Web u otro EJB
  • Para el cliente local, el lugar donde está alojado el EJB al cuál accede no es transparente
Para crear un EJB que permita acceso local simplemente hay que decorar la interfaz de negocio del EJB con la anotación @Local:



Clientes de servicios Web



Los clientes de servicios Web pueden acceder a servicios Web creados con JAX-WS invocando lógica de negocio de un bean de sesión sin estado.
Utilizando los estándares y protocolos correctos (SOAP, http, WSDL), cualquier cliente de servicio Web (esté escrito o no en lenguaje de programación Java) puede acceder a bean de sesión sin estado.
Aunque todos los métodos públicos de la clase que implementa el bean pueden ser accedidos por los clientes, solo son expuestos aquellos que están marcados con la anotación @WebMethod.


Contenido de un EJB
Para crear un EJB se deberían crear los siguientes archivos:
  • La clase del EJB: implementa los métodos definidos en la interfaz de negocio
  • Las interfaces de negocio: definen los métodos a implementar por la clase del EJB
  • Clases auxiliares (helper classes): otras clases que necesite el EJB (utilidades, excepciones, etc.)
Los archivos de esta lista se empaquetan en un archivo EJB JAR que almacena el EJB.
Para desplegar una aplicación empresarial pueden empaquetarse uno o varios módulos JAR en un módulo EAR que contiene todo lo que se quiere desplegar en el servidor.



Como nombrar los EJB

Debido a que los EJB se componen de diferentes archivos, es útil adoptar una convención para nombrarlos:

Elemento
Sintaxis
Ejemplo
Nombre del EJB
nombreBean
TestBean
Nombre de la clase del EJB
nombreBean
TestBean
Interfaz de negocio
nombre
Test

Bibliografía

posted under , |

1 comentarios:

cine_y_de_todo dijo...

Excelente y muy completo post... De gran utilidad

Publicar un comentario

Entrada más reciente Entrada antigua Inicio