Primefaces: datatable editable no regresa el nuevo valor de la celda ni la rowkey en el evento CellEditEvent.

Antes que nada ¡Feliz año nuevo a todos! Que cumplan todas sus metas este año y en los venideros…

Ahora si, entremos en materia. Actualmente trabajo con la versión 5.3 de Primefaces y todo iba correctamente hasta que me topé con esta cuestión. El evento CellEditEvent no me regresaba valores en los métodos getNewValue y getRowKey. El primero se supone que me debería regresar el nuevo valor capturado en la celda y el segundo el valor único que identificaba a la fila (row) del DataTable sin embargo no era así. Así que me puse a buscar y las soluciones que daban, no funcionaban. Hasta que me puse a examinar minuciosamente los ejemplos del sitio de Primefaces (showcase) y compararlo con mi código y ahí resolví una de las incógnitas:

Mientras que el código de mi CDI bean obtenía los datos que llenaban la datatable de un método que hacía una consulta a la base de datos, en el ejemplo, la cargaban de una propiedad en el bean que era inicalizada previamente al construir el bean a través de un método etiquetado @PostConstruct; cabe aclarar que ambos bean tenian el alcance @ViewScoped. Así que procedí a agregar una propiedad en mi bean y el método que la inicializara con los datos de la base de datos  y agregar su respectivo getter y setter. ¡Vualá! El evento CellEditEvent me regresó el nuevo valor de la celda, sin embargo el valor RowKey de la fila donde se encontraba la celda editada seguía sin tener valor.  En los ejemplos no mostraban como obtener este dato, sólo mostraban como obtener el nuevo y antiguo valor.

Para resolver la segunda incógnita, volví a busca ahora algo de como obtener el RowKey en el evento pero no encontré mucha información, sin embargo en las páginas relacionaban mucho el RowKey con los métodos de selección  del DataTable así que le agregué la propiedad selectionMode=”single” a la datatable y ¡eureka! ¡el evento CellEditEvent me regresó el valor requerido!

En resumen, para solucionar el problema fue necesario agregar una propiedad local en el CDI bean que almacenara la lista de datos que llenarían el DataTable y en la definición de la datatable, en el archivo .xhtml, añadir y asignar “single” a la propiedad selectionMode.

Espero les sirva. ¡No se olviden de visitar a los patrocinadores!

java.lang.IllegalStateException: getOutputStream() has already been called for this response. Glassfish 4.1.1.

Desde hace un tiempo, utilizo Glassfish como servidor de aplicaciones en mis desarrollos web con Java. Sin embargo en el proyecto que actualmente trabajo, al descargar la última versión y querer añadir un nuevo pool de conexiones, la consola de administración gráfica de Glassfish 4.1.1 me arroja el siguiente error:

java.lang.IllegalStateException: getOutputStream() has already been called for this response.

Buscando la causa me encuentro que es un bug en esta nueva versión de Glassfish que aún no ha sido resuelto. Hay que recordar que Oracle dejó de dar soporte sobre este producto y por lo tanto, las correcciones de errores son más lentas que antes. En el misma dirección donde se reporta este bug se indica algunas soluciones.

Dentro de las soluciones, me enteré que existe una empresa que ha empezado otro desarrollo en base al código de Glassfish y realiza funciones de mantenimiento más prontas: Payara Server. Lo he descargado y funciona perfectamente hasta el momento. De ahora en adelante utilizaré este servidor de aplicaciones en futuros desarrollos.

¡Felices fiestas!

(Por favor visita a los patrocinadores).

 

Aplicación con Hibernate 5 no puede ser instalada en Glassfish 4.1.1.

No es posible hacer el deploy de una aplicación que contiene las librerías de Hibernate 5.0.3 a Glassfish 4.1.1. En ell archivo log manda el siguiente error grave:

El problema es la incompatibilidad de versiones de la librería jboss-logging.jar que usan dichas versiones de Hibernate y Glassfish. Reemplazando la librería jboss-logging.jar que se encuentra en glassfish/modules  con la librería versión 3.3.0 (jboss-logging-3.3.0.Final.jar) se soluciona el problema.

¡No olvides dar click en los anuncios!

¡Saludos!

 

Mensaje “Cannot run /usr/bin/firefox” en Netbeans 8.

Hola a todos nuevamente.

Me topé con este error al querer ejecutar una aplicación web con el IDE Netbeans 8 en Ubuntu 14.04.  Netbeans no podía abrir firefox para mostrar la aplicación, Chrome funcionaba perfectamente bien.

“Googleando” el problema no daba con la solución, hasta que encontré en el log de netbeans un error lanzado por el Java:

Si ejecutaba directamente el programa, éste respondía bien. Lo qué observé es que ese archivo no era en realidad un archivo, sino que un link que apuntaba al archivo /usr/lib/firefox/firefox.sh. Encontré el archivo ejecutable de firefox en esa misma carpeta, por lo que opté reemplazar la ruta de ese ejecutable en la ventana de administración de navegadores de netbeans como se muestra en la siguiente imagen:

Selección_409

Una vez cambiado el path del firefox y sus argumentos, la aplicación se abrió en farefox sin problemas.

(No olviden visitar los anuncios de los patrocinadores para seguir conservando este sitio).

¡Saludos!

 

 

Cómo construir una aplicacion web con OpenLayers 3 sin escribir código

Hola a todos los fanáticos de los SIG o GIS, aquí les dejo este interesante artículo en inglés que nos enseña cómo crear una aplicación con OpenLayers 3 sin escribir una sola línea de Código usando QGIS.
Espero y les guste: http://boundlessgeo.com/2015/06/building-openlayers-3-web-app-without-writing-code/

Obtener la fecha actual en java con la clase Calendar.

A partir de java 7 los métodos para obtener el día, mes y año de una fecha han quedado obsoletos o en desuso y podrán desaparecer en futuras versiones.

Lo que recomiendan es el uso de la clase Calendar para obtener estos datos. Enseguida un pequeño ejemplo de cómo obtener la fecha (“AAAA-MM-DD”) con la clase Calendar de java:

Observe el +1 al obtener el mes. Calendar.MONTH regresa el número de mes pero a partir de 0, por eso la necesidad de aumentar en uno para obtener el mes correctamente.

Espero y les sea útil. ¡Saludos!

Could not read from … because it is a not a file. Error al ejecutar transformación de Kettle (PDI).

Utilizo el ETL Kettle de Pentaho (PDI o Pentaho Data Integration) para realizar algunas transformaciones de datos desde hace tiempo. Recientemente actualicé a la versión 5.1 de éste excelente software.

He realizado un proyecto personalizado en java donde embebo las librerías de Kettle para realizar las transformaciones que necesitan mis usuarios. Sin embargo con esta nueva versión, al ejeutar una transformación después de la otra me arrojaba el mensaje:

Could not read from …. because it is a not a file. Error al ejecutar transformación de Kettle.

Al querer cargar la definición de una transformación desde un archivo que se encontraba dentro del jar de la distribución del programa, cuando con las versiones 4 anteriores no lo enviaba.

Al parecer es un problema con la librería commons-vfs-20100924-pentaho.jar que viene con esta versión. Para solucionar el problema, sustituya dicha libería vfs que se encuentra en la carpeta lib, dentro de la carpeta de instalación de Kettle, con esta otra.

Error solucionado.

¡Saludos!

 

¡Ups! Modifiqué archivos en un (no branch) en Git

Resulta que modifiqué archivos e hice commits en un submódulo de git y no me había percatado de que no estaba enlazado a ninguna rama (no branch).

Para no perder esos cambios hay que hacer lo siguiente dentro de la carpeta raíz del submódulo:

git show

El comando anterior mostrará algo como esto:

commit 330db217dffddaa07a0d8d107cbd650678f4c494
Author: …

Lo importante es la clave que se muestra en negrita, ya que la usaremos más adelante para hacer un merge. Una vez anotada la clave ejecutamos:

git checkout master

(En mi caso la rama principal se llama master, cambie el nombre si es necesario). Una vez cambiados a la rama deseada (en este caso master) ejecutamos el comando merge de la siguiente forma:

git merge 330db217dffddaa07a0d8d107cbd650678f4c494

Observe que utilizamos la clave que nos envió el comando show para hacer el merge y no un nombre de rama.

Una vez hecho esto, habremos actualizado nuestra rama master con la rama “(no branch)” y podemos seguir haciendo las modificaciones ya en la rama correcta (en este caso master).

¡Saludos!

 

Mensaje “Bad line length character”. Bonobo Git Server.

Inicié a probar el Servidor Git gratuito Bonobo en windows 7. Con la  instalación no hubo ningún problema, siguiendo las indicaciones que publican en su sitio.

Accedí a la página principal de Bonobo, di de alta usuarios y cree el repositorio. Hasta aquí todo bien. Sin embargo al dar el primer push de mi proyecto en una máquina cliente remota, con sistema operativo Linux, me envió los siguientes mensajes:

fatal: protocol error: bad line length character: <!DO
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly

El problema es que la aplicación por defecto sólo permite recibir una cadena de longitud pequeña y aborta. Para corregir eso nos vamos al archivo web.config que se encuentra en el directorio de instalación de Bonobo dentro del servidor IIS. Por defecto dicho archivo se encuentra en la siguiente ruta:

C:\inetpub\wwwroot\Bonobo.Git.Server

Para poder modificarlo recuerde arrancar el editor de texto de su preferencia como administrador. Encuentre y modifique la siguiente línea cambiando el valor como se indica:



<system.web>
<httpRuntime maxRequestLength=”2147483647” />
..
..
En el ejemplo anterior cambiamos el valor por defecto por una longitud máxima de 2147483647 bytes a la petición web.

Una vez modificado y guardado el archivo intenté nuevamente el push y ahora si funcionó sin problemas (no es necesario reiniciar el IIS).

Espero y le sea útil.

¡Saludos!

Multiples proyectos de Netbeans 8 en un sólo repositorio Git

Para los que son nuevos en GIT con Netbeans (como yo) y desean tener un sólo repositorio GIT para múltiples proyectos java en Netbeans 8 les dejo este artículo que encontré en la web  de cómo lograrlo.

Está en inglés y para quienes no conocen muy bien este idioma, trae imágenes que hacen  muy entendible el artículo.

Cualquier duda estoy  a sus órdenes.

¡Saludos!