Logo Studenta

Java EE - Componentes e Contêineres

¡Estudia con miles de materiales!

Vista previa del material en texto

Material bajo licencia Creative Commons
Java EE
Aplicaciones Web/Sistemas Web
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense Madrid
Java EE
 Java Platform, Enterprise Edition (Java EE)
 Aplicaciones web construidas a base de componentes:
 Clientes de aplicación y applets (en el cliente)
 Java Servlet, JavaServer Faces (JSF), and JavaServer Pages (JSP) (en 
el servidor)
 Enterprise JavaBeans (EJB) (o enterprise beans) (en el servidor)
 Los componentes se despliegan y ejecutan en contenedores 
especializados
 Ejemplos de contenedores:
• Contenedor de applets en un navegador Web
• Contenedor Web Tomcat
• Contenedor de EJBs
Juan Pavón - UCM 2012-13 J2EE 2
Java EE – Contenedores de componentes
Juan Pavón - UCM 2012-13 J2EE 3
Figura de The Java EE 6 Tutorial (2013). Java EE Containers
http://docs.oracle.com/javaee/5/tutorial/doc/bnabo.html
Componentes vs. objetos
 Un componente se caracteriza por:
 Ser una unidad de despliegue independiente
• Encapsula sus características constituyentes respecto a su entorno
• Las terceras partes no pueden acceder a los detalles de construcción del 
componente
• No se implanta de manera parcial
 Ser una unidad de composición
• Con componentes posiblemente desarrollados por otros
• Debe ser suficientemente autocontenido
• Especificaciones claras de lo que requiere y de lo que proporciona
• Interacciona con su entorno a través de interfaces bien definidas
 No tener estado persistente
• Un componente no se distingue de otras copias del mismo
• Excepto atributos no funcionales como el número de serie
• Por tanto, en un proceso se puede decir si hay o no un componente, 
pero no varias instancias del mismo
Juan Pavón - UCM 2012-13 J2EE 4
Componentes vs. objetos
 Un objeto se caracteriza por:
 Ser una unidad de instanciación; tienen una identidad única
• No se instancia de manera parcial
• La identidad es única y no cambia durante la vida del objeto
 Tener un estado
• Se crea con un estado inicial que evoluciona durante la ejecución
 Encapsular su estado y comportamiento
• Que está definido bien por una clase o por un objeto prototipo
Juan Pavón - UCM 2012-13 J2EE 5
Interfaces
 Puntos de acceso a los componentes
 Permite a los clientes acceder a los servicios proporcionados por un 
componente
 Un componente puede tener varias interfaces
 Una por cada punto de acceso: uso, administración, configuración, ...
 Pero no conviene tener varias interfaces similares o redundantes
 La especificación de las interfaces es un contrato
 El respeto de este contrato por cliente y componente asegura el éxito 
de la interacción
Juan Pavón - UCM 2012-13 J2EE 6
Contenedores
 Un contenedor es un proceso donde se ejecutan los componentes
 Gestiona los componentes de la aplicación
• Ciclo de vida
 Proporciona acceso a servicios de la plataforma
• Seguridad, transacciones, persistencia, conectividad, etc.
 El desarrollador tiene que especificar
 Los componentes de la aplicación
• Servlets
• JSPs (JavaServer Pages)
• JSFs (JavaServer Faces)
• EJBs (Enterprise Java Beans)
 Los descriptores de despliegue (deployment)
• Ficheros XML que describen los componentes de aplicación
Juan Pavón - UCM 2012-13 J2EE 7
Arquitectura de un contenedor
Juan Pavón - UCM 2012-13 J2EE 8
Contrato del componente
S
er
vi
ci
os
 d
ec
la
ra
ti
vo
s
O
tros servicios d
el con
ten
d
or
APIs de Servicios del contenedor
Componentes 
de aplicación
Descriptor de 
despliegue
Componentes 
de aplicación
Descriptor de 
despliegue
Componentes 
de aplicación
Descriptor de 
despliegue
Contenedor de applets
Juan Pavón - UCM 2012-13 J2EE 9
clase java.applet.Applet
Métodos para acceder a otros APIs, p.ej. play(url)
MiApplet
Descriptor de 
despliegue
Java EE – Arquitectura multi-nivel (multi-tier)
 Este modelo propicia aplicaciones web en 4 niveles:
Juan Pavón - UCM 2012-13 J2EE 10
servidor
BD
servidor 
Java EE
máquina
cliente
Páginas (X)HTML,
applets, JS, CSS
JSP o
servlets
EJBs
Base de datos
Nivel 
cliente
Nivel 
web
Nivel 
negocio
Nivel 
sistema de 
información
Componentes web en Java EE
 Java Servlets
 Clases escritas en Java que procesan peticiones HTTP y construyen 
respuestas
 JavaServer Pages (JSP)
 Documentos basados en texto que contienen dos tipos de texto
• una plantilla de datos estática que puede expresarse en un formato 
como (X)HTML o XML
• elementos JSP que determinan cómo la página construye el 
contenido dinámico
 JavaServer Faces (JSF)
 Componentes de interfaz de usuario para aplicaciones web
 Los clientes en Java EE son 
 Clientes web: navegadores web, páginas web, applets
 Aplicaciones de cliente 
Juan Pavón - UCM 2012-13 J2EE 11
Contenedor Web
Juan Pavón - UCM 2012-13 J2EE 12
APIs de Java Servlet y JSPs
R
ol
es
 d
e 
se
g
u
ri
d
ad
 r
eq
u
er
id
o
s
C
iclo d
e vid
a, p
oolin
g
d
e recu
rsos
Acceso a servicios remotos
MiServlet
Descriptor de 
despliegue
MiJSP
Descriptor de 
despliegue
Componentes de negocio en Java EE
 Lógica que resuelve las necesidades de un determinado dominio 
de aplicación
 Enterprise beans (EJBs)
 Pueden procesar datos recibidos del lado cliente y enviarlos al nivel de 
sistema de información para su almacenamiento
 Pueden recuperar datos del sistema de información, procesarlos y 
enviarlos al cliente
 Tipos de EJBs
 Bean de sesión
• Una conversación con un cliente
 Bean dirigido por mensajes
• Permite que un componente de negocio pueda recibir mensajes 
asíncronamente, normalmente con el Java Message Service (JMS)
Juan Pavón - UCM 2012-13 J2EE 13
Contenedor de EJBs
Juan Pavón - UCM 2012-13 J2EE 14
javax.ejb.EJBHome, javax.ejb.EJBObject
javax.ejb.SessionBean o javax.ejb.EntityBean
Tr
an
sa
cc
io
n
es
, 
se
g
u
ri
d
ad
C
iclo d
e vid
a, recu
rsos, 
g
estión
 d
el esp
acio d
e n
om
b
res JN
D
IAcceso a servicios remotos
MiEntityBean
Descriptor de 
despliegue
MiSessionBean
Descriptor de 
despliegue
MiMessageBean
Descriptor de 
despliegue
Servicios Java EE
 Cada contenedor Java EE proporciona servicios a los 
componentes
 Java Naming Direct Interface (JNDI)
 Java Persistence API (JPA)
 Java Database Connectivity API (JDBC)
 Java Transaction API (JTA)
 Java Message Service (JMS)
 JavaMail
 Java Beans Active Framework (JAF)
 Java EE Connector Arquitecture
 Java Authentication and Authorization Service (JAAS)
 Java API for XML Procesing (JAXP)
 SOAP with Attachments API for Java (SAAJ)
 Servicios Web (JAX-WS) 
 Java API for RESTful Web Services (JAX-RS)
Juan Pavón - UCM 2012-13 J2EE 15
Ensamblado y despliegue de componentes Java EE
 Los componentes se instalan en contenedores desde los que 
pueden utilizar los servicios de la plataforma
 El proceso de ensamblado de los componentes requiere 
especificar el soporte del servidor J2EE
 Seguridad: usuarios autorizados
 Modelo de gestión de transacciones: relaciones entre métodos que 
constituyen una transacción (tratados como una unidad)
 Java Naming and Directory Interface (JNDI): acceso a servicios de 
nombres y directorio
 Conectividad remota: permite que los clientes invoquen métodos en 
los EJBs como si estuvieran en la misma máquina virtual
Juan Pavón - UCM 2012-13 J2EE 16
Composición de módulos en aplicaciones
 Una aplicación Java EE se puede entregar como ficheros:
 Java Archive (JAR)
 Web Archive (WAR) file
 Enterprise Archive (EAR)
• Módulos Java EE 
• Descriptor de despliegue (documento XML con extensión .xml)
Juan Pavón - UCM 2012-13 J2EE 17
Figura 1-6 EAR File Structure, de The Java EE 6 Tutorial (2013).
http://docs.oracle.com/javaee/5/tutorial/doc/bnabo.html
.jar
Ficheros .class
de EJBs
.war
Ficheros .class
de servlets, 
otras clases 
Java, HTML, 
imágenes
.jar
Aplicación Java
.rar
Resource adapter
archive: clases y 
código nativo para 
conector a EIS
Ciclo de vida de una aplicación Java EE
Juan Pavón - UCM 2012-13 J2EE 18
Fuente:Sun Microsystems, Inc., J2EE Connector Architecture Specification
Frameworks Java EE
 Apache Struts
 Spring
 JBoss Seam
 GWT (Google Web Toolkit)
 Aplicaciones en Java basadas en Ajax
 Stripes, Tapestry, Wicket, Maverick, etc.
 Ver http://www.slideshare.net/ikercanarias/frameworks-j2ee
Juan Pavón - UCM 2012-13 J2EE 19
Bibliografía
 Eric Jendrock et al. The Java EE 6 Tutorial (2013). 
http://docs.oracle.com/javaee/6/tutorial/doc/
 Documentación oficial
 Java EE Specifications 
http://www.oracle.com/technetwork/java/javaee/tech/index.html
 API specification for version 6 of Java EE 
http://docs.oracle.com/javaee/6/api/
 API specification for GlassFish Server, including Java EE 6 platform 
packages and nonplatform packages that are specific to the GlassFish
Server product
http://glassfish.java.net/nonav/docs/v3/api/
 J2EE es más eficiente que PHP:
http://www.mgrecol.com/2012/08/09/php-vs-j2ee-a-practical-approach/
Juan Pavón - UCM 2012-13 J2EE 20