23 julio 2009

Problemas con el Deploy de una aplicación Grails en Tomcat 6 : Excepción al cargar el contexto

Estoy trabajando en un proyecto usando el Framework Grails y estamos usando en el equipo de desarrollo Tomcat 6 para Windows para desplegar el WAR y mostrar los avances al cliente. El ambiente de producción tendrá como manejador de BD al poderoso MySQL, pero para motivos de las demostraciones estamos usando Hypersonic por venir de ante mano con Grails y el bootStrap de la configuración de Grails para cargar los datos y poder hacer demostraciones o pruebas.

El problema
Al estar aún en proceso de desarrollo, existen a veces algunos cambios de parte del cliente, los cuales son bien recibidos, en ocasiones estos nuevos requerimientos obligan a hacer cambios en el modelo de datos y eso provoca errores al momento de que se desea hacer el despliegue de la aplicación en Tomcat. El tipo de error se localizó en el log que genera el tomcat y el cual puede localizarse en la carpeta /log, el cual dice lo siguiente:

GRAVE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener.

Causa
La causa es que al usar Hypersonic se crean algunos archivos , los cuales son necesarios para carga el contexto de la aplicación y uno en particular, con terminación script, contiene las sentencias SQL que traducen las entradas en el bootStrap definido en Grails para cargar valores de prueba, pero al parar el servidor o reiniciar el equipo, estos archivos permanecen ahí y si deseas hacer un nuevo deploy de tu aplicación con cambios en el modelo de datos, estos chocarán con el modelo previo que haya sido guardado en los archivos que inicialmente creo Hypersonic.

Los archivos creados por Hypersonic son: prodDb.lck, prodDb, prodDb.properties y prodDb.script

Solución
La mejor forma de evitar esto es que cada vez que se desee hacer un nuevo deploy se tenga en cuenta que es necesario borrar los antiguos archivos (prodDb.properties y prodDb.script) después de parar Tomcat, ya que si no se hace tendrás errores en el cargado del contexto de la aplicación, y a veces, registros duplicados.

Conclusión
No todos son errores de programación o configuración. En ocasiones los errores se encuentran en el contexto donde vive nuestra aplicación una vez desplegada, y muchas veces estos errores nos hacen perder horas valiosas que podrían ser dedicadas en preocuparnos más sobre los objetivos del desarrollo.

1 comentario:

  1. Muchas gracias por el aporte Saul, muy útil el aporte, me ayudo a solucionar mi problema: resulta que con el siguiente ambiente

    Grails: 2.2.2
    SO: Windows 7 x64
    Servidor: Apache Tomcat 7.0.42

    al generar el archivo war con el comando grails y desplegarlo por segunda vez en el servidor, se generaban errores en el inicio, relacionados con bootstrap creando entidades que ya existian, esos archivos que usted describe estan en el bin de mi apliacion, despues de eliminarlos funciono

    ResponderBorrar