Sunteți pe pagina 1din 40

Construccin de Aplicaciones

Empresariales con el Lenguaje


de Programacin Java
Unidad 2: Java 2, Enterprise Edition

Temario

1. J2EE

Qu es J2EE?
Contenedores J2EE
Clientes J2EE
Componentes J2EE

Java 2, Enterprise Edition

J2EE: la edicin de Java para la


construccin de aplicaciones
empresariales

J2EE

J2EE no es un producto, sino un conjunto de


especificaciones desarrolladas por el JCP
(Java Community Process, un consorcio de
empresas que desarrollan la tecnologa Java,
con el liderazgo de Sun)
J2EE incluye adems

Una implementacin de referencia


Un conjunto de tests de compatibilidad que los
productos (servidores J2EE) deben pasar para
recibir la certificacin J2EE
J2EE Blueprints: recomendaciones para el
desarrollo de aplicaciones J2EE, provistas en el
sitio Web de Java (http://java.sun.com)
4

J2EE

Beneficios

Separacin entre capas


Transparencia de la ubicacin
Manejo de transacciones
Pools de recursos (conexiones a bases de
datos, objetos de negocio, etc.)
Manejo de threads
Seguridad
Alta disponibilidad y balanceo de carga
Write Once, Run Anywhere
5

Breve Historia

A fines de 1999 apareci la especificacin de


J2EE 1.0, que bsicamente reuni en un
modelo coherente un conjunto de
plataformas para aplicaciones servidoras:

Aplicaciones Web: servlets, JSP


Componentes de lgica en el servidor EJB
Invocacin asincrnica: JMS
Manejo de mail: JavaMail
Acceso a datos: JDBC
...

Durante el ao 2000, los proveedores se


dedicaron a construir productos que
cumplieran con la especificacin

J2EE 1.3

En julio del 2001 apareci la especificacin


1.3 de J2EE, que incorpor:

EJB 2.0:

Servlet 2.3

Se agreg soporte para JMS


Se mejor el soporte de entity beans
Se agregaron interfaces locales
Se agreg el manejo de filtros
Se agreg el manejo de eventos

JSP 1.2
JCA
JAXP
JAAS
7

J2EE 1.4

En noviembre del 2003 apareci la


especificacin 1.4 de J2EE, que incorpor:

Soporte de Web Services:

EJB 2.1

Se agreg soporte de Web Services


Se agreg un timer service
Se mejor EJB QL

Servlet 2.4
JSP 2.0

JAX-RPC
SAAJ

Se agreg un lenguaje de expresiones


Se cre JSTL (JSP Standard Tag Library)

JSF
8

Las APIs de J2EE

Enterprise JavaBeans

Servlets

Modelo de componentes de lgica de negocio que se


ejecutan en el servidor
La tecnologa de servlets permite construir clases que
extienden servidores que operan con un modelo de
programacin de tipo requerimiento respuesta
Los servlets son tpicamente utilizados para construir
aplicaciones Web

JavaServer Pages

Las pginas JSP permiten escribir "scriptlets" de cdigo


Java al interior de documentos de texto, como pginas
HTML, WML, o XML
9

Las APIs de J2EE

Java Message Service

JMS es un estndar de mensajera que permite crear,


enviar, recibir y leer mensajes
Permite construir aplicaciones distribuidas con un bajo
nivel de acoplamiento, confiables, y asncronas

Java Transaction API

JTA provee una interfaz estndar para demarcar


transacciones
El EJB container realiza el manejo transaccional en
funcin de la configuracin de la aplicacin en el
deployment descriptor

10

Las APIs de J2EE

JavaMail API

Las aplicaciones J2EE utilizan JavaMail para enviar y


recibir correo electrnico

JavaBeans Activation Framework

JAF provee servicios para determinar el tipo de un


trozo arbitrario de informacin, encapsular su acceso,
descubrir sus operaciones disponibles, y crear los
objetos JavaBean apropiados para realizar dichas
operaciones

11

Las APIs de J2EE

Java API for XML Processing

Java API for XML-Based RPC

JAX-RPC utiliza SOAP y HTTP, de modo que los


programas cliente puedan realizar RPCs basados en
XML sobre Internet

SOAP with Attachments API for Java

JAXP provee soporte para el procesamiento de


documentos XML usando Document Object Model
(DOM), Simple API for XML (SAX), y Extensible
Stylesheet Language Transformations (XSLT)

SAAJ es un API de bajo nivel, soporte de JAX-RPC

Java API for XML Registries

JAXR entrega acceso a registros de propsito general


sobre el Web, de tipo ebXML y UDDI
12

Las APIs de J2EE

J2EE Connector Architecture

JCA es utilizado por vendedores de herramientas e


integradores de sistemas para crear adaptadores a
recursos (resource adapters) que proveen acceso a
sistemas EIS (Enterprise Information Systems)
Un adaptador JCA puede ser utilizado por componentes
de una aplicacin J2EE para acceder e interactuar con
el recurso en cuestin

JDBC API

JDBC permite invocar comandos SQL desde cdigo


Java

13

Las APIs de J2EE

Java Naming and Directory Interface

JNDI provee funcionalidad de nombres y directorios


Usando JNDI, una aplicacin puede almacenar y
recuperar cualquier tipo de objeto java nombrado

Java Authentication and Authorization Service

JAAS provee una manera para una aplicacin J2EE


para autenticar y autorizar un usuario o grupo de
usuarios

14

Contenedores J2EE

La especificacin de J2EE define 2


contenedores:

Web Container
EJB Container

Estos contenedores son los responsables de


manejar los componentes correspondientes

15

Servidores J2EE

Principales servidores J2EE

Comerciales

Cdigo abierto

BEA (WebLogic)
IBM (WebSphere)
Sun
Oracle
Sybase
Borland
Macromedia
JBoss
ObjectWeb (JOnAS)
Apache Tomcat

Matriz disponible en TheServerSide.com:

http://www.theserverside.com/reviews/matrix.tss
16

Clientes J2EE

17

Clientes J2EE

Cliente HTML (browser)

Sistema de socio comercial

invoca directamente componentes EJB, utilizando protocolo


RMI

Aplicacin C++

invoca un Web Service residente en una aplicacin Web

Applet / aplicacin Java

accede a una aplicacin Web, a travs de un servlet o JSP

invoca componentes EJB utilizando protocolo CORBA / IIOP

Cliente mensajera

enva mensajes a sistema de mensajera, lo que se traducir


posteriormente en la invocacin de un Message-Driven Bean

18

Componentes J2EE

Componentes Web

Servlets
JavaServer Pages

Componentes de lgica en el servidor

Enterprise JavaBeans

Session
Entity
Message-Driven

19

Componentes Web

Servicios

Presentacin interfaz usuario


Generacin de contenido dinmico
Validacin informacin ingresada
Manejo de estado conversacional
Control del flujo de pginas
Control de acceso a pginas
Manejo de perfiles
Comunicacin con capa de negocio

APIs

Servlet
JSP (JavaServer Pages)
JSF (JavaServer Faces)
20

Servlets

Los servlets constituyen la tecnologa


bsica de J2EE para la construccin de
aplicaciones Web
La tecnologa de servlets permite
construir clases que extienden
servidores que operan con un modelo
de programacin de tipo requerimiento
respuesta
La clase HttpServlet provee mtodos,
como doGet y doPost,
doPost para manejar
servicios especficos de HTTP
21

Servlets
public class ServletHolaMundo extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<HTML><BODY>");
out.println("<h1>Hola, mundo!</h1>");
out.println("</BODY></HTML>");
}
}

22

Servlets
public class ServletHolaMundo extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<HTML><BODY>");
out.println("<h1>Hola, mundo!</h1>");
out.println("</BODY></HTML>");
}
}

23

Servlets

Beneficios:

Eficiente:

se crean threads en lugar de procesos


el servlet queda residente en memoria

Facilidades para comparticin de datos


Lenguaje Java (portable, seguro, poderoso,
OOP, etc.)

24

JavaServer Pages

Una pgina JSP es un documento de


texto con dos tipos de texto:

Informacin esttica, expresada en


cualquier formato basado en texto (HTML,
WML, XML, etc.)
Elementos JSP, que construyen el
contenido dinmico

El Web Container genera (y compila)


servlets a partir de las pginas JSP
En ejecucin opera el servlet generado
25

JavaServer Pages
<html>
<head>
<title>Hola, mundo</title>
<body>
<%
String header = "Hola, mundo!";
%>
<h1><%= header %></h1>
<p>
Fecha: <%= new java.util.Date() %>
</p>
</body>
</html>

26

JavaServer Pages
<html>
<head>
<title>Hola, mundo</title>
<body>
<%
String header = "Hola, mundo!";
%>
<h1><%= header %></h1>
<p>
Fecha: <%= new java.util.Date() %>
</p>
</body>
</html>

27

JavaServer Pages

Beneficios:

Eficiente (en produccin, utiliza servlets)


Permite editar contenido esttico en un
ambiente visual
El uso de Tag Libraries ayuda a la
separacin de tareas entre el diseador
grfico y el programador Java
JavaServer Faces (JSF) ayuda a manejar
los componentes de interfaz de usuario en
aplicaciones Web
28

Integrando Servlets y JSP

Modelo recomendado:

Programar la lgica de la aplicacin en clases de


negocio, desacopladas de la presentacin
Utilizar servlets para atender los requerimientos
HTTP y controlar la lgica de la aplicacin
Desde los servlets, despachar a pginas JSP para
realizar la presentacin

29

Componentes de Lgica en el Servidor

Servicios

Mantenimiento de estado
Operacin sobre datos compartidos
Servicio a un nmero grande de clientes
Control de acceso a funcionalidad
Alta disponibilidad
Participacin en transacciones
Reusabilidad

API

Enterprise JavaBeans

30

Enterprise JavaBeans

La tecnologa de EJBs permite construir


componentes de lgica que se ejecutan en el
servidor
3 tipos de EJBs:

Session beans:
beans modelan procesos de negocios

Entity beans:
beans modelan datos persistentes

stateless: no contiene estado conversacional


stateful: contiene estado conversacional
Bean Managed Persistence (BMP): el bean es
responsable de la persistencia
Container Managed Persistence (CMP): el container es
responsable de la persistencia

Message-driven beans:
beans invocados por el container
cuando ste recibe mensajes JMS
31

Usando un Session Bean


// Obtenemos referencia a MiObjetoHome
Context context = new InitialContext();
Object obj = context.lookup("MiObjetoRemote");
MiObjetoRemoteHome home = (MiObjetoRemoteHome)
javax.rmi.PortableRemoteObject.narrow(
obj, MiObjetoRemoteHome.class);
// Creamos EJB
MiObjetoRemote objeto = home.create();
// Ejecutamos mtodo
String s = objeto.metodo();

32

Usando un Entity Bean


// Obtenemos referencia a MiObjetoLocalHome
ProductoLocalHome home = ...;
// Agregamos producto
home.create("Camisa", 6990);
// Modificamos producto existente
ProductoLocal producto = home.findByPrimaryKey(
new ProductoPK(1238));
producto.setNombre("Pantaln");
// Eliminamos producto existente
producto.remove();
// Eliminamos producto a partir de llave primaria
home.remove(new ProductoPK(1240));

33

Java Message Service

JMS permite acceder transparente a


diferentes sistemas de mensajera, como
IBM MQSeries, Microsoft MQ, etc.
El envo de un mensaje y su
procesamiento por el consumidor son
eventos asincrnicos

34

Java Message Service, Por Qu?

Por qu usar mensajera?

Para reducir las dependencias entre los


componentes de software
Para que la aplicacin cliente pueda operar
aunque algunos de los servicios utilizados
no se encuentren disponibles
Para que la aplicacin cliente pueda seguir
esperando, sin recibir una respuesta
inmediata del servicio que ha invocado

35

Message-Driven Beans

El consumo de mensajes JMS se realiza en clases que


implementan la interfaz MessageListener
J2EE simplifica la programacin de estas clases,
proveyendo para ello objetos EJB de tipo MessageDriven Bean

36

Message-Driven Beans

El siguiente ejemplo muestra el cdigo de un MDB


La configuracin del destino se realiza en el deployment descriptor

public class MyMDB implements MessageDrivenBean, MessageListener {


private transient MessageDrivenContext myContext;
public void setMessageDrivenContext(MessageDrivenContext aContext) {
myContext = aContext;
}
public void onMessage(Message aMessage) {
try {
// procesamos el mensaje
} catch (Throwable t) {
// error no manejado, establecemos rollbackonly para failover
myContext.setRollbackOnly();
}
}
}

37

Acceso a Recursos

Acceso a bases de datos

Integracin con EISs

JCA (J2EE Connector Architecture)

Integracin asincrnica

JDBC directo
Entity beans
JDO (Java Data Objects)

JMS (Java Message Service)

Integracin a travs del Web

Web Services (JAX-RPC, SAAJ)


38

Resumen

J2EE es la plataforma Java para la


construccin de aplicaciones empresariales de
tres capas
El Web Container maneja los componentes de
presentacin: servlets y pginas JSP
Un servlet es una clase Java que recibe
requerimientos HTTP y genera respuestas
HTML (o de otro tipo)
Una pgina JSP es una pgina con esqueleto
HTML y scriptlets Java
El Web Container genera un servlet a partir
de una pgina JSP
39

Resumen

El EJB Container maneja componentes de


lgica de negocio: Enterprise JavaBeans
Existen tres tipos de EJBs:

Session
Entity
Message-Driven

Una aplicacin J2EE soporta varios tipos de


clientes, incluyendo Web, Web Service,
aplicaciones Java, y aplicaciones de
mensajera
Una aplicacin J2EE puede acceder a
diferentes tipos de recursos: bases de datos,
sistemas de mensajera, EISs, Web Services
40

S-ar putea să vă placă și