Grails and Vaadin

November 23, 2009

Vaadin es un exelente framework para hacer aplicaciones web, a mi particularmente me gustó porque tiene una forma de programar muy similar a Swing. Me encontré con algunos inconvenientes para dejarlo funcionando, así que aquí voy a documentar un poco mi experiencia:

Después de pelearme un poco para integrar grails con vaadin, decidí empezar por un ejemplo simple con Vaadin: http://vaadin.com/tutorial
Aquí empezaron los problemas, pero también pude encontrar las soluciones. En primer lugar, en el ejemplo (http://dev.vaadin.com/svn/incubator/SimpleAddressBook) se ve que en el web.xml el servlet-mapping define la url como /* y esto es muy importante para que funcione la aplicación. Yo traté de cambiarlo por /HelloWorld y no funcionaba... Pero encontré la solución (si bien todavía no se el porqué real).
El url pattern debe terminar con /, es decir, para lo que quería hacer debería quedar como /HelloWorld/ y además hay que agregar un mapping al mismo servlet que mapee /VAADIN/*. Dicho esto, la parte del web.xml que define los servlets mappings quedaría:

  
HelloWorld  
/HelloWorld/*  
  
  
  
HelloWorld  
/VAADIN/*  
  

Ahora si, de vuelta a grails... creé una aplicación:
grails create-app test
Luego para poder editar el web.xml (que por defecto no aparece en la aplicación):
grails install-templates
Luego edité el web.xml como en el ejemplo.
Agregué el jar de vaadin a la carpeta lib
Agregué el código de mi aplicación vaadin en src/java

Todo parecía que iba a marchar bien, pero luego de ejecutar grails run-app y al acceder a la aplicación de ejemplo, ocurría un error al tratar de cargar la clase que yo había agregado al src/java. Sin entender por qué, compilé mi aplicación en un jar y lo agregué en la carpeta lib... Y ahora si estaba funcionando!
Luego hice lo siguiente: borré el jar que había creado y generé el war de la aplicación con grails war y esta vez si me compiló la clase que había agregado y pude deployar el war en un tomcat 6 y vi funcionando la aplicación.
Otra opción que encontré que funciona es ejecutar grails run-war en vez de grails run-app. Esto también compila la carpeta src y anda.

En resumidas cuentas, parece que al ejecutar run-app no se compilan los fuentes que están en src/java. Todavía no pude encontrar una explicación o motivo... seguramente alguna configuración que no modifiqué...

Todavía queda pendiente ver como acceder los scaffolding de grails desde vaadin y obtener en poco tiempo una aplicación con una linda interfaz y generada rápidamente con grails


Profile picture

Written by Gastón Fournier Software Engineer at @getunleash working from Cunit, Tarragona, Spain, where I live with my wife and 2 dogs. Find me on Twitter Github LinkedIn