Está en la página 1de 52

1

Java EE 5 (sucesor de J2EE):


Java EE 5 (sucesor de J2EE):
el reto de volver a empezar
el reto de volver a empezar
Mar Mar a Consuelo Franky a Consuelo Franky
Abril de 2007 Abril de 2007
CincoSOFT Ltda. CincoSOFT Ltda.
ConsueloFranky@cincosoft.com ConsueloFranky@cincosoft.com
http://www.cincosoft.com http://www.cincosoft.com
2
Introducci
Introducci

n
n
Java EE 5 reemplaz a J2EE hace menos de 1 ao: cambio
profundo de modelo conceptual, arquitectura y estrategia de
desarrollo
Aplicaciones Java EE 5 son mucho ms concisas y eficientes:
reducen el cdigo a la tercera parte
El reto es volver a aprender a hacer aplicaciones de una
manera completamente distinta
Objetivo de la conferencia: visin general del desarrollo de
aplicaciones Java EE 5 con sus ventajas y dificultades
3
Contenido
Contenido
A: Arquitectura de una aplicacin Java EE 5
B: Concepto y programacin de un caso de uso
C: Facilidades para el desarrollo de aplicaciones Java EE 5
D: Elementos JSF para pantallas
E: Meta-framework para acelerar el desarrollo en Java EE 5
(experiencia CincoSOFT)
4
A:
A:
Arquitectura de una
Arquitectura de una
aplicaci
aplicaci

n Java EE 5
n Java EE 5
5
Maneja
interaccin
con usuario
Despliegue
HTML
Validacin
sintctica
Presentaci Presentaci n n
Cliente con Cliente con
navegador Web navegador Web
Invoca
servicios
Validacin
sintctica
Adapta
respuestas
a interfaz
usuario
Maneja
excepciones
Aplicaci Aplicaci n n
Servidor Servidor Web Web
Realiza
servicios
sobre
objetos del
dominio
Implanta
reglas del
negocio
Estado de
sesin
-usuario
Control
transaccin
Servicios Servicios
Servidor de Componentes Servidor de Componentes
Servicios
bsicos de
persistencia
de objetos
del dominio
Transforma-
cin Objeto-
Relacional
Soporte
transaccin
Persistencia Persistencia
Servidor BD Servidor BD
Modela
entidades
del negocio
y sus reglas
bsicas
Validacin
semntica
Dominio Dominio
Niveles de una arquitectura
Niveles de una arquitectura
multi
multi
-
-
nivel
nivel
6
Elementos del est
Elementos del est

ndar Java EE 5
ndar Java EE 5
Mltiples frameworks
Framework:
librera
reglas de uso
soporta 1 aspecto
del desarrollo
7
8
4 Pantallas se contruyen con componentes grficos
que reaccionan a eventos:
4son componentes de alto nivel que encapsulan elementos
HTML y tienen comportamiento asociado
4como reaccin a eventos (por ej: oprimir un botn) invocan
directamente mtodos de clases java ("backing beans")
4 Aspectos de validacin de los datos del usuario:
4Validacin automtica asociada a cada componente grfico
4Cuando la validacin falla se vuelve a mostrar la pantalla junto
con los mensajes de error
4Procesamiento de eventos solo cuando la validacin es
exitosa
Nivel web basado en JSF
Nivel web basado en JSF
9
Framework JSF
Navegador
Cliente
Presentaci Presentaci n n
Aplicaci Aplicaci n n Servicios Servicios Persistencia Persistencia
servlet Faces
Servidor Web
Servidor BD
Servidor de
componentes
Dominio Dominio
JSP
pantallazo1
HTML
1
JSP
pantallazo2
Backing
Bean 2
VISTAS
MODELO
CONTROLADOR
Backing
Bean 1
BD
rela-
cional
HTML
2
EJB
sesin
A
EJB
entidad
C
10
4 Concepto de EJB de entidad
4modela una entidad de negocio persistente
4 Concepto de EJB de sesin
4componente de negocio: implementa los servicios ofrecidos
por la aplicacin
4 Simplificacin de Java EE 5 respecto a J2EE
4clases simples para implementar entidades y componentes de
negocio:
se regresa a un POJO: Plain Old Java Objects
4descriptores desaparecen (pero ahora hay @anotaciones no
obligatorias)
ms trabajo para el Contenedor, menos para el desarrollador
4persistencia automtica: desaparece SQL burocrtico
4ahora s se programa en trminos de objetos (entidades) y no en
trminos de tablas de la BD
cdigo se reduce a la tercera parte (y ms robusto)
Niveles de Servicio y Dominio
Niveles de Servicio y Dominio
basados en EJBs 3.0
basados en EJBs 3.0
11
J2EE:
J2EE:
Arquitectura MVC de una aplicaci
Arquitectura MVC de una aplicaci

n
n
Navegador
Cliente
Presentaci Presentaci n n Aplicaci Aplicaci n n Servicios Servicios Persistencia Persistencia
Servidor Web
Servidor BD
Servidor de componentes
Dominio Dominio
VISTAS
MODELO
CONTROLADOR
BD
rela-
cional
servlet controlador
EJB sesin
A
EJB entidad
C
StateMachine
javaBean 1
javaBean
2

WebProxy
EJB controlador

ScreenFlow-
Manager
JSP
pantallazo1
JSP
pantallazo2
JSP
template

HTML
1
RequestProcessor
HTML
2
MainServlet

DAO
Model
DAO
Value
BD

12
Java EE 5:
Java EE 5:
Arquitectura de una aplicaci
Arquitectura de una aplicaci

n
n
utilizando frameworks JSF, EJB 3.0 y Seam
utilizando frameworks JSF, EJB 3.0 y Seam
Navegador Cliente
JSP
N. Aplicaci N. Aplicaci n (Web) n (Web)
ejb
aplicacin
N. Servicios N. Servicios N. Persistencia N. Persistencia
Servidor Web Servidor de BD
N. Presentaci N. Presentaci n n
Servidor de componentes
BD
relacional
HTML
JSP
entidades
Convenciones: interaccin HTTP invocacin acceso BD uso de atributos
de entidades (get y set)
servlet
JSF
servlet
Seam
ejb
Seam
ejb
aplicacin
entity
manager
f
o
r
w
a
r
d
frameworks
13
4 Seam logra que las entidades estn asociadas
directamente a las pantallas
4las pantallas muestran valores de atributos de entidades
4el usuario modifica o suministra valores para estos atributos
4 Procesamiento de eventos de pantallas es realizado
directamente por los componentes EJB de sesin
4 Se eliminan intermediarios => muchos patrones se
vuelven innecesarios
4 Portabilidad de Seam a cualquier servidor que soporte JSF y
EJB 3.0
Acople entre niveles utilizando el
Acople entre niveles utilizando el
framework JBoss Seam
framework JBoss Seam
14
B:
B:
Concepto y programaci
Concepto y programaci

n
n
de un caso de uso
de un caso de uso
(propuesta CincoSOFT) (propuesta CincoSOFT)
15
J2EE:
J2EE:
Arquitectura para soportar un caso de uso
Arquitectura para soportar un caso de uso
Navegador
Cliente
Presentaci Presentaci n n Aplicaci Aplicaci n n Servicios Servicios Persistencia Persistencia
Servidor Web
Servidor BD
Servidor de
componentes
Dominio Dominio
VISTAS
MODELO
BD
rela-
cional
JSP
pantallazo1
JSP
pantallazo2
JSP
template
servlet controlador
CONTROLADOR
WebProxy
EJB sesin
A
DAO
EJB controlador
StateMachine
XxxEjbHandler
XxxModel
ScreenFlow-
Manager
XxxFlow-
Handler
HTML
1
RequestProcessor
HTML
2
MainServlet
RequestToEventTrans
XxxRequest-
Handler
XxxValue
EJB entidad
C
DAO
16
Java EE 5:
Java EE 5:
Arquitectura para soportar un caso de uso
Arquitectura para soportar un caso de uso
Navegador Cliente
JSP 2
N. Aplicaci N. Aplicaci n (Web) n (Web) N. Servicios N. Servicios N. Persistencia N. Persistencia
Servidor Web Servidor de BD
N. Presentaci N. Presentaci n n
Servidor de componentes
BD
relacional
HTML
JSP 1
Entidades
(compartidas por los casos de uso)
Convenciones: interaccin HTTP invocacin acceso BD uso de atributos
de entidades (get y set)
Ejb para el
caso de uso
f
o
r
w
a
r
d
Frameworks JSF, EJB 3.0 y Seam
17
pantalla P
Concepto de un caso de uso
Concepto de un caso de uso
4 Es un conjunto de servicios sobre entidades de negocio,
implementado por un ejb de sesin y por un conjunto de
pantallas desde donde se solicitan estos servicios
ejb de sesin
entidad A
entidad B
pantalla Q pantalla R
campos de
pantallas
asociados a
atributos de
entidades y
del ejb
botones de
pantallas que
invocan servicios
del ejb
entidades
compartidas por
todos los casos de
uso
los servicios del ejb
consultan y modifican
las entidades
18
4 Un ejb de sesin que soporta un caso de uso puede exponerse
como Web service ofreciendo pblicamente un subconjunto
de sus servicios
ejb de sesin
Web service
entidad A
entidad B
19
Aplicaci
Aplicaci

n =
n =
entidades + ejbs + web services + pantallas
entidades + ejbs + web services + pantallas
caso de uso 1 caso de uso 2
Web service 1 Web service 2
ejb sesin
caso uso 1
entidad A
entidad B
entidad C
entidad D
entidades de negocio
ejb sesin
caso uso 1
ejb sesin
20
Flujo de negocio para
Flujo de negocio para
un nuevo caso de uso
un nuevo caso de uso
4 Caso de uso inscribir nuevo hotel
4invocar servicio newHotel() para iniciar conversacion creando
nuevo objeto Hotel vacio
4mostrar pantalla "editHotel" que muestra el objeto Hotel para que
el usuario de valor a sus atributos
4invocar servicio verifyNewHotel() para validar el objeto Hotel:
si hay errores de validacion volver a mostrar la pantalla "editHotel
si no hay errores mostrar la pantalla "confirmHotel" para pedir al
usuario su confirmacion o cancelacin
4cuando el usuario confirma:
invocar servicio confirm() para agregar el nuevo Hotel a la BD y
cerrar la conversacion
mostrar la pantalla "main" del sistema, la cual mostrar un mensaje
de confirmacion
4cuando el usuario cancela:
invocar servicio cancel() para cerrar conversacion
mostrar pantalla "main"
21
/hotels/editHotel.xhtml
hotels/confirmHotel.xhtml
common/main.xhtml
editHotel
newHotel()
confirmHotel
verifyNewHotel()
confirm()
Flujo de negocio:
Flujo de negocio:
caso de uso
caso de uso

inscribir nuevo hotel


inscribir nuevo hotel

f
t
Proceed
B
Cancel
cancel()
E
main
Revise
Confirm
E
Cancel
Reglas de navegacin de pantallas se describen en archivos de
configuracin: faces-config.xml, pages.xml
22
4 pages.xml: reglas de navegacin entre
pantallas
4desde cualquier pantalla con la accin newHotel se solicita ir
a la pantalla editHotel de entrada al caso de uso
4en la pantalla editHotel el usuario suministra los datos del
nuevo hotel e invoca la accin verifyNewHotel; despus va
a la pantalla confirmHotel solo si el nuevo hotel es vlido
<!-- reglas desde cualquier pantalla -->
<page view-id="*">
...
<navigation from-action="#{hotelInscription.newHotel}">
<redirect view-id=
"/pages/hotels/hotelInscription/editHotel.xhtml"/>
</navigation>
</page>
<!-- reglas desde pantalla editHotel -->
<page view-id="/pages/hotels/hotelInscription/editHotel.xhtml"
conversation-required="true">
<navigation from-action="#{hotelInscription.verifyNewHotel}">
<rule if="#{hotelInscription.hotelValid}">
<redirect view-id=
"/pages/hotels/hotelInscription/confirmHotel.xhtml"/>
</rule>
</navigation>
</page>
23
Ejb de sesi
Ejb de sesi

n para el caso de uso


n para el caso de uso
4 Atributos:
4atributos que representan los frameworks de control
4atributos que son entidades
4atributo que indica el resultado de validar la nueva entidad Hotel
4inyeccin/extraccin de atributos
@Stateful
@Name("hotelInscription")
public class HotelInscriptionAction
implements HotelInscription {
@PersistenceContext
private EntityManager em;
@In
private FacesMessages facesMessages;
@In(required=false)
@Out(required=false)
private Hotel hotel;
private boolean hotelValid;
public boolean isHotelValid(){
return hotelValid;
}
@Destroy @Remove
public void destroy() {}
24
4 Servicios:
4servicios que inician o terminan conversacin de inscribir un hotel
4servicio que valida el nuevo hotel
4servicio que ingresa el nuevo hotel a la BD
@Begin
public void newHotel() {
hotel = new Hotel();
}
public void verifyNewHotel() {
if ( ! hotel.getCountry().equals("USA") ) {
facesMessages.add
("Only accepts hotels in USA ");
return;
}
if ( ! hotel.getZip().matches("^\\d*$") ) {
facesMessages.add("Zipcode must be numeric");
return;
}
hotelValid = true;
}
@End
public void confirm() {
em.persist(hotel);
facesMessages.add("Thank you, your inscription"
+ " of #{hotel.name} has id #{hotel.id}");
}
@End
public void cancel(){}
}
25
Entidades que participan
Entidades que participan
en el caso de uso
en el caso de uso
4 entidad maestra Hotel
@Entity
@Name("hotel")
@Scope(CONVERSATION)
@Table(name="Lodge")
public class Hotel implements Serializable {
private Long id;
private String name;
...
private List<Atraction> atractions
= new ArrayList<Atraction>();
public Hotel() {}
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
Observar:
atributo de relacin con otra entidad (detalles)
anotacin indicando el atributo llave
26
@NotNull
@Length (min = 1, max = 50, message =
"name is required and must be at most {max} characters long")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
...
@OneToMany(mappedBy="hotel", cascade=CascadeType.ALL)
@OrderBy("description asc")
public List<Atraction> getAtractions() {
return atractions;
}
public void setAtractions(List<Atraction> atractions) {
this.atractions = atractions;
}
}
Observar:
anotacin de validacin de un atributo
anotacin de relacin con otra entidad
27
Pantalla
Pantalla

editHotel
editHotel

de edici
de edici

n de una entidad Hotel


n de una entidad Hotel
28
4 Expone directamente los atributos de la entidad Hotel
...
<div class="label">Name:</div>
<div class="input">
<h:inputText id="name" value="#{hotel.name}"
required="true" />
<br/>
<span class="errors"><h:message for="name" /></span>
</div>
4 Hay una zona para los mensajes FacesMessages
<div class="entry errors">
<h:messages globalOnly="true" />
</div>
4 Los botones invocan servicios
<div class="input">
<t:commandButton id="proceed" value="Proceed"
action="#{hotelInscription.verifyNewHotel}"
styleClass="button"/>&#160;
<s:button value="Cancel" id="cancel"
action="#{hotelInscription.cancel}"
styleClass="button"/>
</div>
29
4 Validacin JSF antes de invocar servicios:
30
C:
C:
Facilidades para el desarrollo de
Facilidades para el desarrollo de
aplicaciones Java EE 5
aplicaciones Java EE 5
31
Variables en contextos Seam:
Variables en contextos Seam:
inyecci
inyecci

n y extracci
n y extracci

n (biyecci
n (biyecci

n)
n)
hotel
booking
hotels
atractions
hotelSearching
hotelInscription
hotelBooking
out
in
entidad
lista de
entidades
ejb de
sesin
Convenciones
4 Biyeccin: asociacin dinmica, contextual y bidireccional entre
las variables de los contextos y los atributos de los componentes
32
hotelInscription
editHotel.xhtml
out
in
entidad
lista de
entidades
ejb de
sesin
Convenciones
action
4 Uso de las variables por las pantallas
4ej: editHotel
hotel
33
4 Tipos de contextos en Seam:
4StatelessContext: variables sin estado (como ejbs sin estado); en
realidad es un no contexto
4EventContext: equivale al request context, asociado a pedido JSF
4PageContext: estado asociado a una pantalla mostrada
4ConversationContext: unidad de trabajo para el usuario, puede
durar varios pedidos
4SessionContext: asociada a toda la sesin de un usuario
4BusinessContext: asociado a un proceso de negocio que puede
involucrar mltiples interaccionees con mltiples usuarios
4ApplicationContext: asociado al estado global del servidor
34
Servicios de persistencia
Servicios de persistencia
del EntityManager (framework EJB3.0)
del EntityManager (framework EJB3.0)
4 Invocados desde los ejb de sesin
4Obtener la referencia al EntityManager por inyeccin:
@PersistenceContext
private EntityManager em;
4 insert en la BD una nueva entidad :
em.persist(hotel); // el objeto adquiere PK
4 select en la BD una entidad existente, conociendo su PK:
Hotel hotel = (Hotel)em.find(Hotel.class, hotelId);
4 select en la BD una entidad existente, cancelando posibles
modificaciones en memoria:
em.refresh(hotel);
4 update diferido en la BD con modificaciones de una entidad
existente (se difiere hasta el commit de la transaccin):
hotel.setName("Hotel Rey");
em.merge(hotel);
4 delete en la BD de una entidad existente:
em.remove(hotel);
35
4 createQuery(): consulta o actualizacin en la BD segn
diversos criterios (EJB QL):
4select una entidad:
Hotel hotel = (Hotel)em.createQuery
("from Hotel h where h.name=:name and h.city=:city")
.setParameter("name", "Hotel Rey")
.setParameter("city", "Bogota")
.getSingleResult();
4select una lista de entidades:
List<Hotel> theList = em.createQuery
("from Hotel h where h.city = :city")
.setParameter("city", Bogota")
.getResultList();
4update una o varias entidades:
em.createQuery
("update Hotel h set h.city = :city")
.setParameter("city", "Bogota")
.executeUpdate();
4delete una o varias entidades:
em.createQuery
("delete from Hotel h where h.city = :city")
.setParameter("city", Bogota")
.executeUpdate();
36
Otras facilidades importantes
Otras facilidades importantes
4 Facilidades de Log proporcionadas por Seam
4permite mostrar banderas que combinan texto parametrizado y
variables de contextos:
log.info("Cancel booking: #0 for #{user.username}",
booking.getId());
4 Seguridad por roles
4por anotaciones se puede proteger un ejb o un servicio particular
para que solo pueda ser invocado por un rol particular
4Cada botn de una pantalla se puede habilitar o mostrar solo para
un rol particular
4 Internacionalizacin: se pueden lograr las siguientes
caractersticas:
4el usuario escoge el idioma de su preferencia
4existe idioma por defecto segn localizacin del usuario
4los letreros de las pantallas salen en el idioma vigente
4los mensajes de errores de validacin salen en el idioma vigente
37
D:
D:
Elementos JSF para pantallas
Elementos JSF para pantallas
38
Pantallas
Pantallas

facelets
facelets

construidas con templates y <div>


construidas con templates y <div>
4 Concepto de template:
4pantalla base que define estructura comn de las pantallas reales
4contiene partes fijas y partes que deben ser redefinidas por cada pantalla
4ejemplo de estructura de pantalla:
banner
content sidebar
footer
39
4 Ejemplo de template: template.xhtml
<!-- librerias de etiquetas -->
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:t="http://myfaces.apache.org/tomahawk">
<!-- referencia al archivo que define estilos de los div -->
<head>
<meta http-equiv="Content-Type"
content="text/html;charset=iso-8859-1" />
<title>Hotels reservation system</title>
<link href="../css/screen.css" rel="stylesheet" type="text/css"/>
</head>
40
<body>
<!-- div que define la estructura global de toda pantalla -->
<div id="document" >
<!-- toda pantalla tiene un banner fijo -->
<div id="headerMenu">
<div id="titleMenu"><h4>CincoSOFT framework</h4></div>
<div id="statusMenu">
<t:jscookMenu layout="hbr" theme="ThemeIE">
<t:navigationMenuItems value="#{login.menu}" />
</t:jscookMenu>
</div>
</div>
<!-- toda pantalla tiene un contenido variable: las partes
sidebar y content deben ser definidos por c/pantalla real-->
<div id="container">
<div id="sidebar" style=" width : 150px;">
<ui:insert name="sidebar"/>
</div>
<div id="content" style="width : 500px;">
<ui:insert name="content"/>
<ui:include src="footer.xhtml" />
</div>
</div>
</div>
</body>
</html>
41
4 Pantalla real que se basa en el template:
4la etiqueta ms externa <ui:composition> indica que se usa un template
4la etiqueta <ui:define> redefine partes variables del template
4se disea con <div> que tienen estilos asociados
4ejemplo: password.xhtml :
<!-- librerias de etiquetas e indicacion del template utilizado -->
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:s="http://jboss.com/products/seam/taglib"
template="../common/template.xhtml">
<!-- definicion de la parte content -->
<ui:define name="content">
<div class="section"> <h1>Change Your Password</h1></div>
<div class="section">
...
</div>
</ui:define>
<!-- definicion de la parte content -->
<ui:define name="sidebar">
<h1>changePassword use case</h1>
</ui:define>
</ui:composition>
42
Elementos avanzados de JSF
Elementos avanzados de JSF
4 Men jerrquico dinmico: etiqueta <t:jscookMenu>
43
4 Calendario: etiqueta <t:inputCalendar>
44
4 Tabla con scroll y ordenable por columnas :
etiqueta <t:dataTable>
45
4 Tabla editable con validacin por celda :
etiqueta <t:dataTable>
46
4 Tablas anidadas : etiqueta <t:dataTable>
47
E:
E:
Meta
Meta
-
-
framework para acelerar el
framework para acelerar el
desarrollo en Java EE 5
desarrollo en Java EE 5
(experiencia CincoSOFT) (experiencia CincoSOFT)
48
4 Su control se apoya en frameworks: JSF, EJB3.0, Seam
4 Debe contener un mdulo de seguridad:
4basado en roles JEE para autenticacin y autorizacin
4entidades y casos de uso para: cambiar password, manejar perfiles
de seguridad (basados en roles), manejo de usuarios e inscripcin en
perfiles ,...
4 Debe contener los descriptores correctamente configurados
4 Debe disponer de un men jerrquico que se carga de la BD
segn perfil del usuario
4 Sus fuentes deben estar organizados por mdulos y dentro
de cada mdulo por casos de uso
4inicialmente nace solo con el mdulo de seguridad
4 Debe disponer de un ANT para compilacin, empaque y
despliegue
4 Debe manejar logs
El esqueleto de una aplicaci
El esqueleto de una aplicaci

n Java EE 5
n Java EE 5
49
4 Genera el esqueleto de una aplicacin Java EE 5
4 se apoya en frameworks estndares JEE5:
4JSF: implementado por Apache Myfaces
4EJB 3.0: implementado por el servidor JBoss; en el futuro debe
operar tambin con otros servidores (BEA, IBM WebSphere, )
4JBoss Seam: acopla JSF y EJB 3.0
4JBoss jBPM: workflow
4otros: Log4j, Quartz, Jasper, .
4 Adems ofrece generadores de esqueletos para agregar a la
aplicacin:
4una nueva Entidad
4un nuevo EJB
4un nuevo Web-Service
4una nueva pantalla
4un nuevo Caso de Uso
4un nuevo Mdulo
4 El Meta-Framework de CincoSOFT no amarra a la aplicacin a
utilizar permanentemente el Meta-Framework
4el cdigo generado es claro y documentado
4organizado segn el estndar: por mdulos y casos de uso
4indica secciones que deben ser llenadas por el programador
Meta
Meta
-
-
framework de CincoSOFT
framework de CincoSOFT
50
Esqueleto inicial de una aplicaci Esqueleto inicial de una aplicaci n Java EE 5 n Java EE 5
generado por el Meta generado por el Meta- -framework de CincoSOFT framework de CincoSOFT
Navegador Cliente
N. Aplicaci N. Aplicaci n (Web) n (Web) N. Servicios N. Servicios N. Persistencia N. Persistencia
Servidor Web Servidor de BD
N. Presentaci N. Presentaci n n
Servidor de componentes
BD
relacional
HTML
password.xhtml
Module, Usecase, Service,
Profile, ProfileService,
User, UserProfile,
Menu
Convenciones: interaccin HTTP invocacin acceso BD uso de atributos
de entidades (get y set)
Ejb ChangePassword
f
o
r
w
a
r
d
Frameworks JSF, EJB 3.0 y Seam
acople mediante descriptores generados por
el meta-framework CincoSOFT
users.xhtml
profiles.xhtml
Ejb UserGestion
Ejb ProfileGestion
ENTIDADES
51
Conclusiones
Conclusiones
4 Atractivos de Java EE 5:
4Conciso y eficiente; reduce cdigo a la tercera parte
4Desaparece JDBC (cdigo burocrtico SQL) y varios patrones
4Integracin de mltiples frameworks que ofrecen muchas
facilidades: persistencia, seguridad, logs, internacionalizacin,
BPM, testing, ...
4Pantallas con elementos ricos de interfaz y relativa facilidad de
uso: mltiples implementaciones de JSF por Apache MyFaces,
Oracle ADF,
4 Dificultades planteadas por Java EE 5:
4comenzar de nuevo .
4Prdida del control a un nivel fino de detalle porque los
frameworks actan como cajas negras => dificultad de depurar
4Actualmente no es soportado por todos los proveedores de la
tecnologa Java
4 Utilidad de un meta-framework
4disminuir sustancialmente la curva de aprendizaje
4acelera el proceso de desarrollo
52
Referencias
Referencias
4 Libros sobre Java EE 5:
JavaServer Faces: The Complete Reference, Mc Graw Hill,
2007.
Pro EJB 3: Java Persistence API, Apress, 2006.
4 Fuentes en internet:
http://java.sun.com/javaee/5/docs/tutorial/doc : "The Java EE 5
Tutorial " es el tutorial oficial de Sun (versiones HTML y PDF)
http://labs.jboss.com/portal/jbossseam/docs:
Manuales de referencia de JBoss Seam
http://java.sun.com/javaee/technologies/javaee5.jsp: Get Started
with the Java EE 5 SDK": son tutoriales y demos para comenzar
http://java.sun.com/reference/blueprints: Patrones y guas para el
desarrollo de aplicaciones Java EE en general

También podría gustarte