Proyecto integrador. Las TIC en la sociedad S4.pptx
Migrating to ICEfaces 2 (Spanish)
1. Presentado por
2.0
ICESOFT TECHNOLOGIES INC
ICESOFT TECHNOLOGIES INC
Wednesday, March 30, 2011 www.icefaces.org
www.icefaces.org | www.mimacom.com
Slide: 0
2. ¡Bienvenidos!
• Introducciones Moderador
• Audio silenciado
Jean-François Clercx
• Encuesta CEO Mimacom Ibérica
Presentador
José Antonio Álvarez
Software Engineer Mimacom
www.icefaces.org | www.mimacom.com
3. Migrando a ICEfaces 2: Agenda
• Novedades en JSF 2
• Novedades en ICEfaces 2
• Demo: Migración de una aplicación existente de ICEfaces 1.8 a 2.0
• Turno de preguntas y respuestas
www.icefaces.org | www.mimacom.com
4. ICEfaces 2
• La nueva generación para desarrollo JSF AJAX
• Construido sobre JSF 2
• Capa de Compatibilidad
– Permite una adaptación sencilla desde ICEfaces 1.8 y JSF 1.2
– Ofrece los componentes de ICEfaces 1.8 para su uso en JSF 2
• Nuevos componentes
• Configuración más sencilla
• Mejor compatibilidad
• Muchas nuevas características sobre JSF 2
www.icefaces.org | www.mimacom.com
5. Novedades JSF 2
JSF 2 aporta muchas mejoras frente a JSF 1.2.
• AJAX como parte de la arquitectura estándar
- Peticiones Ajax y actualizaciones parciales se integran en el ciclo de vida JSF
• Parte de JEE6
• Facelets se presenta como el estándar
• Desarrollo de componentes más fácil y sencillo con Facelets
• El tráfico se reduce mediante el guardado parcial de estado
• Soporte más amplio para eventos del sistema
www.icefaces.org | www.mimacom.com
6. Novedades en JSF 2, cont.
JSF 2 aporta muchas mejoras frente a JSF 1.2.
• HTTP GET soportado en el ciclo de vida JSF
• Nuevos ámbitos para beans, y soporte para ámbitos custom
• Anotaciones
• Carga de recursos estandarizada
• Mejora de manejo de excepciones
• Navegación mejorada
• Y más …
www.icefaces.org | www.mimacom.com
7. Novedades en ICEfaces 2
ICEfaces 2 amplía y simplifica el desarrollo en JSF
• AJAX automático y renderizado Direct-2-DOM
• Single Submit
- Ciclo de vida se ejecuta en un único componente 2.0
• AJAX Push
• Bean Management
- Se ofrecen anotaciones que ajustan el comportamiento de beans de ámbito View
• Registro del uso de recursos
• Desarrollo de Portlets con PortletFaces Bridge
• APIs de cliente
- Monitorización de Eventos, envío de formularios, callbacks de eventos y
monitorización de conexión AJAX Push
www.icefaces.org | www.mimacom.com
8. Novedades en ICEfaces 2, cont.
ICEfaces 2 amplía y simplifica el desarrollo en JSF
• Configuración simplificada
• Componentes ricos
- ICEfaces Components
2.0
- ICEfaces Advanced Components
- ICEfaces Enterprise Components
• Capa de Compatibilidad 1.8
- Actualiza rápidamente tu aplicación ICEfaces 1.8 a 2.0 con cambios menores
• Nuevo Ámbito Window
• Mejora de clustering y tolerancia a fallos
www.icefaces.org | www.mimacom.com
9. Demo: Actualización de aplicación existente
Usando la integración de Eclipse IDE
Screen shot
2.0
www.icefaces.org | www.mimacom.com
10. Actualizando de ICEfaces 1.8 a 2.0
Paso 1, configuramos las librerías usadas …
1. Actualización de JSF jars
• jsf-impl.jar: 1.2 – 2.0 (ICEfaces 2.0 viene con Mojarra 2.0.3 FCS)
• jsf-api.jar
2. Actualización de ICEfaces jars
• icefaces.jar: 1.8 – 2.0
• icefaces-comps.jar -> icefaces-ace.jar, icefaces-compat.jar
• nueva librería independiente para AJAX Push: icepush.jar
3. Jars que ya no se necesitan
• backport-util-concurrent.jar
• commons-beanutils.jar
• commons-digester.jar
• commons-el.jar
• commons-fileupload.jar
• icefaces-facelets.jar
www.icefaces.org | www.mimacom.com
11. Actualizando de ICEfaces 1.8 a 2.0
Paso 2, editamos faces-config.xml…
1. Actualizamos la cabecera de faces-config.xml
• Antigua:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
• Nueva:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
www.icefaces.org | www.mimacom.com
12. Actualizando de ICEfaces 1.8 a 2.0
Paso 2, editamos faces-config.xml…
2. Eliminamos la declaración del Controlador de Vista
• Declaración antigua:
…
<view-handler>
com.icesoft.faces.facelets.D2DFaceletViewHandler
</view-handler>
…
www.icefaces.org | www.mimacom.com
13. Actualizando de ICEfaces 1.8 a 2.0
Paso 2, editamos faces-config.xml…
3. Cambiamos los ámbitos de beans:
• El ámbito request ICEfaces se cambia por el nuevo ámbito View
• Ámbito antiguo:
... <managed-bean-scope>request</managed-bean-scope> ...
• Nuevo ámbito:
... <managed-bean-scope>view</managed-bean-scope> ...
www.icefaces.org | www.mimacom.com
14. Actualizando de ICEfaces 1.8 a 2.0
Paso 3, actualización de web.xml…
1. Eliminamos los Servlets y mapeos de ICEfaces 1.8:
• ICEfaces 2 se basa ahora en servlets estándar de JSF
• Servlets y mapeos antiguos:
<servlet>
<servlet-name>Persistent Faces Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
…
</servlet-mapping>
<servlet>
<servlet-name>Blocking Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Blocking Servlet</servlet-name>
<url-pattern>/block/*</url-pattern>
</servlet-mapping>
www.icefaces.org | www.mimacom.com
15. Actualizando de ICEfaces 1.8 a 2.0
Paso 3, actualización de web.xml…
2. También eliminamos el listener ContextEventRepeater
<listener>
<listener-class>com.icesoft.faces.util.event.servlet.ContextEventRepeater</listener-class>
</listener>
3. Añadimos el servlet ICEfaces Compat Resources:
• Nuevo servlet y mapeo:
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.CompatResourceServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/xmlhttp/*</url-pattern>
</servlet-mapping>
www.icefaces.org | www.mimacom.com
16. Actualizando de ICEfaces 1.8 a 2.0
Paso 3, actualización de web.xml…
3. Nos aseguramos que disponemos del Faces Servlet y mapeos:
• Servlet y mapeos:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/icefaces/*</url-pattern>
</servlet-mapping>
www.icefaces.org | www.mimacom.com
17. Actualizando de ICEfaces 1.8 a 2.0
Paso 3, actualización de web.xml…
3. Cambiamos los parámetros de contexto:
Parámetros antiguos Nuevos parámetros Valores
Por defecto
Antiguo por defecto
facelets.LIBRARIES javax.faces.FACELETS_LIBRARIES
n/a javax.faces.VALIDATE_EMPTY_FIELDS true/false
javax.faces.STATE_SAVING_METHOD Sin cambios server/client
javax.faces.CONFIG_FILES Sin cambios
javax.faces.DEFAULT_SUFFIX Sin cambios *.jsp -> *.xhtml
www.icefaces.org | www.mimacom.com
18. Actualizando de ICEfaces 1.8 a 2.0
Paso 4, actualizamos index.jsp
Cambiamos la extensión *.iface por *.jsf
<jsp:forward page="applicantForm.jsf" />
www.icefaces.org | www.mimacom.com
19. Actualizando de ICEfaces 1.8 a 2.0
Paso 4, actualizamos los archivos xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:icecore="http://www.icefaces.org/icefaces/core"
xmlns:ace="http://www.icefaces.org/icefaces/components"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<h:head>
<title>Job Application</title>
<ice:outputStyle href="./xmlhttp/css/xp/xp.css" />
</h:head>
<h:body>
…
</h:body>
</html>
www.icefaces.org | www.mimacom.com
20. Actualizando de ICEfaces 1.8 a 2.0
Paso 4, actualizamos los archivos xhtml
Reemplazamos la <ice:outputDeclaration> por:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
www.icefaces.org | www.mimacom.com
21. Actualizando de ICEfaces 1.8 a 2.0
Paso 5, cambiamos los componentes que se actualizan
<ice:inputFile> se cambia por <ace:fileEntry>
<ace:fileEntry id="resume"
label="File Upload"
relativePath="uploaded"
fileEntryListener="#{resumeUploader.actionListener}"/>
<h:commandButton id="fileUploadButton" value="Upload"/>
<tr>
<td><ice:outputProgress value="#{resumeUploader.fileProgress}"
labelComplete="#{resumeUploader.currentFile.fileName}" /></td>
</tr>
Eliminamos el servlet de subida de ficheros antiguo
<servlet>
<servlet-name>uploadServlet</servlet-name>
<servlet-class>com.icesoft.faces.component.inputfile.FileUploadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
<url-pattern>/uploadHtml</url-pattern>
</servlet-mapping>
www.icefaces.org | www.mimacom.com
22. Actualizando de ICEfaces 1.8 a 2.0
Paso 5, cambiamos los componentes que se actualizan
Actualizamos el bean FileUploader
package training.jobapplication.bean.util;
import org.icefaces.component.fileentry.FileEntry;
import org.icefaces.component.fileentry.FileEntryEvent;
import org.icefaces.component.fileentry.FileEntryResults;
public class FileUploader {
private FileEntryResults.FileInfo currentFile;
public FileEntryResults.FileInfo getCurrentFile() {
return currentFile;
}
public void actionListener(FileEntryEvent event) {
FileEntry fileEntry = (FileEntry) event.getSource();
FileEntryResults results = fileEntry.getResults();
for (FileEntryResults.FileInfo fileInfo : results.getFiles()) {
if (fileInfo.isSaved()) {
currentFile = fileInfo;
}
}
}
}
www.icefaces.org | www.mimacom.com
23. Actualizando de ICEfaces 1.8 a 2.0
Paso 6, actualización de APIs de Ajax Push
Llamadas de Ajax Push que se actualizan
RenderManager
OnDemandRenderer
IntervalRenderer
DelayedRenderer
PushRenderer.addCurrentView();
PushRenderer.addCurrentSession();
PushRenderer.render(String);
www.icefaces.org | www.mimacom.com
24. Actualizando de ICEfaces 1.8 a 2.0
Paso 6, actualizamos reglas de navegación de JSF 2
Las reglas ya no se necesitan en faces-config.xml
<navigation-rule>
<from-view-id>/applicantForm.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/thankYou.iface</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/noThanks.iface</to-view-id>
</navigation-case>
</navigation-rule>
public String submit() {
return "thankYou?faces-redirect=true";
}
Actualizamos las navegaciones en las páginas .xhtml.
www.icefaces.org | www.mimacom.com
25. Actualizando de ICEfaces 1.8 a 2.0
Paso 7, cambiamos Partial Submit por Single Submit
Partial Submit todavía funciona pero Single Submit es más eficiente
<h:form id="applicantForm">
<icecore:singleSubmit/>
www.icefaces.org | www.mimacom.com
33. 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
www.icefaces.org | www.mimacom.com