COMPONENTES Y CONTENEDORES - Universidad … · orientada a objetos: herencia, polimorfismo. Los...
Transcript of COMPONENTES Y CONTENEDORES - Universidad … · orientada a objetos: herencia, polimorfismo. Los...
Motivación
Los componentes son paquetes de software o
módulos que encapsulan un conjunto de funciones
similares.
Estos componentes viven dentro de un contenedor el
cual se encarga de administrar el ciclo de vida del
componente, entre muchas otras operaciones.
[1]
Motivación
Componentes pueden ser reutilizados para crear
nuevas aplicaciones.
Se pueden reutilizar que fueron creados por otros
equipos de trabajo.
[1]
Motivación
En vez de reutilizar clases se reutilizan
funcionalidades completas. Funcionalidades que
han sido altamente probadas y que en algunos
casos pueden configurarse sin necesidad de
modificar el código.
Modelos de Componentes
OSGi (Open Services Gateway iniciative)
Fractal
EJB (Enterprise Java Beans)
Otros…
Anotaciones
Incluidas en el JDK 5 para hacer el desarrollo más
sencillo y eficiente.
Las anotaciones son metadatos que permiten
especificar información complementaria, que puede
ser entendida en tiempo de ejecución por la JVM.
Se pueden añadir a elementos Java tales como
clases, métodos, atributos, etc.
Motivación
Permiten enfocarse en la lógica del negocio.
No es necesario reinventarse servicios como:
Seguridad
Concurrencia
Persistencia
…
Especificación independiente de la plataforma.
Escribir la aplicación una vez y desplegarla donde sea.
Motivación
Redesplegar componentes sin necesidad de
reiniciar el contenedor.
Alta escalabilidad.
Estándar abierto.
Enterprise Java Beans (EJB)
Los EJBs corren dentro de un contenedor.
Utilizados para crear aplicaciones empresariales:
Grandes volúmenes de datos
Concurrencia
Escalabilidad
Aplicaciones distribuidas
Transaccionalidad
…
EJB de Sesión
Contienen la lógica de negocio y pueden ser
accedidos por los clientes.
Exponen los servicios que prestara el componente.
Utilizan los EJB de entidad para acceder a los
datos.
Hay dos tipos:
Stateless
Stateful
EJB de Sesión Stateless
No mantienen un estado cada vez que se invoque a
un servicio sobre el componente.
[1]
EJB de Sesión
Creando un EJB de sesión:
1) Crear la interface que contiene los servicios que
expondrá el EJB de sesión.
Los servicios pueden correr de la misma JVM.
Los servicios se encuentran distribuidos.
Web service.
2) Crear la implementación del bean. Esta
implementación contiene la lógica del negocio.
EJB Dirigido por Mensajes (MDB)
Contienen la lógica del negocio.
Basados en el servicio de mensajería de Java
(JMS).
Los clientes no invocan directamente los servicios.
Los mensajes llegan a un servidor de mensajes, el
cual utiliza MDB para procesarlos.
[1]
EJB Dirigido por Mensajes (MDB)
No es necesario que el productor y el consumidor se
encuentren disponibles.
Bajo acoplamiento en la integración de sistemas.
Modelos de mensajería:
Punto a punto
Publicador – suscriptor
EJB Dirigido por Mensajes (MDB)
Modelos de mensajería punto a punto:
Los mensajes viajan de un único punto A a un único
punto B.
Si existe más de un potencial receptor del mensaje, se
selecciona uno aleatoriamente.
[1]
EJB Dirigido por Mensajes (MDB)
Modelos de mensajería productor – suscriptor:
Un productor de mensajes envía un mensaje que es
recibido por varios consumidores.
[1]
EJB de Entidad
Utilizados para manejar la persistencia de datos
con bases de datos relacionales o de objetos.
La información de los objetos Java es
automáticamente almacenada en la base de datos
a través del Mapeo Relacional de Objetos (ORM).
No es necesario escribir sentencias SQL.
EJB de Entidad
Java Persistence API (JPA) es el framework ORM
que utiliza EJB 3 para persistencia de datos.
JPA soporta características de programación
orientada a objetos: herencia, polimorfismo.
Los EJB de entidad no son manejados por el
contenedor sino por JPA.
EJB de Entidad
Acceso a la base de datos se realiza a través de JDBC.
Java Persistence Query Language (JPQL):
«SELECT * FROM empleado e WHERE e.name LIKE :name»
Soporte para expresar sentencias SQL.
Entity Manager:
Lo provee el framework JPA que se esté utilizando.
Tiene servicios para utilizar operaciones CRUD sobre las entidades.
Inyección de Dependencias
El contenedor se encarga de instanciar y
referenciar los servicios que necesita el componente
de manera automática.
El desarrollador no debe preocuparse por obtener
referencias a los servicios.