Вы находитесь на странице: 1из 4

1. Plataforma Java EE (Java Enterprise Edition) 3.

Servidores de aplicaciones y contenedores


¿Qué es? • Implementan las APIs y especificaciones JEE
• Es una colección de especificaciones que definen una • Ofrecen soporte y servicios a los componentes de la aplicación
infraestructura para desarrollar aplicaciones distribuidas JEE
multicapa (3-tier, n-tier)
• Tipos:
• contenedor de EJB (Enterprise JavaBeans)
¿Para qué sirve?. ¿Qué ofrece?
• contenedor de Servlets
• Facilita el desarrollo de aplicaciones distribuidas en Java
• contenedor de clientes
• Ofrece un marco y una serie de convenciones, junto un
conjunto de servicios sobre los cuales desarrollar aplicaciones
multicapa
• Objetivo: permitir que el desarrollador se centre en el diseño
e implementación del sistema, delegando las tareas típicas y
cuestiones de más bajo nivel ajenas a la propia aplicación a la
infraestructura del servidor de aplicaciones JEE

Versiones
• Java EE 5 (versión actual): simplificó el desarrollo de
componentes de la capa de negocio
• Java EE 6 (siguiente versión): aplicará mismas ideas para
simplificar desarrollo de la capa web
• Versiones anteriores: J2EE 1.4 y anteriores

2. Arquitectura n-tier en Java EE


Java EE prevee un arquitectura con 3 o 4 capas diferenciadas
• no todas las aplicaciones JEE tienen que seguir es esquema

• Independientes del fabricante


• Servidores de aplicaciones JEE libres:
• JBOSS, GlassFish
• Tomcat, Jetty (sólo contenedores de servlets)
• Aplicaciones JEE
• Se despliegan en el servidor de aplicaciones
• Hacen uso de los servicios del contendor
• Formadas por módulos JEE
• web modules, EJB modules, client modules
• Empaquetados como archivos .jar (módulos EJB y
cliente), .war (módulos web), .ear (empaqueta
módulos de una aplicación JEE)
4. Proyecto JEE de SCS 6. Capa de aplicación (2). EJB
Objetivos: Enterprise Java Beans
• conocer la plataforma Java EE Objetos remotos gestionados por el contenedor de EJBs
• diseñar y construir una aplicación distribuida 3-tier • Contenedor los crea y los pone a disposición de los clientes
que los invocan
Enunciado: • Invocación y acceso mediante RMI/IIOP (RMI compatible
• Se desarrollará una aplicación de gestión de reservas hoteleras con CORBA)
a modo de central de reservas que ofertará habitaciones en • Contenedor gestiona los accesos concurrentes y ofrece
distintos hoteles. soporte transaccional (commit y rollback) a las
• Se definirán los componentes de servidor que implementarán operaciones invocadas
la lógica de la aplicación (generación y cancelación de • También: servicios de seguridad, replicación (pool de
reservas, control de disponibilidad, etc) objetos), etc
• Se implementará un interfaz web para la búsqueda y Usados para conformar una “capa de servicios”
confección de reservas por parte de los clientes, así como para • Uso típico: implementar el patrón fachada (Facade)
la gestión de las plazas ofertadas y reservas recibidas por • ocultan los detalles internos de la aplicación
parte de los hoteles. ofreciendo un interfaz “limpio”
• Se incluirá a modo de ejemplo una aplicación de escritorio con • simplifican el acceso a los recursos y la interacción
un soporte limitado para las tareas de gestión que se indiquen. • Pueden publicar su interfaces como puntos finales en
Tecnologías a emplear: servicios web (SOAP y REST)
• Capa de aplicación: JPA, EJB
• Capa de presentación WEB: JSF 7. EJBs
• Aplicación de escritorio: SWING Encapsulan operaciones accesibles de modo remotos desde los
clientes finales o desde los componentes de la capa de
presentación WEB
5. Capa de aplicación (1). JPA • cada método de un EJB se ejecuta en su propio hilo
Java Persistence API • la ejecución de cada método de un EJB conforma una
• Permite definir una capa de persistencia para los objetos del transacción (o se ejecuta completamente con éxito o las
dominio posible modificaciones realizadas son anuladas)
• Inspirada en Hibernate (y compatible con él)
• Uso de JavaBeans con anotaciones JPA Tipos
• Especificación para dar soporte al mapeo O/R (objeto- • Message driven EJBs
relacional) • Implementan operaciones asíncronas
• tabla ↔ clase (entidades JPA) • Suscripción, escucha y notificación de eventos
• tupla ↔ objeto • Session EJBs
• atributos ↔ atributos + relaciones (claves foráneas) Implementan operaciones síncronas (llamada-respuesta)
• Entity Manager: gestiona el mapeo entre los objetos • stateful: mantienen el estado conversacional con cliente
(entidades) gestionados en memoria y su representación • atienden a un cliente específico
persistente en la BD • sus atributos se mantienen entre llamadas
• JPQL: lenguaje de consulta sobre entidades • stateless: no mantienen estado (son independientes de
• Sintaxis similar a SQL aplicada sobre entidades JPA los clientes)
• singleton (en Java EE 6): aseguran una instancia única
compartida por todos los clientes
• Toman decisiones de flujo entre páginas
Acceso: • Faces servlet
• Mediante llamadas RMI-IIOP: sobre los métodos declarados • Actúa como controlador, separando y manejando la Vista
como remotos (interfaz Remote) y el Modelo
• Llamada local: sobre los métodos declarados como remotos • Apoyado en el fichero de configuración faces-config.xml
(interfaz Local) • declara los Managed Beans y su alcance (sesión,
• desde dentro del contenedor EJB (otros EJB) petición, aplicación,...)
• desde dentro del contenedor de Servlet en la misma JVM • define las reglas de navegación
(Servlets o JavaBeans) • Otras funcionalidades:
Localización mediante JNDI (Java Naming and Directory Interface) • posibilidad de definir plantillas, fragmentos y
• Servicio de nombres jerárquico (cada tipo de EJB tiene un componentes propios mediante etiquetas JSF
nombre que lo identifica) • uso de Managed Beans propios responsables de
validaciones y conversiones de tipo definidas por el
usuario
• soporte para internacionalización mediante ficheros de
8. Capa WEB: JSF mensajes fuera de las páginas JSF
Framework web MVC (model-view-controller)
• Incluido como estándar para la capa web en Java EE 5.
(versión 2.0 en Java EE 6)
Basado en componentes (del lado del servidor) y en eventos 9. Aplicación de ejemplo
• acciones del usuario sobre la página HTML desencadenan la Tienda WEB simplificada + aplicación de escritorio SWING con
ejecución de código en el servidor para tratarlas gestión básica de catálogo y pedidos.
• analogia con desarrollo de aplicaciones de escritorio
Estructura de la aplicación web:
• facilidad para integración con IDEs (editores visuales:
componentes+eventos+acciones) • Capa de presentación: JSF + Managed Beans
• JSF: visualización y captura de datos
Elementos: • Beans de sesión (ProductoController, UsuarioController,
• Librerías de componentes CarritoController, …)
• Usados para definir la Vista en formato HMLT • proveen de datos a las páginas JSF
• componentes incluidos en páginas JSP (JSF como • almacenan los datos introduccidos por el usuario
• interaccionan con los EJBs que se encarga de la
libería de etiquetas)
• incluidos en Facelets (ficheros XHTML con etiquetas
implementación real del Modelo [~ patrón Bussines
JSF) Delegate]
• Librería estandar: incluye componentes que “renderiza” • Capa de aplicación:
en forma de elementos de formularios HTML • Entidades JPA: capa de objetos persistentes del dominio
• Otras librerias incluyen soporte para interacciones AJAX (almacenados en BD MySQL)
• EJBs (ProductoFacade, UsuarioFacade, PedidoFacade, …):
(ICEFaces, RichFaces, …)
implementan la lógica de la aplicación y el acceso a
• Managed Beans
objetos persistentes (altas, bajas, modificaciones, ...) [~
• JavaBeans que implementan el modelo
patrón Session Facade]
• Proporcionan/mantienen los datos que
presentan/capturan las páginas JSF
• Implementan las acciones desencadenadas en respuesta
a los eventos
10. Entorno de desarrolllo

• IDE recomendado: Netbeans versión 6.8 (beta)


• Servidor de Base de Batos: MySQL
• Servidor de aplicaciones: GlassFish v3 (incluido en Netbeans
6.8)

11. Tareas iniciales

Tarea 1- Documentación y estudio del ejemplo aportado

• alfa, beta: JPA + EJB


• Puntos a tratar
• mapeo O/R en JPA y uso del EntityManager
• lenguaje de consultas JPQL
• definición de EJB de sesión
• localización y acceso a EJB de sesión desde
aplicaciones de escritorio
• despliegue de módulos EJB en GlassFish
• estructura fichero .jar
• ficheros de configuración
• definición PersistenceUnit, Datasources, etc
• Referencias: Capítulos 13, 14 (EJB) y 16,17,18 (JPA) de
“Java EE 6 Tutorial”

• gamma, delta: JSF


• Facelets y uso de los juegos de etiquetas estándar
• definición de templates y componentes
• validación de entradas y mensajes de error
• uso de Managed Beans
• reglas de navegación
• despliegue de JSF en GlassFish
• Referencias: Capítulos 3, 5, 6, 7 y 9 de “Java EE 6
Tutorial”

Вам также может понравиться