16 junio 2010

Deploy en GlassFish v3: Web Applications de Grails 1.1.1 y 1.3.1

GlassFish una excelente opción de código abierto: Deploy
Después de un rato de frustración por errores de configuración por fin logre desplegar más de 1 aplicación Web desarrolladas en Grails y con distintas versiones del framework (1.1.1 y 1.3.1). Para empezar hay dos forma de hacer un deploy en GlassFish, una en consola del SO y la otra con la consola de administración de GlassFish (Administration console). Yo uso la segunda opción por que es más fácil memorizar pantallas que comandos, pero no es bueno no tomar en cuenta lo poderosa que puede ser una consola en tareas administrativas con un grado mayor de complejidad.
Una vez que ya se haya instalado el GlassFish correctamente para hacer un deploy de forma rápida tenemos que ir a la sección de Applications en donde encontraremos un pequeño administrador para hacer deploy.
Pantalla 1 .- Consola de Administración de GlassFish en la sección de Applications

Al dar clic al botón deploy aparecerá un formulario donde tendremos que buscar en nuestro equipo el WAR que vamos a desplegar, el tipo de objeto que será desplegado, el nombre con que será llamado e identificado ,el servidor virtual donde se alojará, entre otras. Antes de querer desplegar una aplicación con Grails recomiendo descargar este HelloWorld y subirlo a GlassFish para estar seguros de que GlassFish está funcionando correctamente.
Pantalla 2.- Formulario para subir y desplegar un aplicación en GlassFish

 Al finalizar el deploy corremos la aplicación entrando a http://localhost/helloWorld o con la liga de Launch en la sección en donde empezamos (Applications).

Desplegar una aplicación Grails versión 1.1.1
Este escenario no necesita una configuración especial, sólo hay que seguir el proceso normal de deploy y no es obligatorio crear un WAR sin JARS (grails war --nojars). A diferencia de Tomcat, GlassFish si te permite montar varias Grails app con todos sus JARS pero el problema comienza cuando tienes aplicaciones con versión 1.2.2 a 1.3.1, hasta ahora con estás he tenido problemas; por lo general el mensaje de error es similar a esto: 
An error has occurred
There is no installed container capable of handling this application
com.sun.enterprise.deploy.shared.FileArchive@1e46947
Desplegar una aplicación Grails versión 1.3.1
El caso de aplicaciones de versión 1.3.1 es especial por que el archivo MANIFEST.MF que se genera en el WAR crea conflictos en el proceso de deploy que usa GlassFish. La solución o Workaround no está del lado de GlassFish sino en la cancha del core de Grails, por tanto tendremos que modificar un archivo de nombre _GrailsWar.groovy que se encuentra en /tu_grails_folder/scripts que es el script que se encarga de la construcción del WAR. Lo que hay que hacer es buscar las siguiente líneas y comentarlas:

 // OSGi bundle headers
attribute(name:"Bundle-ManifestVersion",value:"2") // <-- Está se comenta
attribute(name:"Bundle-Name",value:"${grailsAppName}") // <-- Está se comenta
attribute(name:"Bundle-SymbolicName",value:"${grailsAppName}") // <-- Está se comenta

 Entonces ahora cuando se construya un WAR con versión 1.3.1 el archivo MANIFEST.MF no tendrá los elementos que le crean conflictos al GlassFish. Ahora si, al hacer el WAR y desplegarlo en GlassFish no mostrará ningún mensaje de error y como dije esto es un WorkAround y es posible que pronto haya una mejor solución para esto.
Espero que esto le sea de utilidad y las fuentes del siguiente artículo son las siguientes:
Gails 1.2.2 and GlassFish

Update: La modificación del _GrailsWar.groovy funciona también para las versión 1.3.2 y 1.3.3 de Grails

08 junio 2010

Una semana con muchas manzanas : iTertulia Express 3 y 4

¿Por que además de publicar en iTertulia lo hago en mi blog personal?, buena pregunta ... y creo que lo hago para dar a conocer a la gente que lee mi blog que también hago un podcast y quizás a futuro haga otro por mi cuenta que hable de Anime e informática, y eso si será un reto.
Es raro cuando creamos una entrada de iTertulia con Express, pero está vez se juntaron lo que consideramos dos muy buenos express con el fin de la temporada 1 de iTertulia que da paso al primer aniversario y al inicio obviamente de una nueva temporada. Para no hacer tan largo el post y con el deseo que se descarguen los podcast para digerirlos lo más pronto posible les dejo a continuación las ligas esperando que sea de su agrado nuestro nuevo material:


Descarga Podcast Express 3 - Conferencia D8, Computex y las tablets

Descarga Podcast Express 4 - iPhone 4G ¿Lo quieres?

Si gustán pueden dejarnos comentario o bien seguirnos en Twitter a la cuenta de @itertulia o a las cuentas de los podcasters (que bonito se oye): @sauljetsmi y @itcollaborative