Publicado el 1 de Junio del 2017
2.114 visualizaciones desde el 1 de Junio del 2017
941,8 KB
67 paginas
Creado hace 11a (07/09/2012)
La capa de Negocio
de la Arquitectura Java EE
Simon Pickin
Florina Almenárez Mendoza
Natividad Martínez Madrid
Pablo Basanta Val
Autores:
Dirección: Departamento de Ingeniería Telemática
Universidad Carlos III de Madrid
España
Versión:
1.0
Agradecimientos: Bill Burke, JBoss Group, Tal Cohen, IBM Haifa
Software de
Comunicaciones
© The Authors
3. Enterprise JavaBeans 3.0
Software de
Comunicaciones
© The Authors
2
Introducción
• La capa de negocio implementa la lógica de negocio
– Esto es, la funcional nuclear de una aplicación empresarial
• Enterprise JavaBeans (EJB) es una especificación completa
de una arquitectura de servicios basada en componentes
– Ejecutan lógica de negocio
– Acceso a bases de datos
– Se integra con otros sistemas
• Ventajas de los EJBs:
– El desarrollador se concentra en la lógica de negocio y usa
los servicios del contenedor
• transacciones, seguridad, gestión de ciclo-de-vida, multi-hilo,
almacén de conexiones, etc.
– Componentes: reutilización y abstracción
– Compatible con otras APIs Java
3
Software de
Comunicaciones
© The Authors
Servicios del contenedor de EJBs (1/5)
Contenedor: entorno de ejecución para todos los componentes EJB
instalados
• Gestión de transacciones:
– Secuencia de acciones (y accesos a datos) ejecutados “atómicamente”
• ACID (Atomic, Consistent, Isolated, Durable)
• Evita problemas que pueden surgir del acceso a datos de forma concurrente
• La secuencia entera puede ser deshecha (“rolled back”) en caso de fallo
– El contenedor provee protocolos de manejo de transacciones
• Por ejemplo: un protocolo de aceptación de dos fases
– Transacciones gestionadas por el bean (BMT)
• El desarrollador del bean codifica explícitamente el inicio de la transacción, la
finalización, el proceso de deshacerla, … usando JTA (Java Transaction API)
– Transacciones manejadas por el contenedor(CMT)
• El desarrollador del bean no codifica las transacciones explícitamente
• Los métodos que debe de ejecutar en una transacción están especificados con
anotaciones o en el descriptor de despliegue (archivo xml).
Software de
Comunicaciones
© The Authors
4
Servicios del contenedor de EJBs (2/5)
• Gestión de recursos y ciclo de vida:
– recursos: hilos, conexiones, conexiones a la base de datos,…
– Ciclo de vida: creación y destrucción de instancias, activación y
pasivación de instancias…
– Estados exactos en el ciclo de vida y procesos que dependen del tipo de
bean utilizado
• Accesibilidad remota / objetos distribuidos:
– El desarrollador del bean no codifica explícitamente el código de acceso
remoto
– El servidor de EBJs provee protocolos de comunicación para acceder a
objetos remotos distribuidos.
• Debe soportar RMI-IIOP (c.f. especificación CORBA) y SOAP 1.2 (vía API JAX-
WS o la antigua API JAX-RPC)
• Puede soportar también otros protocolos de comunicación
– El contenedor implementa llamadas distribuidas usando la infraestructura
de comunicación
• Por ejemplo genera sustitutos y esqueletos
5
Software de
Comunicaciones
© The Authors
Servicios de contenedor de EJBs (3/5)
• Seguridad:
– Autenticación
• Validación de la entidad del usuario
– Autorización (de acceso a componentes)
• Política de seguridad especificando lo que un usuario puede y no puede hacer
• Concepto declarativo basado en roles de usuario
• Roles y sus derechos de acceso a métodos de negocio definido con
anotaciones o en el descriptor de despliegue del fichero xml.
• El desarrollador asigna roles a usuarios
– El servidor de EJBs gestiona usuarios y roles
– El contenedor trata con el control de acceso
– Comunicaciones seguras
• Concurrencia (“multi-hilo”)
– El desarrollador de beans no codifica explícitamente el multi-hilo
– Por ejemplo, las dos maneras de manejar peticiones concurrentes
• Mantener un pool de instancias y peticiones directas a instancias del bean del
repositorio
• Serializar peticiones a una instancia de un bean.
6
Software de
Comunicaciones
© The Authors
Servicios de contenedor de EJBs (4/5)
• Servicio de nombramiento y directorio:
– Asociación de nombres a referencias a objetos en una estructura de
directorio jerárquica
• API JNDI (Java Naming and Directory Interface) :
– Contexto de nombramiento del entorno de un bean:
• Espacio de nombres de JNDI (directorio privado) específico a cada clase de
bean
• Para acceder a las propiedades, recursos, otros beans del contenedor
• Referenciado desde dentro de un bean vía java:comp/env
• Mensajería:
– El contenedor provee acceso al servicio de mensajería
• API JMS (Java Messaging Service)
– Comunicaciones asíncronas entre dos o más participantes
•
a través de un sistema de colas de mensajes
– Los receptores de los mensajes deben ser beans dirigidos por mensajes
• Cualquier bean empresarial puede ser un emisor de mensajes
Software de
Comunicaciones
© The Authors
7
Servicios de contenedor de EJBs (5/5)
• Temporizador/Planificador
– Planifica notificaciones de planificación para ser enviadas a EJBs en
instantes específicos de tiempo.
– c.f. cron de Unix
• Persistencia (EJB2):
– Los beans de entidad EJB2.1 pueden ser usados como alternativa a las
entidades de JTA
• El contenedor EJB3 debe soportar beans de entidad EJB2.1
– Las instancias de los beans de entidad en memoria están enlazadas a
datos de negocio
• El contenedor garantiza la consistencia (con carga y almacenamiento periódico)
– Persistencia manejada por el bean (BMP)
• El desarrollador de beans codifica el acceso a la base datos explícitamente
usando JDBC pero el contenedor decide cuando llamar a ese código.
• La instancia del bean usa conexiones JDBC provistas por el contenedor
– Persistencia manejada por el contenedor (CMP)
Software de
Comunicaciones
© The Authors
• El desarrollo del bean no codifica el acceso a la base de datos explícitamente
• Generalmente soporta conexión a bases de datos relacionales
• El significado exacto de la persistencia depende del contenedor y es
8
independiente del bean
Modelando aplicaciones empresariales
• Las aplicaciones empresariales están organizadas en
componenentes que implementan entidades de negocio o
procesos de negocio
– Las entidades de negocio representan información empresarial
– Los procesos de negocio representan la manipulación de dicha
información
Software de
Comunicaciones
© The Authors
9
Entidades de negocio
• Las entidades de negocio son objetos de negocio:
– Representan información mantenida por la compañía
– Tienen estado persistente (mantenido en una base de
datos)
• Ejemplos:
– cliente, orden de compra, cuenta, empleado,...
• Pueden tener asociadas “reglas de negocio”:
– Restringiendo valores del estado de la entidad
• Por ejemplo, códigos postales con 5 dígitos (en España, por
lo menos!)
– Manteniendo relaciones entre entidades
• Por ejemplo, relacionando un cliente a varias compras
10
Software de
Comunicaciones
© The Authors
Procesos de negocio
• Objetos de negocio que encapsulan una interacción
entre un usuario y una entidad de negocio
– Actualizan un estado de entidades de negocio
– Mantienen una entidad única a través del ciclo de vida
• Pueden tener estado propio
– Estado persistente: proceso dividido en etapas y puede
involucrar múltiples actores: proceso de negocio
colaborativo
• Ejemplo: procesado de una petición de préstamo
– Estado
transitorio:
en
una
conversación con un actor: proceso de negocio
conversacional
completado
proceso
• Ejemplo: retirada de dinero de un cajero
11
Software de
Comunicaciones
© The Authors
Reglas de negocio
entre
los
• Distribuidas
que
implementan las entidades y los procesos de
negocio
– De acuerdo a si la regla se aplica a la entidad o al proceso
componentes
• Ejemplos:
– Entidad:
El balance de una cuenta no puede ser negativo
(independiente del proceso que causa que ocurre)
– Proceso:
La máxima cantidad que puede ser retirara de un cajero es
500€
(independiente del estado de la entidad de la cuenta)
Software de
Comunicaciones
© The Authors
12
Enterprise Java Beans
• Beans de sesión:
– Procesos ejecutados como respuesta a una petición de un cliente (e.g.
transacciones bancarias, cálculos, implementación de compras …)
– Proceso colaborativo: hace uso de entidades JPA / beans de entidad
– Recibe llamadas síncronas a métodos definidos sobre la interfaz de negocio
• Entidades JPA (EJB3) / Beans de entidad (EJB2):
– Objetos persistentes asociados a datos
• Por ejemplo: cuenta bancaria, compra de producto, …
– Soporte a la información pasiva vía métodos para las operaciones sobre
datos
– Reciben llamadas síncronas a métodos definidos en la interfaz de negocio
• Beans dirigidos por eventos:
– Procesos ejecutados como respuesta a la recepción de un mensaje
– Reciben llamadas asíncronas a través de un canal
13
Software de
Comunicaciones
© The Authors
Entidades JPA (EJB3) /
Beans de entidad (EJB 2.x)
• Modelan conceptos / objetos de negocio con estado persistente
– Por ejemplo, datos en la base de datos
• Pueden ser utilizados por varios clientes conjuntamente y
simultáneamente
• Entidad visible externamente: clave primaria
– La instancia puede ser accedida por otros programas
•
Larga vida (tiempo de vida de sus datos asociados)
– El estado persistente típicamente cambia transaccionalmente
– El estado sobrevive el reinicio de
Comentarios de: La capa de Negocio de la Arquitectura Java EE (0)
No hay comentarios