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

Arquitectura de aplicaciones J2EE

Lenguaje de Programacin III


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.*;


SEMANA 1: Arquitectura de aplicaciones
J2EE
37
Ejemplo
SEMANA 1: Arquitectura de aplicaciones
J2EE
38
Ejemplo
SEMANA 1: Arquitectura de aplicaciones
J2EE
39
@WebServlet(name = "Obtener", urlPatterns = {"/Obtener"})
public class Obtener extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String name=request.getParameter("name");
tring email=request.getParameter("email");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Obtener</title>");
out.println("</head>");
out.println("<body>");
out.println("<div>El nombre ingresado es: </div>"+name);
out.println("<div>El email ingresado es: </div>"+email);
out.println("</body>");
out.println("</html>"); }
finally {
out.close();
}
}

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

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