You are on page 1of 17

Departamento del Informtica

Universidad Tcnica Federico Santa Mara


EX UMBRA IN SOLEM
EX UMBRA IN SOLEM

PRIMERA PARTE: Introduccin al Desarrollo de Aplicaciones Distribuidas con J2EE


Ral Monge Anwandter rmonge@inf.utfsm.cl Universidad Tcnica Federico Santa Mara Valparaso / Chile Valparaso, Julio del 2005

Agenda

Distribucin de Aplicaciones Empresariales Tecnologa J2EE Servlets y Pginas JSP Enterprise Java Bean (EJB)

Persistencia con EJB Mensajera con EJB

Ejemplo y Conclusiones
Tecnologa J2EE 2

Ral Monge

Tecnologa J2EE

Ral Monge

Departamento del Informtica


Universidad Tcnica Federico Santa Mara
EX UMBRA IN SOLEM

Requisitos Generales de Aplicaciones Empresariales

EX UMBRA

IN

SOLEM

1. Distribucin de Aplicaciones Empresariales


Introduccin General

Alta disponibilidad

xito de una organizacin muchas veces depende del buen funcionamiento de sus sistemas Sistemas con informacin sensible Carga del sistema es impredecible Gran variedad de sistemas, plataformas, lenguajes y APIs a integrar
Tecnologa J2EE 4

Seguridad

Escalabilidad

Heterogeneidad

Ral Monge

Tecnologa J2EE

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Modelo de Una Capa (1-Tier)


Terminales

Una Capa (Mainframes)

Caractersticas

Mainframe

Modelo centralizado (monoltico) Terminales tontos Presentacin, lgica de negocios y acceso a datos estn entrelazados en el mainframe No se requiere administrar clientes Es fcil lograr consistencia de datos Difcil de actualizar, mantener y reusar cdigo
Tecnologa J2EE 6

Ventajas:

BD

Desventajas:

Ral Monge

Tecnologa J2EE

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Modelo de Dos Capas (2-Tier)


Clientes Servidor de Datos

Dos Capas

Caractersticas

Clientes (gordos) envan consultas SQL Presentacin, lgica de negocios y procesamiento del modelo de datos en el cliente Independencia de productos de BD Difcil de actualizar, mantener y escalar Modelo de datos fuertemente acoplado al cliente Fuerte trfico de datos sin mayor procesamiento
Tecnologa J2EE 8

Ventajas:

BD

Desventajas:

Ral Monge

Tecnologa J2EE

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Modelo de Tres Capas (3-Tier)


Clientes Servidor de Aplicacin Servidor de Datos

Tres Capas (basado en RPC)

Caractersticas

Clientes son ms delgados (slo presentacin) Capa media maneja servicios del sistema Lgica de negocios puede cambiar ms fcilmente Se introduce complejidad en capa media Clientes y capa media mantienen fuerte acoplamiento

Ventajas:

BD

Desventajas:

Ral Monge

Tecnologa J2EE

Ral Monge

Tecnologa J2EE

10

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Tres Capas (basado en Objetos)

Tres Capas (basado en la Web)

Caractersticas

Caractersticas

Lgica de negocios y modelo de datos en objetos Usan tpicamente: Corba, RMI o DCOM Acoplamiento ms dbil Mayor reusabilidad de cdigo Esfuerzo de administracin aun significativo Complejidad de la capa media (un problema que hay que atacar)
Tecnologa J2EE 11

Ventajas:

Browser maneja lgica de presentacin Browser se comunica va HTTP Lgica de negocios y modelo de datos manejados por generacin dinmica de contenidos Ubicuidad y cero administracin de clientes Soporta diferentes tipos de clientes Complejidad de la capa media
Tecnologa J2EE 12

Ventajas:

Desventajas:

Desventajas:

Ral Monge

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Contenedor y Componentes
Componentes

Arquitecturas de Componentes

Contenedor

Contenedores permiten desplegar componentes en el servidor Ideal es que exista un estndar para no depender del proveedor de la solucin

Componentes pueden desplegarse en cualquier servidor

Una arquitectura de componentes establece un estndar entre contenedores y componentes


Tecnologa J2EE 14

Servicios del Contenedor


Ral Monge Tecnologa J2EE 13 Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Complejidad de Integracin
Cliente Gordo (SWING)

Tendencias Actuales

RMI SQL HTTP IIOP

Base de Datos

Browser

Aplicacin Empresarial

Gestin de Inventario Propietario

Cliente CORBA Cliente SOAP

SOAP

SNMP/JMX Consola de Administracin

Sistema CRM


15

Tambin: PDAs, celulares, etc.


Ral Monge Tecnologa J2EE

Moverse a arquitecturas de 2 o ms capas Moverse a modelos de aplicaciones basadas en objetos Usar tecnologa de componentes para facilitar despliegue y mantencin de aplicaciones Usar clientes basados en HTML Usar tecnologas que faciliten la integracin de diversas aplicaciones
Tecnologa J2EE 16

Ral Monge

Departamento del Informtica


Universidad Tcnica Federico Santa Mara
EX UMBRA IN SOLEM
EX UMBRA IN SOLEM

RMI: Modelo de Ejecucin 2. Java 2 Standard Edition (J2SE)


Algunas tecnologas bsicas para J2EE
Retorno de valor o excepcin

Objeto Cliente
Invocacin del Stub

Objeto Stub
Envo de Peticin Serializada

Receptor

Objeto Servidor

Invocacin local Mtodo Retorno Resultado

Retorno de Respuesta Serializada o Excepcin

Ral Monge

Tecnologa J2EE

17

Ral Monge

Tecnologa J2EE

18

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

RMI: Modelo de Localizacin


rmiregistry

JDBC
Cliente JDBC
Protocolo Base de Datos

BD

olookup()
Objeto Cliente Objeto Stub

n bind() o rebind()

p Invocacin de mtodo remoto

Objeto Servidor

Cliente
HTTP,RMI, etc.

Lgica de Negocios

JDBC

BD
Protocolo Base de Datos
20

Ral Monge

Tecnologa J2EE

19

Ral Monge

Tecnologa J2EE

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

JDBC: Sentencias SQL


// suponiendo que se est conectado a la BD Statement stat = conn.createStatement(); stat.execute( "CREATE TABLE Saludos (Name CHAR(20)) ); stat.execute( "INSERT INTO Saludos VALUES ('Hola Mundo!') ); ResultSet resultado = stat.executeQuery( "SELECT * FROM Saludos ); resultado.next(); System.out.println(resultado.getString(1)); resultado.close(); stat.execute( "DROP TABLE Saludos ); stat.close();
Ral Monge Tecnologa J2EE 21

Applet: Modelo de Ejecucin


Servidor Web n
Applet

Browser

Applet JVM

Ral Monge

Tecnologa J2EE

22

Departamento del Informtica


Universidad Tcnica Federico Santa Mara
EX UMBRA IN SOLEM
EX UMBRA IN SOLEM

Metas de J2EE 3. Java 2 Enterprise Edition (J2EE)


Visin General

Definir una plataforma estndar para soportar aplicaciones distribuidas Simplificar el desarrollo mediante un modelo de aplicacin basada en componentes Facilitar la integracin de la aplicacin con diferentes tipos de clientes y con otros sistemas o aplicaciones

Ral Monge

Tecnologa J2EE

23

Ral Monge

Tecnologa J2EE

24

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Modelo Multi-capa J2EE


Firewall
cliente cliente cliente

Modelo de Aplicacin J2EE

Contenedor EJB EJB EJB Sistemas de Informacin Empresarial


(RDBMS, Aplicaciones heredadas)

EJB Contenedor Web


(Servlets, JSP, HTML y XML)

cliente

JNDI, JMS, JavaMail

Capa Cliente
Ral Monge

Capa Media
Tecnologa J2EE

Capa SIE
25 Ral Monge Tecnologa J2EE 26

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Tecnologa J2EE

Contenedores J2EE

Ral Monge

Tecnologa J2EE

27

Ral Monge

Tecnologa J2EE

28

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Servicios de Plataforma

Tecnologa de Servicios

Servicio de Nombres

Permite mantener un ambiente de nombres donde se pueden personalizar componentes

Java Naming and Directory Interface (JNDI)

Asociar atributos con objetos y bsqueda de objetos

Servicios de Despliegue

Permiten personalizar componentes y aplicaciones en el tiempo de empaquetado y despliegue

Java Transaction API (JTA) y Java Transaction Service (JTS)

Soporte para transacciones distribuidas Conectar plataforma J2EE con SIE (e.g. ERP, procesamiento transacional en mainframes, etc.) Parsing y transformacin de documentos XML
Tecnologa J2EE 30

Servicios Transaccionales

J2EE Connector Architecture (JCA)

Para apoyar transacciones distribuidas

Servicios de Seguridad

Java API para Procesamiento XML (JAXP)

Control de acceso con autenticacin y autorizacin


Tecnologa J2EE 29

Ral Monge

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Tecnologas de Comunicacin

Tecnologas de Mensajera

Protocolos de Internet

Java Message Service API (JMS)


TCP/IP, HTTP, SSL Interfaces para objetos remotos y serializacin Java IDL y RMI-IIOP

RMI

Permite seguir el progreso de tareas Soporta mensajera punto a punto (PTP) y de publicacin-suscripcin (Pub/Sub) API para sistema de correo electrnico Soporta diferentes formas de almacenamiento, formatos y transporte (e.g. IMAP4, POP3 y SMTP)
Tecnologa J2EE 32

JavaMail API

Protocolos de OMG (Corba)

Web Services
Tecnologa J2EE 31

Ral Monge

Ral Monge

EX UMBRA

IN

SOLEM

Aplicacin Multicapas

Escenario: Clientes Stand-Alone


Aplicaciones no Java

EX UMBRA

IN

SOLEM

Recursos SIE
Contenedor EJB

Browser

Recursos SIE
Contenedor Web Pginas JSP, Servlets, XML, JavaMail
Tecnologa J2EE

HTML, HTTP, XML Cliente Stand-Alone

Contenedor Web

HTML, HTTP, XML

Contenedor EJB EJB, JMS, JTA, JDBC


33

RMI-IIOP (3-Tier)
Ral Monge Tecnologa J2EE

JDBC (2-Tier)
34

Ral Monge

Escenario: Aplicaciones Centradas en la Web


EX UMBRA IN

SOLEM

Contenedor Web en Escenario 3-Tier


Firewall

EX UMBRA

IN

SOLEM

Browser

Recursos SIE
Contenedor Web

JavaMail HTTP(S) Servlet Objeto Acceso Datos Objeto Acceso Datos JDBC

HTML, HTTP, XML

Browser
Pginas JSP, Servlets, XML JDBC HTML/ XML Pgina JSP

JDBC JavaMail

Contenedor Web tiene funciones de presentacin y de lgica de negocios


Ral Monge Tecnologa J2EE 35 Ral Monge

Contenedor Web
Tecnologa J2EE 36

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Escenario: B2B
Contenedor Web HTTP(S) XML Contenedor Web Contenedor EJB RMI-IIOP JMS Contenedor EJB

Los Roles de los EJB


Proveedor de Herramientas Ensamblador de Aplicaciones Desplegador Administrador

Recursos SIE

construir aplicacin

desplegar sistema

construir beans

Proveedor de Beans
Ral Monge Tecnologa J2EE 37 Ral Monge

Proveedor de Contenedores/Servidores
Tecnologa J2EE 38

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Patrones J2EE

Blueprints

Corresponden a patrones de diseo y arquitectnicos Patrones se clasifican en:


Capa de presentacin Capa de negocio Capa de integracin Sun Java Center J2EE Pattern Catalog

http://developer.java.sun.com/developer/restricted/patterns/ J2EEPatternsAtAGlance.html

http://java.sun.com/blueprints/enterprise/
Ral Monge Tecnologa J2EE 39 Ral Monge Tecnologa J2EE 40

Departamento del Informtica


Universidad Tcnica Federico Santa Mara
EX UMBRA IN SOLEM
EX UMBRA IN SOLEM

Movimiento hacia el Servidor

4. Servlets y Pginas JSP

Applets estn bien para clientes delgados, pero ...


Applets grandes requieren mayor tiempo de carga y usan ms ancho de banda Problemas de compatibilidad con los browsers

Solucin es ejecutar cdigo de aplicacin en el lado del servidor


Existen varias soluciones tcnicas Ejemplos: CGI, PHP, ASP, JSP

Ral Monge

Tecnologa J2EE

41

Ral Monge

Tecnologa J2EE

42

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Porqu Pginas Web Dinmicas?

CGI

La pgina est basada en datos enviados por el usuario

Ejemplo: Confirmacin de transaccin

Estndar popular, que corresponde a las primeras soluciones

La pgina est derivada de datos que cambian frecuentemente

Una aplicacin CGI recibe peticin desde el Servidor Web y responde con cdigo HTML Se crea un nuevo proceso por cada peticin Tpicamente se procesa la peticin con PERL, lo que obliga a hacer partir el interpretador Si programa CGI termina antes de responder al Servidor Web, el cliente sufre de retardos

Ejemplo: Noticias del da

Desventajas:

La pgina usa informacin de base de datos u otras fuentes al lado del servidor

Ejemplo: Cupo disponible de asientos

Ral Monge

Tecnologa J2EE

43

Ral Monge

Tecnologa J2EE

44

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Contenedor de Servlets

Modelo de Interaccin de Servlets


Clientes Servidor Web
Servlet

Peticin HTTP

Request

Servlet service()

Browser
Respuesta HTTP

Contenedor de Servlets
Contenido Esttico

Response

Usuario redefine el mtodo service()


45 Ral Monge Tecnologa J2EE 46

Ral Monge

Tecnologa J2EE

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Clase HttpServlet
Clientes Servidor Web
Request
service()

Ejemplo de HttpServlet
HttpServlet
doDelete() doGet() doOptions() doPost() doTrace() doPut()
public class bienvenidoServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>Bienvenido</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<H1>Bienvenido al Sistema</H1>"); out.println("<P>Ha tenido exito en pasar control de acceso!!</P>"); out.println("</BODY>"); out.println("</HTML>"); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
47 Ral Monge Tecnologa J2EE 48

Response

Usuario redefine los mtodos asociados al protocolo HTTP


Ral Monge Tecnologa J2EE

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Necesidad de Sesin

Tcnicas de Gestin de Sesiones

Protocolo HTTP considera que servidor cierra conexin despus de cada peticin

Reescritura de URL

Agregando a URL parmetros (nombre/valor) Informacin aparece visible en el Browser Se pasa parmetro en un campo oculto de un data form Aun se puede ver en el cdigo fuente de la pgina HTML Pequea pieza de informacin que se pasa de ida y vuelta entre el servidor y el cliente Se usan objetos almacenados en el servidor que a travs de una clave se relacionan en forma nica con un cliente

HTTP es considerado protocolo sin estado Qu pasa cuando un cliente interacta varias veces con el servidor, conducido por un estado anterior?

Campos Ocultos

Problema:

Cookies

Objetos de sesin

Ral Monge

Tecnologa J2EE

49

Ral Monge

Tecnologa J2EE

50

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Ejemplo de Cookies
Agregando una cookie en la respuesta
Cookie c1 = new Cookie("usuario", usuario); Cookie c2 = new Cookie("password", password); respuesta.addCookie(c1); respuesta.addCookie(c2);

Ejemplo de Objeto de Sesin


public void doGet(HttpServletRequest peticion, HttpServletResponse respuesta) throws ServletException, IOException { HttpSession sesion = peticin.getSession(true); Integer contador = (Integer) sesion.getAttribute("contador"); if (contador == null) { // primera visita contador = new Integer(0); } else { // otra visita contador = new Integer(contador.intValue() + 1); } sesion.setAttribute("contador", contador); // etc.....
51 Ral Monge Tecnologa J2EE 52

Obteniendo informacin de una cookie en la peticin


Cookie[] galletas = peticion.getCookies(); int largo = galletas.length; for (int i=0; i<largo; i++) { Cookie galleta = galletas[i]; out.println("<B>Nombre del Cookie:</B> " + galleta.getName() + "<BR>"); out.println("<B>Valor del Cookie:</B> " + galleta.getValue() + "<BR>"); }
Ral Monge Tecnologa J2EE

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Pginas JSP: Motivacin

Estructura del Lenguaje JSP

Facilitar programacin de pginas HTML dinmicas respecto a Servlets

Pgina JSP se compone de:

Reduce esfuerzo de programacin de escribir en stream de respuesta cdigo HTML Evita intervenir cdigo de servlets por cada cambio

Elementos o etiquetas JSP (JSP tags)

Corresponde a cdigo Java Corresponde a cdigo HTML

Datos de Plantilla (template data)

JSP es una extensin a Servlets, no un reemplazo

Tipos de elementos sintcticos:


Comprensin de servlets es fundamental para programar bien pginas JSP

Directivas Scripting Acciones


Tecnologa J2EE 54

Ral Monge

Tecnologa J2EE

53

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Ejemplo de Scriptlet (1/2)


<%@ include file="includes/cabecera.html" %> // faltan algunas lneas

Ejemplo de Scriptlet (2/2)


while (rs.next()) { %> <TR> <TD> <% out.print(rs.getString(1)); %> </TD> <TD> <% out.print(rs.getString(2)); %> </TD> <TD> <% out.print(rs.getString(3)); %> </TD> <TD> <% out.print(rs.getString(4)); %> </TD> </TR> <% } rs.close(); s.close(); con.close(); } catch (SQLException e) { System.out.println(e.toString()); } catch (Exception e) { System.out.println(e.toString()); } %> </TABLE> </CENTER> <%@ include file="includes/cola.html" %> // se omite el final
Tecnologa J2EE 56

<CENTER><H2>Listando Todos los Usuarios</H2> <TABLE> <TR><TH>Nombre</TH><TH>Apellido</TH><TH>Usuario</TH><TH>Password</TH></TR> <% String sql = "SELECT Nombre, Apellido, Usuario, Password FROM Usuarios"; try { Connection con = DriverManager.getConnection( "jdbc:db2j:/BASE_DATOS/BD_PRUEBA;create=true", "", ""); Statement s = con.createStatement(); ResultSet rs = s.executeQuery(sql); // sigue en la prxima pgina

Ral Monge

Tecnologa J2EE

55

Ral Monge

EX UMBRA

IN

SOLEM

Uso del JavaBean en JSP


<jsp:useBean id="miBean" class="beans.CalculadoraBean"/> <%@ include file="includes/cabecera.html" %> <jsp:setProperty name="miBean" property="memoria" param="memoria"/> El valor de la memoria es <jsp:getProperty name="miBean" property="memoria"/> <%@ include file="includes/cola.html" %>

Ejemplo de Etiquetas Personalizadas(Custom Tags)


<%@ taglib uri="/misEtiquetas" prefix="tit"%> <HTML><HEAD></HEAD> <BODY BGCOLOR="#FDF5E6"> <tit:titulo bgColor="#990000" rowColor="#cc0000" fontList="Times" fontColor="#ffffff" fontSize="32"> <B>Curso de Servlet y JSP</B> </tit:titulo> <BR>Esta es una prueba de etiqueta con cuerpo!<BR> <%@ include file="includes/cola.html" %>

EX UMBRA

IN

SOLEM

Cuerpo

Ral Monge

Tecnologa J2EE

57

Ral Monge

Tecnologa J2EE

58

Departamento del Informtica


Universidad Tcnica Federico Santa Mara
EX UMBRA IN SOLEM

Objeto Remotos vs. Middleware

EX UMBRA

IN

SOLEM

5. Beans Empresariales
Otros Servicios

Introduccin a Enterprise Java Beans (EJB)

Protocolo RMI Sockets

Protocolo RMI Sockets

Ral Monge

Tecnologa J2EE

59

Ral Monge

Tecnologa J2EE

60

10

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Objetos Remotos
Cliente Objeto Distribuido
Interfaz Remota

Middleware Explcito
API Transaccin

Cliente

Objeto Distribuido
Interfaz Remota
API de BD

Servicio Transaccional Driver de BD Servicio Seguridad

Interfaz Remota

Interfaz Remota

Stub

Skeleton

Stub Red

Skeleton

API Seguridad

Red
Ral Monge Tecnologa J2EE 61 Ral Monge

Tecnologa J2EE

62

EX UMBRA

IN

SOLEM

Middleware Implcito
Cliente Objeto Distribuido
Interfaz Remota
API Transaccin

Ventajas de Middleware Implcito

EX UMBRA

IN

SOLEM

Ms fcil de escribir

Servicio Transaccional Driver de BD Servicio Seguridad

No se requiere codificar a APIs del middleware (slo se declara lo requerido) Separacin de lgica de negocios de la lgica del middleware Si se cambia middleware slo se modifica un archivo descriptor
Tecnologa J2EE 64

Interceptor de Peticiones
Interfaz Remota Interfaz Remota

Ms fcil de mantener

API de BD

Stub Red
Ral Monge

Skeleton

API Seguridad

Ms fcil de soportar

Interceptor de Peticiones hace lo que ordena archivo descriptor


Tecnologa J2EE 63

Ral Monge

Qu es un Enterprise Java Bean (EJB)?

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Qu es un Contenedor EJB?

Es un componente (de software) del lado del servidor que encapsula lgica del negocio

Son responsable de administrar los EJB, proveyndole un ambiente de ejecucin

Separa aspectos de la presentacin

Habilita a clientes remotos

Se deben disear de acuerdo con las especificaciones tcnicas definidas para EJBs Slo pueden ser desplegados y ejecutados en un contenedor EJB (servidor de aplicacin)
Tecnologa J2EE 65

Provee servicios a nivel de sistema para aplicaciones EJB tales como:


Gestin de sesiones Transacciones y comparticin de conexiones Seguridad


Tecnologa J2EE 66

Ral Monge

Ral Monge

11

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Los Tipos de Beans (EJB)

Sistema de Componentes EJB

Bean de Sesin (SB)


Modelan procesos de negocio Ejemplo: Motor de precios, autorizador de tarjeta de crdito Modelan datos de negocio Ejemplo: producto, orden de compra, empleado Similar a bean de sesin, pero permite el procesamiento asncrono de mensajes tipo JMS Ejemplo: ordenar una compra
Tecnologa J2EE 67 Ral Monge Tecnologa J2EE 68

Bean de Entidad (EB)


Bean Conducido por Mensaje (MDB)

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Modelo de Invocacin EJB


Cliente
Home Interface o Crear referencia a EJB Object

Archivos de Despliegue
Home Interfaces

Contenedor EJB

Home Object

Servicios

Local Interfaces

p Crear EJB Object Creador Archivo JAR

Remote Interface q Invocar mtodo de negocio


JNDI API

EJB Object

Enterprise Bean

Archivo JAR EJB

Enterprise Bean Classes

Remote Interfaces

n Obtener referencia a Home Object


Deployment Descriptor Tecnologa J2EE 69 Ral Monge Vendor-specific file Tecnologa J2EE 70

Servicio de Nombres
Ral Monge

Departamento del Informtica


Universidad Tcnica Federico Santa Mara
EX UMBRA IN SOLEM
EX UMBRA IN SOLEM

Beans de Sesin (SB)

SB sin Estado (Stateless: SLSB)

5.1 Beans de Sesin (SB)

Implementa procesos de negocios que requieren de una sola interaccin No mantiene estado conversacional Ejemplo: Motor de clculo y verificador de tarjeta de crdito

SB con Estado (Stateful. SFSB) Implementa procesos de negocios que requieren de varias peticiones o transacciones Mantiene estado conversacional Ejemplo: Carro de compras
Tecnologa J2EE 72

Ral Monge

Tecnologa J2EE

71

Ral Monge

12

Pasivacin y Activacin de Objeto de Sesin


Contenedor
Pasivacin de Objeto de Sesin

Departamento del Informtica


EX UMBRA IN SOLEM

Universidad Tcnica Federico Santa Mara


EX UMBRA IN SOLEM

Instancia de EB
1: ejbPassivate() 2: escribir estado

Memoria Secundaria

5.2 Beans de Entidad


Persistencia, lenguaje de consultas y relaciones

Activacin de Objeto de Sesin

1: leer estado 2: ejbActivate()

Ral Monge

Tecnologa J2EE

73

Ral Monge

Tecnologa J2EE

74

EX UMBRA

IN

SOLEM

Persistencia: O-R Mapping

Sincronizacin con la Base de Datos


Contenedor EJB / Servidor
3: Mtodos de negocio
Instancia de EB

EX UMBRA

IN

SOLEM

Cuenta String cuentaID String nombreTitular double saldo

Tabla de Cuentas

1: ejbLoad() 4: ejbStore()

API JDBC

2: Leer desde BD
Tabla

5: Escribir a BD se puede repetir muchas veces el ciclo: ejbLoad - mtodo negocio - ejbStore
Tecnologa J2EE 76

Ral Monge

Tecnologa J2EE

75

Ral Monge

EX UMBRA

IN

SOLEM

Pooling de EB
Remote Interface

Tipos de Persistencia mediante Beans de Entidad (EB)

EX UMBRA

IN

SOLEM

Contenedor EJB / Servidor


EJB Object 1 EJB Object 1 EJB Object 1

Persistencia gestionada por el Bean (BMP)


Cliente 1
Remote Interface

Pool de Beans Instancias de EB

Persistencia se debe programar e.g. Usando INSERT o DELETE con JDBC

Cliente 2
Remote Interface

Persistencia gestionada por el Contenedor (CMP)


Cliente 2

El contenedor EJB puede dinmicamente asignar una instancia de EB para representar diferentes datos
Ral Monge Tecnologa J2EE 77 Ral Monge

Contenedor realiza persistencia Herramienta del contenedor genera cdigo de acceso al repositorio de datos Permite ahorrar cdigo

Tecnologa J2EE

78

13

Clase Bean de Entidad BMP: mtodo ejbCreate()

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Beans de Entidad tipo CMP

public CuentaPK ejbCreate(String cuentaID, String nombreTitular) throws CreateException { this.cuentaID = cuentaID; this. nombreTitular = nombreTitular; this.saldo = 0; try { /* borrado : crear conexin........ */ pstmt = conn.prepareStatement( insert into accounts (id, nombreTitular, balance) values (?, ?, ?)"); pstmt.setString(1, cuentaID); pstmt.setString(2, nombreTitular); pstmt.setDouble(3, saldo); pstmt.executeUpdate(); /* Generar objeto de clave primaria y retornarlo */ return new CuentaPK(cuentaID); } catch (Exception e) { throw new CreateException(e.toString()); } finally {/* borrado ... liberar conexin ...... */ } }
Ral Monge Tecnologa J2EE 79

Separa lgica de los datos de la representacin de los datos (lgica de persistencia)

Hace posible cambiar de BD (tipo) sin afectar al componente

Un Bean corresponde a una subclase de la desarrollada por el proveedor

Desarrollador slo escribe lgica de los datos (clase base) El contenedor la extiende agregando la lgica de persistencia (subclase), en el tiempo de despliegue
Tecnologa J2EE 80

Ral Monge

Ejemplo de Implementacin de EB / CMP


public abstract class CuentaBean implements EntityBean { public abstract String getCuentaID(); public abstract void setCuentaID(String cuentaID); public abstract String getNombreTitular(); public abstract void setNombreTitular(String nombre); public abstract double getSaldo(); public abstract void setSaldo(double saldo);

EX UMBRA

IN

SOLEM

Esquema Abstracto de Persistencia de los EB/CMP


...
<cmp-version>2.x</cmp-version>

EX UMBRA

IN

SOLEM

ejb-jar.xml

>= CMP 2.0 Nombre del esquema

<abstract-schema-name>CuentaBean</abstract-schema-name> <cmp-field> <field-name>cuentaID</field-name> </cmp-field> <cmp-field> <field-name>nombreTitular</field-name> </cmp-field> <cmp-field> <field-name>saldo</field-name> </cmp-field> <primkey-field>cuentaID</primkey-field>

public String ejbCreate(String cuentaID, String titular) throws CreateException { setCuentaID(cuentaID); setNombreTitular(titular); setSaldo(0); return null; } }
Ral Monge Tecnologa J2EE 81

Deben calzar nombres de mtodos accesores

Clave primaria
82

...
Ral Monge Tecnologa J2EE

EJB-QL en Descriptor de Despliegue

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Relaciones
Contrato id fechaComienzo id
203 496

<query> ejb-jar.xml <query-method> <method-name>findByNombreTitular</method-name> <method-params><method-param>java.lang.String</method-param> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT OBJECT(a) FROM cuen taBean a WHERE a.nombreTitular = ?1]]> </ejb-ql> </query> <query> <query-method> <method-name>findTodasCuentas</method-name> <method-params></method-params> </query-method> <ejb-ql> <![CDATA[SELECT OBJECT(a) FROM CuentaBean a WHERE a.cuentaID IS NOT NULL]]> </ejb-ql> </query>
Ral Monge Tecnologa J2EE 83

Contratista rol telefono

fechaComienzo rolCK
25-03-2003 14-04-2003 4456-7 4456-7

rol
4456-7 4572-3

telefono
654429 972345

Contrato
Ral Monge Tecnologa J2EE

Contratista
84

14

Definicin de Relacin en Descriptor de Despliegue (1/2)

EX UMBRA

IN

SOLEM

Definicin de Relacin en Descriptor de Despliegue (2/2)


...

EX UMBRA

IN

SOLEM

relationships> <ejb-relation> <ejb-relation-name>contrato-contratista</ejb-relation-name> <ejb-relationship-role> <description>contrato</description> <ejb-relationship-role-name>Contrato-Pertenece-a-Contratista</ejb-relationship-role-name> <multiplicity>Many</multiplicity> <relationship-role-source> <description>contrato</description> <ejb-name>Contrato</ejb-name> </relationship-role-source> <cmr-field> <description>contratista</description> <cmr-field-name>contratistaLocal</cmr-field-name> </cmr-field> </ejb-relationship-role>

...
Ral Monge Tecnologa J2EE 85

<ejb-relationship-role> <description>contratista</description> <ejb-relationship-role-name>Contratista-Tiene-Contratos</ejb-relationship-role-name> <multiplicity>One</multiplicity> <relationship-role-source> <description>contratista</description> <ejb-name>Contratista</ejb-name> </relationship-role-source> <cmr-field> <description>contratos del contratista</description> <cmr-field-name>contratosLocal</cmr-field-name> <cmr-field-type>java.util.Set</cmr-field-type> </cmr-field> </ejb-relationship-role> </ejb-relation> </relationships>
Ral Monge Tecnologa J2EE 86

Departamento del Informtica


Universidad Tcnica Federico Santa Mara
EX UMBRA IN SOLEM
EX UMBRA IN SOLEM

Servicio de Mensajera

5.3. Mensajera en EJB


Permite comunicar a travs de un mensaje unidireccional Un cliente es un productor o consumidor Desacopla a los clientes de los mensajes: emisor y receptor no requieren conocerse
Middleware de Mensajes (MOM)
Tecnologa J2EE

Aplicacin

Aplicacin

Ral Monge

Tecnologa J2EE

87

Ral Monge

88

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Modelo PTP
mensaje mensaje

Modelo PUB/SUB
suscribir entregar Cliente 2

Cliente 1

Cola enviar

consumir ACK

Cliente 2 Cliente 1

mensaje mensaje

Tpico publicar suscribir entregar Cliente 3

consumir
mensaje
Ral Monge Tecnologa J2EE 89 Ral Monge Tecnologa J2EE 90

15

EX UMBRA

IN

SOLEM

Qu es un MDB?

Modelo de Interaccin con MDB


Servidor EJB

EX UMBRA

IN

SOLEM

Es un EJB sin estado, al lado del servidor Es slo invocado por el contenedor cuando llega un mensaje

Pool de MDB
Send/ Publish

Es un escuchador de mensajes (listener) Slo realiza recepcin asincrnica JMS

Cliente

Destino JMS

El cliente que enva el mensaje no requiere conocer al MDB (slo el destino) Permite hacer a los MDB parte de una transaccin
Tecnologa J2EE 91

Instancia MDB

Contenedor EJB es consumidor de mensajes de destinos JMS segn lo especificado en descriptor de despliegue
Ral Monge Tecnologa J2EE 92

Ral Monge

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Ejemplo de MDB
public class LogBean implements MessageDrivenBean, MessageListener { protected MessageDrivenContext ctx; public void setMessageDrivenContext(MessageDrivenContext ctx) {this.ctx = ctx; } public void ejbCreate() { } public void ejbRemove() { } } /* El mtodo de negocio del bean */ public void onMessage(Message msg) { System.out.println("LogBean: onMessage()"); TextMessage tm = (TextMessage) msg; try { String text = tm.getText(); System.out.println(".... Nuevo mensaje recibido : " + text); } catch (JMSException e) { e.printStackTrace(); } } }

Cliente (1/2)
import javax.naming.*; import javax.jms.*; import java.util.*; public class Client { public static void main (String[] args) throws Exception { // preparar propiedades para InitialContext ... (borrado) .... Context ctx = new InitialContext(properties); // 1: Buscar en ConnectionFactory via JNDI TopicConnectionFactory factory = (TopicConnectionFactory) ctx.lookup("ConnectionFactory"); // 2: Usar ConnectionFactory para crear conexin JMS TopicConnection connection = factory.createTopicConnection(); connection.start();

Ral Monge

Tecnologa J2EE

93

Ral Monge

Tecnologa J2EE

94

EX UMBRA

IN

SOLEM

EX UMBRA

IN

SOLEM

Cliente (2/2)
// 3: Usar conexin para crear sesin TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE) ; // 4: Buscar destinatario (topic) via JNDI Topic topic = (Topic) ctx.lookup("topic/testTopic"); // 5: Crear productor de mensajes TopicPublisher publisher = session.createPublisher(topic); // 6: Crear un mensaje de texto y publicarlo TextMessage msg = session.createTextMessage(); msg.setText("Este es un mensaje de prueba."); publisher.publish(msg); // Cerrar la conexin publisher.close(); session.close(); connection.close(); } }
Ral Monge Tecnologa J2EE 95

Resumen

MDB permite recepcin asincrnico de mensajes Son el tipo ms simple de Beans


sin estado sin interfaces remotas nico mtodo de negocios (onMessage)

Un MDB deriva el procesamiento de un mensaje a otro bean (es intermediario)


Tecnologa J2EE 96

Ral Monge

16

EX UMBRA

IN

SOLEM

Referencias

Ed Roman, Scott W. Ambler, Tyler Jewell, Floyd Marinescu, Mastering Enterprise JavaBeans (2nd Edition), John Wiley & Sons, (December 14, 2001) Budi Kurniawa, Java for the Web with Servlets, JSP, and EJB: A Developer's Guide to J2EE Solutions, New Riders Publishing, (April 12, 2002) Deepak Alur, John Crupi, Dan Malks, Core J2EE Patterns: Best Practices and Design Strategies, Sun Microsystems Press, Prentice Hall, 2001 http://java.sun.com/j2ee Tutorial de J2EE http://java.sun.com/j2ee/tutorial/index.html
Tecnologa J2EE 97

Ral Monge

17

You might also like