Ir al contenido principal

Trabajando con Icefaces 2.X


Algo muy útil si habias trabajado con versiones de icefaces anteriores: Guía de migración de la versión 1.8 a 2.x

Error:
GRAVE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase com.sun.faces.config.ConfigureListener
java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: Parece que la versión JSP del contenedor es más antigua que la 2.1 y no se puede ubicar la fábrica de expresiones EL RI, com.sun.el.ExpressionFactoryImpl.  Si no utiliza JSP o EL RI, asegúrese de que el parámetro de inicialización de contexto, com.sun.faces.expressionFactory, esté definido correctamente.

Solución: Incluir en el class_path de la aplicación y dentro del servidor las siguientes librerías: el-impl-2.2.0-SNAPSHOT.jar y el-api-2.2.0-SNAPSHOT.jar. Estas librerías extrañamente no vienen incluidas en el bundle de icefaces.

Error:
El Backing Bean se crea cada vez que se realiza un request aunque está marcado con @ViewScoped

Solución: Agregar al web.xml
<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
</context-param> 

Error:
OutputChart no se muestra

Solucion:
Este problema también afecta a DataExporter cuando se está migrando a Icefaces 2.0 y para corregirlo debemos agregar en el web.xml lo siguiente:

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/icefaces/*</url-pattern>
</servlet-mapping>

Conforme el proyecto ha ido creciendo he notado mas el siguiente problema:

Error: java.lang.OutOfMemoryError: PermGen

Solución:

-XX:PermSize=64M -XX:MaxPermSize=512M -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

Primeramente detener el servicio de tomcat, luego ir al directorio Tomcat/bin y ejecutar tomcat6w. En la pestaña "Java", agregar los argumentos al cuadro "Java Options". Click en OK y reiniciar el servicio. Aclarar que el numero en -Xms64m y -Xmx512m varia según los recursos de la máquina servidor, en mi caso para una máquina de 4Gb en Ram, anduvo bien.


En mi caso como estoy corriendo el tomcat7 y sin ser un servicio de windows, me manda el siguiente mensaje de error: El servicio especificado no existe como servicio instalado. Unable to open the service 'tomcat7'. Así que para hacer uso de esta opción modifiqué las propiedades de lanzamiento del servidor desde eclipse. Esto se encuentra en la pestaña "Server" luego dar doble click en el servidor instalado y buscar la opción(enlace) "Open Launch Configuration", esta nos abrirá un diálogo con las opciones correspondiente y luego seleccionaremos la pestaña "Arguments", escribiremos dentro del cuadro "VM arguments", como se muestra en la siguiente imagen:



Otros comentarios:
Si por alguna razon el componente no está mandando el valor a su respectivo bean, es recomendable asegurarse de que los componentes tengan un atributo "id" y que el valor de este sea distinto al de cualquier otro componente.

Enlaces útiles:
http://facestutorials.icefaces.org/tutorial/
http://comp-suite.icefaces.org/comp-suite/showcase.jsf
http://www.icefaces.org/main/resources/tutorials.iface
http://www.icefaces.org/main/resources/documentation.iface

Entradas populares de este blog

Enumerar filas en una consulta con MySQL

Supongamos que tenemos tablas con la estructura siguiente:
documentos (iddocumento, nombre_documento, url_original, idtipo_documento, idproyecto) proyectos (idproyecto, nombre_proyecto, longitud, unidad_medida) tipo_documentos (idtipo_documento, descripcion_tipo_documento) Tenemos necesidad de hacer una consulta como la siguiente: "Enumerar todos los documentos en la base de datos agrupados por proyecto"

Parece fácil, excepto por el término "enumerar", aquí tienes un truquito para que logres enumerar tus consultas:
SELECT (@rownum:=@rownum+1) AS rownum, nombre_documento, descripcion_tipo_documento, nombre_proyecto FROM (SELECT @rownum:=0) r, documentos AS d INNER JOIN proyectos AS p ON d.idproyecto = p.idproyecto INNER JOIN tipo_documentos AS td ON d.idtipo_documento = td.idtipo_documentoPero que tal si te piden que enumeres los proyectos con sus correspondientes documentos?. Teniendo lo anterior es un poco mas sencillo
SELECT IF(@fila=proyectos.idproyecto, @rownum:…

Expresiones Regulares y pruebas en javascript

¿Qué es una expresión regular?
Una expresión regular es una cadena que contiene una combinación de caracteres normales y metacaracteres o metasecuencias especiales. Los caracteres normales coinciden por ellos mismos. Los metacaracteres y metasecuencias son caracteres o secuencias de caracteres que representan ideas como cantidad, posiciones o tipos de caracteres.
Regular Expression Pocket Reference 2nd Ed - Tony Stubblebine - O'Reilly

¿Para qué son útiles las expresiones regulares?
Las expresiones son especialmente útiles para validar información, por ejemplo en formularios de ingreso de datos. Por ejemplo para validar que se ingresó un número de teléfono, puedes usar la siguiente expresión regular.

/^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})?$/

Parecieran símbolos al azar, pero nada mas lejos de la realidad. Te muestro una tabla básica con los elementos usados para crear expresiones regulares.

Carácter Texto buscado ^Principio de entrada o línea.$Fin de e…

Como implementar SCRUM en 10 pasos fáciles - Paso #1: Ordena tu "Pila del Producto"

Esta es la continuación de la serie: Como implementar SCRUM en 10 pasos fáciles. Creación de Kelly Waters y traducida con la autorización correspondiente por su servidor.


La entrada original de este artículo es: Get your backlog in order

Ordena tu "Pila del Producto"
¿Así que quieres implementar Scrum?
¿Y te gusta la idea de hacerlo fácilmente?
Entonces escucha. Este es el paso 1 en mi serie: ¿Cómo implementar Scrum en 10 pasos fáciles.
Este no es solo el primer paso. Es el paso más importante.
A menos que puedas llevar a cabo este paso, no sigas. No lo saltes. Te prometo que te arrepentirás si lo haces. Incluso si no continuas, es probable que este paso te beneficie, a tu equipo y a tu organización.
Así que aquí está.
Primero, ¿dónde deberíamos empezar?
Alineación con el negocio
Primero, antes de nada, debes alinear tu equipo de desarrollo con el negocio.
Si eres parte de una unidad de negocio, eso puede ser natural y directo. Si estas en una organización central de desarrol…