1 2 SEMANA 1: Arquitectura de aplicaciones J2EE Programa SEMANA 1: Arquitectura de aplicaciones J2EE Sesin 1. 1.Introduccin y motivaciones de J2EE 2.Servicios ofrecidos por un contenedor J2EE 3.Versiones de J2EE 4.Capas J2EE 5.Empaquetado y despliegue de aplicaciones J2EE 6.Descriptores de despliegue
Sesin 2. Creacin de Servlets 1.Contenedor de servlets. 2.Ciclo de vida de un Servlet. 3.Despliegue de Servlets. 4.Escribir, compilar, instalar y ejecutar un Java Servlet. 5.Servlet container y servlet API. 6.Compartir datos entre Servlets. 3 SEMANA 1: Arquitectura de aplicaciones J2EE Programa Sesin 3. JavaServer Pages (JSP) 1.Definir qu es una pgina JSP 2.Variables implcitas 3.Objetivo de las libreras de tags 4.Creacin de tags bsicos 5.Tags con parmetros 6.Tags con contenido 7.Control de errores 8.Escribir e instalar una pgina JSP 9.Servlet vs. JSP 10.Los modelos de arquitectura de una aplicacin con JSP
Tecnologas y lenguajes Web Java ASP.NET PHP Perl Ruby Python
SEMANA 1: Arquitectura de aplicaciones J2EE 4 Java EE (Java Enterprise Edition): Plataforma Java para el desarrollo de aplicaciones empresariales. Interaccin con diversas fuentes de datos Interaccin con otros sistemas (actuales y/o legados) Acceso Web (jsp y servlet) Concurrencia Alta carga de procesamiento Usuarios con diferentes perfiles Requerimientos de seguridad Provee un ambiente de ejecucin y un conjunto de APIs: Servlets, JSP, JSF, EJB, JMS, JDBC, JPA, JNDI,JavaMail, JAXB, JAXP, JAX-WS, etc.
SEMANA 1: Arquitectura de aplicaciones J2EE 5 Java EE SEMANA 1: Arquitectura de aplicaciones J2EE 6 Versiones Arquitectura multi-nivel(multi-tier) SEMANA 1: Arquitectura de aplicaciones J2EE 7 Arquitectura multi-nivel(multi-tier) Define una infraestructura comn bsica para el acceso a bases de datos, gestin de la persistencia, control de seguridad, gestion de transacciones. Separacin clara entre presentacin (interfaz), modelo (lgica) de negocio y datos. Plataforma basada en componentes Entes (objetos) intercambiables que residen en un servidor de aplicaciones y son gestionados por el. http://java.sun.com/javaee/ SEMANA 1: Arquitectura de aplicaciones J2EE 8 Componentes de Arquitectura Clientes de la aplicacin clientes web [navegador]. clientes de escritorio Java [swing, awt]. clientes de escritorio no Java. Componentes Web: servelts, paginas JSP (Java Server Pages), JSF(Java Server Faces). Se ejecutan en el contenedor Web. Responsables de componer la presentacin de datos en formato HTML. Suelen apoyarse en el uso de componentes Java Beans.
SEMANA 1: Arquitectura de aplicaciones J2EE 9 Componentes de Arquitectura Componentes de negocio: EBJ (Enterprise Java Beans) y entidades JPA (Java Persistence API ). Se ejecutan en el contenedor de EBJs. Componentes (objetos Java) responsables de implementar la lgica de la aplicacin. EBJ gestionan interacciones con los clientes e implementan reglas de negocio. Entidades Java: objetos persistentes que representan los datos de la capa EIS. Capa EIS (Enterprise Information Systems) Capa de datos: gestiona la informacin permanente del sistema. Bases de datos o aplicaciones empresariales heredadas (legacy systems) que actan como almacenes de datos. SEMANA 1: Arquitectura de aplicaciones J2EE 10 Componentes de Arquitectura En general, se entiende por componente un objeto Java con restricciones se ensambla y ejecuta dentro de un servidor de aplicaciones Java EE(contenedor) SEMANA 1: Arquitectura de aplicaciones J2EE 11 SEMANA 1: Arquitectura de aplicaciones J2EE 12 Contenedores Contenedores Simplifican el desarrollo de los componentes ocultando los detalles complejos. Sus tareas concretas depende de la capa a la que pertenezcan. Ofrecen servicios a los componentes, actuando como interfaz entre un componente y los aspectos de bajo nivel de cada plataforma. SEMANA 1: Arquitectura de aplicaciones J2EE 13 Contenedores Un contenedor permite a los componentes interactuar con los servicios brindados por el servidor de aplicaciones.
Seguridad Acceso a datos Transacciones Acceso a recursos Comunicaciones
SEMANA 1: Arquitectura de aplicaciones J2EE 14 Tipos de contenedores Java EE Servidor de Aplicaciones Java EE: entorno de ejecucin de aplicaciones JEE. Proporciona el contenedor Web y/o el contenedor de EBJs
Contenedor EBJ (Enterprise Java Beans): gestiona la ejecucin (ciclo de vida) de los EJBs. Da soporte a los componentes que implementan la capa de lgica de negocio. Ofrece servicios de control de acceso y seguridad, control de transacciones y ejecucin concurrente, etc SEMANA 1: Arquitectura de aplicaciones J2EE 15 Tipos de contenedores Java EE Contenedor Web: gestiona la ejecucin de los servlets y paginas JSP. Da soporte a los componentes que implementan la capa Web. API de Servlets, APIs JSP, JSTL, JSF, JavaBeans. Ejemplos libres: Tomcat, Jetty. Contenedor aplicacin cliente: ofrece la infraestructura necesaria para la ejecucin del cliente SEMANA 1: Arquitectura de aplicaciones J2EE 16 Empaquetado de Aplicaciones JEE - Archivos EAR SEMANA 1: Arquitectura de aplicaciones J2EE 17
Los archivos EAR (Enterprise Archive) es un formato utilizado en la arquitectura JEE para desplegar de manera coherente y simultnea varios mdulos en un servidor de aplicaciones. Contiene archivos XML denominados descriptores de despliegue que describen como desplegar los mdulos contenidos en el paquete EAR.
Aplicacin/es web java empaquetadas en WAR + Objetos distribuidos EJB empaquetados en JAR = Aplicacin empresarial JEE (Archivo EAR). Estructura EAR SEMANA 1: Arquitectura de aplicaciones J2EE 18 Descriptores JEE Descriptores de despliegue JEE (JEE deployment descriptor): configuran las opciones de despliegue de cualquier componente de Java Empresarial. Descriptores de despliegue del entorno de ejecucin (runtime deployment descriptor): configuran opciones del entorno de ejecucin de nuestra aplicacin empresarial, tales como las opciones de cach en el servidor SEMANA 1: Arquitectura de aplicaciones J2EE 19 Despliegue de Aplicaciones SEMANA 1: Arquitectura de aplicaciones J2EE 20 API Java EE - Container SEMANA 1: Arquitectura de aplicaciones J2EE 21 Java EE APIs in the Web Container API Java EE - Web Container SEMANA 1: Arquitectura de aplicaciones J2EE 22 API Java EE - EJB Container SEMANA 1: Arquitectura de aplicaciones J2EE 23 API Java EE - Application Client Container SEMANA 1: Arquitectura de aplicaciones J2EE 24 Ciclo de vida de una aplicacin web El proceso para desarrollar, empaquetar y ejecutar una aplicacin web se puede resumir en:
1. Desarrollar el cdigo de los componentes web. 2. Desarrollar un descriptor de despliegue (si fuera necesario). 3. Compilar los componentes de la aplicacin web y clases de ayuda referenciadas por estos componentes. 4. Empaquetar la aplicacin en una unidad desplegable (opcional). 5. Desplegar la aplicacin en un contenedor web. 6. Acceder a la url que referencia la aplicacin web. SEMANA 1: Arquitectura de aplicaciones J2EE 25 Preguntas? SEMANA 1: Arquitectura de aplicaciones J2EE 26 Servlet SEMANA 1: Arquitectura de aplicaciones J2EE 27 Servlets Sesin 2. Creacin de Servlets 1. Contenedor de Servlets. 2. Ciclo de vida de un Servlet. 3. Despliegue de Servlets. 4. Escribir, compilar, instalar y ejecutar un Java Servlet. 5. Servlet container y servlet API. 6. Compartir datos entre Servlets.
SEMANA 1: Arquitectura de aplicaciones J2EE 28 Servlets Los servlets son objetos que corren dentro y fuera del contexto de un contenedor de servlets (ejemplo: Tomcat) y extienden su cuidado. La palabra servlet deriva de otra anterior, applet, que se refera a pequeos programas que se ejecutan en el contexto de un navegador web. Por contraposicin. El uso ms comn de los servlets es generar pginas web de forma dinmica a partir de los parmetros de la peticin que enve el navegador web. Los Servlets son la alternativa Java a los CGIs. Actan como capa intermedia entre: Peticin proveniente de un Navegador Web u otro cliente HTTP. Bases de Datos o Aplicaciones en el servidor HTTP SEMANA 1: Arquitectura de aplicaciones J2EE 29 Servlets Son aplicaciones Java especiales, que extienden la funcionalidad del servidor HTTP, dedicadas a: Leer los datos enviados por el cliente. Extraer cualquier informacin til incluida en la cabecera HTTP o en el cuerpo del mensaje de peticin enviado por el cliente. Generar dinmicamente resultados. Formatear los resultados en un documento HTML. Establecer los parmetros HTTP adecuados incluidos en la cabecera de la respuesta (ejemplo: el tipo de documento, cookies, etc.) Enviar el documento final al cliente.
SEMANA 1: Arquitectura de aplicaciones J2EE 30 Ventajas de los Servlets SEMANA 1: Arquitectura de aplicaciones J2EE 31 Servlets SEMANA 1: Arquitectura de aplicaciones J2EE 32 Ciclo de Vida SEMANA 1: Arquitectura de aplicaciones J2EE 33 Ciclo de Vida Init Se ejecuta una vez, la primera vez que es invocado el servlet (el servlet se carga en memoria y se ejecuta slo la primera vez que es invocado. El resto de peticiones generan un hilo). Service (no debe sobreescribirse) Se ejecuta cada vez que se produce una nueva peticin. Dentro de esta funcin se invoca a doGet o a doPost. doGet y doPost Manejan las peticiones GET y POST. Incluyen el cdigo principal del servlet La ejecucin del servlet finalizar cuando termine la ejecucin de estos mtodos. Destroy Se invoca cuando el servidor decide SEMANA 1: Arquitectura de aplicaciones J2EE 34 Contenedor de Servlets Un contenedor de Servlet es un programa capaz de recibir peticiones de pginas web y redireccionar estas peticiones a un objeto Servlet.
1. El Browser pide una pgina al servidor HTTP que es un contenedor de Servlets. 2. El contenedor de Servlets delega la peticin a un Servlet en particular elegido de entre los Servlets que contiene. 3. El Servlet, que es una objeto java, se encarga de generar el texto de la pgina web que se entrega al contenedor. 4. El contenedor devuelve la pgina web al Browser que la solicit.
SEMANA 1: Arquitectura de aplicaciones J2EE 35 Estructura Aplicacin Web SEMANA 1: Arquitectura de aplicaciones J2EE 36 Servlet API Una interfaz de programacin de aplicaciones o API (Application Programming Interface) es el conjunto de funciones y procedimientos (o mtodos, en la programacin orientada a objetos) que ofrece cierta biblioteca. Para implementar los servlets se hace uso de: javax.servlet javax.servlet.http Incluir postulados import: import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
URL relativo a la Webapp Mtodo para tratar la recepcin de un HTTP Salida generada para enviar al navegador Generacin de texto Ejemplo SEMANA 1: Arquitectura de aplicaciones J2EE 40 Resultado Preguntas? SEMANA 1: Arquitectura de aplicaciones J2EE 41 JSP Java Server Page SEMANA 1: Arquitectura de aplicaciones J2EE 42 JSP (Java Server Page) Sesin 3. JavaServer Pages (JSP) 1.Definir qu es una pgina JSP 2.Variables implcitas 3.Objetivo de las libreras de tags 4.Creacin de tags bsicos 5.Tags con parmetros 6.Tags con contenido 7.Control de errores 8.Escribir e instalar una pgina JSP 9.Servlet vs. JSP 10.Los modelos de arquitectura de una aplicacin con JSP
SEMANA 1: Arquitectura de aplicaciones J2EE 43 JSP JSP es una especificacin de Sun Microsystems. Sirve para crear y gestionar pginas web dinmicas. Permite mezclar en una pgina cdigo HTML para generar la parte esttica, con contenido dinmico creado a partir de marcas especiales. El contenido dinmico se obtiene, en esencia, gracias a la posibilidad de incrustar dentro de la pgina cdigo Java de diferentes formas. Su objetivo final es separar la interfaz (presentacin visual) de la implementacin (lgica de ejecucin). En servlets estaban mezclados. SEMANA 1: Arquitectura de aplicaciones J2EE 44 JSP La pgina JSP se convierte en un servlet. La conversin la realiza en la mquina servidora el motor o contenedor la primera vez que se solicita la pgina JSP. Este servlet generado procesa cualquier peticin para esa pgina JSP. Si se modifica el cdigo de la pgina JSP, entonces se regenera y recompila automticamente el servlet y se recarga la prxima vez que sea solicitada. En servlets, tendramos que modificar el cdigo fuente, recompilar y redesplegar nosotros. SEMANA 1: Arquitectura de aplicaciones J2EE 45 Ventajas Mayor encapsulamiento: Uso de clases Uso de JavaBeans Mayor escalabilidad Uso de tags: similitud con HTML Mayor portabilidad Uso de un lenguaje estndar y muy difundido. Separacin del contenido esttico del dinmico. SEMANA 1: Arquitectura de aplicaciones J2EE 46 Ciclo de Compilacin SEMANA 1: Arquitectura de aplicaciones J2EE 47 Variable Implcitas Variable Clase pageContext javax.servlet.jsp.PageContext request javax.servlet.http.HttpServletRequest response javax.servlet.http.HttpServletRespons e session javax.servlet.http.HttpSession config javax.servlet.ServletConfig application javax.servlet.ServletContext out javax.servlet.jsp.JspWriter page java.lang.Object exception java.lang.Exception SEMANA 1: Arquitectura de aplicaciones J2EE 48 Custom Tag Library Los custom tags son elementos/componentes que encapsulan un comportamiento. La idea que subyace detras de los custom tags es que se elimine el cdigo Java en la pgina JSP. El diseador podr usar estos custom tags sin saber como estn programados. Los programadores seremos los encargados de proveer estos componentes para que sean usados. Esto implica que el cdigo Java estar en clases, por lo que el diseo ser mucho mas limpio. SEMANA 1: Arquitectura de aplicaciones J2EE 49 Mi primer TAG Vamos a desarrollar un tag que aada la firma de la empresa. Creamos una nueva clase com.dflanvin.tag.FirmaTag que extienda TagSupport Aadimos un atributo privado name y su correspondiente mtodo setName(). Implementamos el mtodo doEndTag(): public int doEndTag( ) { try { pageContext.getOut( ).println("<br>"+name + "<br>------------------<br>Uniovi.es @ 2008"); pageContext.getOut().println( "<br>+034985105094/FAX: +0349855094"); } catch (IOException e) {} // Ignore it return EVAL_PAGE; }
SEMANA 1: Arquitectura de aplicaciones J2EE 50 Servlet vs JSP
Servlets: Java con HTML embebido. JSPs: HTML con Java embebido.
Semejanzas: JSP son una extensin de Servlets. No aporta funcionalidades nuevas. Un JSP compilado es un Servlet. Misma funcin: construir contenido dinmico.
Diferencias: JSP separa ms claramente el diseo de la lgica Ms sencillo modificar cdigo HTML que miles de sentencias println.
SEMANA 1: Arquitectura de aplicaciones J2EE 51 Modelo 1 Arquitectura JSP SEMANA 1: Arquitectura de aplicaciones J2EE 52 Modelo 2 Arquitectura JSP SEMANA 1: Arquitectura de aplicaciones J2EE 53