2. PortletFaces Tools y PortletFaces Bridge:
Integrando JSF y Liferay
+
José Antonio Álvarez
jose.antonio.alvarez@mimacom.com
ICESOFT TECHNOLOGIES INC For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
ICESOFT TECHNOLOGIES INC
Wednesday, January 19, 2011 Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Slide: 1 Access Code: 2220271
3. Índice
• Edoras Framework
• PortletFaces Tools + JSF 1.2
• Introducción, historia, ventajas
• Ciclo de vida Portlet vs Ciclo de vida JSF
• PortletFaces Tools + ICEfaces 1.8.x
• Mejoras en la integración con Liferay
• Ciclo de vida con ICEfaces
• PortletFaces Bridge + JSF 2.0/ICEfaces 2
• Características de JSF 2.0 e ICEfaces 2
• Resumen y turno de preguntas
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
4. ¿Qué es edoras framework?
edoras framework es una coleccion de módulos y código de interconexión
orientado al desarrollo de aplicaciones empresariales
• Open Source
• Estándares JPA, JSF, y JSR-286 (Portales)
• Combina Spring, ICEfaces y Liferay
• Uso de Maven 2 para labores de compilación y manejo
de dependencias
• Full Web Application Stack
• Módulos más populares
• Motor de Procesos y Sistema de Workflows
• Ámbitos Extendidos (Parte de Spring 3.1)
• PortletFaces y PortletBridge
…Y más módulos y características útiles
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
5. ¿Qué es Liferay Portal?
Liferay Portal es una solución que permite crear de manera sencilla portales
web, proporcionando facilidades para la publicación de contenido así como
para la colaboración entre usuarios
• Es un contenedor de Portlets
• Open Source. Desarrollado en Java
• Posee un sistema de gestión de contenidos (CMS)
• Más de 60 portlets incluidos de serie
– Wiki, Foros, Calendarios compartidos...
• De los primeros portales en dar
soporte a Portlets en JSF (Mayo 2005)
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
6. PortletFaces Tools Project
• El propósito del proyecto es hacer más fácil el desarrollo
de portlets JSF 1.2 (e ICEfaces 1.8.x) sobre Liferay Portal
• Website:
http://www.portletfaces.org/projects/portletfaces-tools
• Versión actual : 1.3.0 GA (General Availability)
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
7. PortletFaces Tools – Historia
• Fundado por Joel Kozikowski y Neil Griffin
• Originalmente promovido por Liferay, Inc. en modo de
incubación
• Mimacom AG asumió el control desde la incubación y
actualmente es un subproyecto de edoras framework
• Contribuyentes notables:
Micha Kiener, Atul Patel, Ed Shin, Stefan Niederhauser
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
8. PortletFaces Tools – Ventajas
• Tanto las características estándar de la API Portlet 2.0 y
otras específicas de Liferay se proporcionan de un modo
natural para desarrolladores JSF.
– Acceso a preferencias del portlet vía Expression Language
– Access a objetos de Liferay vía Expression Language
• Integración mejorada ICEfaces-Liferay
• Interfaz integrada con el tema de Liferay
• Carga de archivos para portlets estándar JSF
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
9. Mejoras sobre FacesContext
• Se proporciona la clase PortletFacesContext, que hereda
de FacesContext, añadiendo más funcionalidades:
public class BackingBean {
private PortletFacesContext portletFacesContext =
PortletFacesContext.getInstance();
public void actionListener(ActionEvent e) {
// Get the current Liferay User„s email address
User user = portletFacesContext.getUser();
String emailAddress = user.getEmailAddress();
}
}
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
10. Mejoras sobre Expression Language
• PortletFaces permite el acceso a preferencias del portlet
(JSR 286) desde EL (Expression Language)
• Compatible con partialSubmit de ICEfaces
<ice:inputText
id="datePattern”
partialSubmit=“true”
value="#{portletPreference['datePattern']}" />
<ice:commandButton
actionListener="#{portletPreferencesForm.submit}”
value="#{i18n['submit']}" />
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
11. Mejoras sobre Expression Language (II)
• PortletFaces proporciona acceso a información específica
de Liferay desde EL
<h:outputLabel
for="postalCode" value="#{i18n['zip-postal']}" />
<img
src="#{liferay.themeImageURL['/common/help.png']}"
title="#{i18n['postal-code-hint']}" />
<a href="mailto:#{liferay.user.emailAddress}" />
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
12. Carga de Archivos
• Con JSF 1.0-2.0 no se proporciona un componente
estándar de subida de ficheros
• PortletFaces soluciona el problema proporcionando el
componente pf:inputFile
<pf:inputFile value=“#{modelBean.file}”>
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
13. Ciclos de vida JSF/Portlet
¿Pero cómo adapto el ciclo de vida de JSF
al ciclo de vida de un Portlet?
Solución: JSF Portlet Bridges
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
14. Ciclos de vida JSF/Portlet
JSF Portlet Bridges:
Hacen de puente entre los ciclos de vida JSF y Portlet
¿Cómo se definen?
En WEB-INF/portlet.xml. Por ejemplo para Sun OpenPortal
JSF Bridge:
<portlet-class>
com.sun.faces.portlet.FacesPortlet
</portlet-class>
Sun OpenPortal JSF Bridge soporta Portlet API 1.0 y 2.0,
JSF 1.1 y 1.2 (Mojarra)
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
15. Ciclos de vida JSF/Portlet – Petición HTTP GET
RENDER_PHASE del Ciclo de vida Portlet
APPLY REQUEST PROCESS
RESTORE VIEW
VALUES VALIDATIONS
Ciclo de vida JSF
RENDER INVOKE UPDATE
RESPONSE APPLICATION MODEL VALUES
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
16. Ciclos de vida JSF/Portlet – Petición HTTP POST
ACTION_PHASE del Ciclo de vida Portlet
APPLY REQUEST PROCESS
RESTORE VIEW
VALUES VALIDATIONS
Ciclo de vida JSF
RENDER INVOKE UPDATE
RESPONSE APPLICATION MODEL VALUES
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
17. Peticiones en Portlets
• Aunque las páginas de un Portal pueden contener varios
Portlets, sólo un Portlet participará en el evento de envío
del formulario.
• El envío de un formulario en un Portlet obliga al resto de
Portlets a renderizarse de nuevo.
– ¡Pueden perderse valores introducidos por el usuario en el resto de Portlets!
• La experiencia de usuario puede verse afectada por este
comportamiento.
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
18. ¿Qué aporta el uso de ICEfaces?
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
19. Integración mejorada ICEfaces-Liferay
• El ICEfaces 1.x Portlet Bridge sólo participa en la fase
RENDER_PHASE del ciclo de vida de un portlet
• Una vez que finaliza, toda la interacción con el servidor se
hace por medio de Ajax. Esto previene recargas completas
de la página que alteran la experiencia de usuario
• Las futuras versiones harán uso de la fase
RESOURCE_PHASE presente en la especificación Portlet
2.0
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
20. Ciclos de vida ICEfaces/Portlet – Petición HTTP GET
Se ejecuta la fase de Portlet RENDER_PHASE, pero después ICEfaces toma
el control y todo cambio se realiza incrementalmente a través del Ajax
Bridge. No se realiza un Http Post, evitando una recarga total de la página
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
21. Integración mejorada (II)
• El desarrollo de portlets para Liferay normalmente
requiere el uso de dos objetos comúnmente usados:
– PermissionChecker
– ThemeDisplay
• Desgraciadamente, después de RENDER_PHASE, Liferay
recicla estos objetos y están disponibles para el recolector
de basura de la JVM
• PortletFaces permite el acceso a estos objetos para su uso
mediante ICEfaces
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
22. Integración mejorada (III)
• Durante la RENDER_PHASE inicial PortletFaces hace una
copia de PermissionChecker y ThemeDisplay y las
almacena en el ámbito extendido de ICEfaces
• Con ello se permite el uso de estas instancias en cualquier
momento a través de la clase PortletFacesContext:
PermissionChecker permissionChecker =
portletFacesContext.getPermissionChecker();
ThemeDisplay themeDisplay =
portletFacesContext.getThemeDisplay();
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
23. ¿Y JSF 2.0?
• JSF 2.0 + Portlet 1.0
– Debido a las nuevas características Ajax en JSF 2.0, no es posible
integrar ambas tecnologías de una manera estándar
• JSF 2.0 + Portlet 2.0
– Aún no se ha decidido si se establecerá un JSR para definir un
estándar para JSF 2.0 y Portlet 2.0
– Actualmente podemos usar:
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
24. PortletFaces Bridge
• Permite el despliegue de portlets JSF 2.0 dentro de
contenedores Portlet 2.0 como Liferay Portal
• También permite el uso de portlets ICEfaces 2.0
• Actualmente en versión 2.0.0-Beta 3. La versión GA será
liberada después de ICEfaces 2.0 GA
• Website:
http://www.portletfaces.org/projects/portletfaces-bridge
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
25. Nuevas características de JSF 2.0
• Estándar de Anotaciones Java:
– @ManagedBean
– @RequestScoped
– @SessionScoped
– @ApplicationScoped
– @ManagedProperty
Las anotaciones permiten definir los managed beans en las mismas
clases Java, simplificando el archivo faces-config.xml.
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
26. Nuevas características de JSF 2.0 (II)
• Estándar de Ajax:
– Envío parcial de formularios mediante librería Javascript (jsf.js)
– Actualizaciones (render) parciales automáticas hacia el DOM del
navegador
• Nuevo ámbito View (@ViewScoped)
• El Controlador de Vista estándar es Facelets
– Permite Componentes custom sin código Java
• Controlador de recursos estándar
– Permite empaquetar recursos para los componentes sin apenas
configuración
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
27. PortletFaces Bridge + JSF 2.0
• JSF 2.0 Ajax
– Permite el acceso total a la Portlet API a los desarrolladores JSF
• JSF 2.0 Resources
– El ‘bridge’ hace uso de la fase RESOURCE_PHASE para:
• Librerías JavaScript
• Archivos CSS
• Archivos de imagen
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
28. PortletFaces Bridge + ICEfaces 2
• ICEfaces 2 usa el mecanismo estándar jsf.js para llamadas
Ajax
– ICEfaces 1.8 usaba un Servlet (incluso ejecutándose como portlet)
para la comunicación Ajax
• Portlets de ICEfaces desplegados con PortletFaces Bridge
aprovechan la fase RESOURCE_PHASE de Portlet 2.0
• Los desarrolladores tienen acceso total a la Portlet API
durante el ciclo de vida del portlet, incluso con Ajax Push!
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
29. Resumen PortletFaces Bridge
• Nuevo proyecto Open Source
• Permite a los desarrolladores crear y desplegar JSF 2.0 e
ICEfaces 2 portlets en portales que cumplen el estándar
Portlet 2.0 como Liferay 5.x/6.x
• La versión GA será liberada poco después de ICEfaces 2
GA
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
33. mimacom
Version Control Build System
Knowledge-Mngmt
Subversion Maven 2
Code Reviews
Confluence
Crucible
Development Continuous Integration
Eclipse (IDE) Bamboo
Issue – Tracker (Requirements, Bugs, Changes, etc.)
JIRA
Toolchain
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
34. Turno de preguntas
• ¿Preguntas?
– Por favor escriban sus preguntas en la ventana “Question and Answer” en la parte
inferior derecha de su pantalla
– Las respuestas a las preguntas que no puedan tratarse en esta sesión serán
enviadas por correo electrónico
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271
35. Contacto
El enlace a las transparencias y ejemplos expuestos en el
Webinar será suministrado vía:
Blog: http://blog.mimacomiberica.es
Twitter: @icefaces_espana
Email: jose.antonio.alvarez@mimacom.com
jfclercx@mimacom.com
For audio, please dial Toll Free: 1+86665 0259
Dial-in if required : +41 (0) 415 0008 222
Access code +1 416 915
International:935-074-787 8403 www.icefaces.org
www.icefaces.org | www.mimacom.com
Access Code: 2220271