2012-05-04 11 views
6

Tenemos una aplicación web grande, poco manejable pero bastante estable, escrita con Tapestry 4.1, de la cual estamos tratando de movernos gradualmente. Para ese fin, estamos buscando desarrollar algunas nuevas funcionalidades en Grails. Nuestros clientes nunca deben saber la diferencia, y si es posible, nadie internamente, p. Ej. en los servicios de instalación, debería tener que importar cualquiera; idealmente, la aplicación Grails estaría en la misma WAR que el código Tapestry existente, solo con GrailsDispatcherServlet configurado para una ruta más específica. También es crucial que exista el mínimo de cambio en el proceso de creación de monstruos para la aplicación existente: rehacer el sistema de compilación (actualmente Ant, la transición a Maven) en Gant e Ivy no es una opción. Y sería bueno si pudiéramos trabajar con WARs explotados para recarga en vivo durante el desarrollo.Integración de Grails con la aplicación web existente

preguntas, entonces:

  • es esto posible?
  • Si es así, ¿dónde empiezo?
  • Si no, ¿cuál es el siguiente mejor enfoque?
  • ¿De qué tengo que estar pendiente?

Tenga en cuenta que no vamos a utilizar GORM; todos nuestros datos provienen de servicios web, para los que ya tenemos capas de mensajería y dominio Java.

+0

¿Utiliza hibernación para datos persistentes o utiliza otra cosa? – allthenutsandbolts

+0

solo algunas consideraciones: ¿qué hay de crear la aplicación Grails por separado, y luego agrupar la guerra de la aplicación Grails con la guerra de la aplicación original, como un archivo .ear? De esta forma, puede mantener su compilación original, mantener los griales trabajando de la manera en que debería hacerlo, y solo agregar el paso adicional al final para compilar el archivo .ear. Las grandes preguntas serían cuál es el nivel de integración entre los dos, cuáles son los puntos de integración y cómo sacar la reescritura de url adecuada para que parezca perfecta. – GreyBeardedGeek

+0

Aparte del hecho de que estarías usando Java en lugar de Groovy, parece que es mejor si utilizas Spring MVC (un componente principal de Grails). –

Respuesta

1

Puede editar la plantilla para el web.xml para cambiar las asignaciones de servlets mediante la ejecución de los griales instalar-plantillas de comando

Usted puede utilizar Ant & Maven (o Gradle) para construir una aplicación Grails pero ya no es el " "método estándar" mi experiencia ha sido que algunos ajustes menores pueden ser necesarios. He utilizado la integración Ant (que usa ivy para dependencias) para construir y usar Gradle para envolver Ant y modificar la compilación para requisitos especiales.

El problema con el que se puede encontrar es que las secuencias de comandos de Gant son fundamentales para Grails y muchas cosas suceden en esas secuencias de comandos (dependiendo de los complementos que use) que pueden causar problemas al fusionar las dos compilaciones ya que las secuencias de comandos no escrito con su caso de uso en mente.

2

Buenas noticias: Sí, es posible.

Malas noticias: Es un poco peludo.

Hay al menos 2 vías:

  1. Como sugiere Dylan, modifique los griales construyen para dar cabida a la aplicación existente, con algunas modificaciones.
  2. Crea otro objetivo Ant que combine el archivo WAR existente con el archivo WAR producido por Grails.

La primera opción, la modificación de la construcción de Grails. El riesgo es cuando la versión de actualización de Grails, la versión de Grails personalizada y modificada puede fallar, y no terminará ni aquí ni allá. Reparar esto requerirá un profundo conocimiento sobre cómo el marco genera la construcción. Como este es su encuentro inicial con un nuevo marco, probablemente la curva de aprendizaje será demasiado empinada.

Preferiría el segundo, ya que no necesita estropear la construcción de Grails. Necesita conocer el subyacente, cómo funciona la configuración de web.xml. Supongo que ya tienes este conocimiento ya que también tienes tu propia construcción Ant. Probablemente este sea el camino de menor resistencia.

La desventaja del segundo enfoque será difícil tener el WAR explosionado durante el desarrollo. Pero si puedes separar la aplicación anterior y la nueva sin necesidad de probarlas durante el desarrollo, pasarás un buen momento cuando desarrolles en Grails usando su servidor de desarrollo liviano.

El próximo paso será hacer que la aplicación antigua pueda ejecutarse bajo Grails como un componente Java invocado por Grails.

Cuestiones relacionadas