将Grails与现有Web应用程序集成

时间:2012-05-04 18:51:42

标签: tomcat grails tapestry

我们有一个庞大,笨拙但相当稳定的Web应用程序,用Tapestry 4.1编写,我们正在寻求逐步迁移。为此,我们正在考虑在Grails中开发一些新功能。我们的客户永远不应该知道差异,如果可能的话,内部没有人,例如在安装服务中,应该关心 - 理想情况下,Grails应用程序将与现有的Tapestry代码在同一个WAR中,只需为GrailsDispatcherServlet配置更具体的路径。对于现有应用程序的怪物构建过程的最小变化也是至关重要的 - 在Gant和Ivy中重建构建系统(当前Ant,过渡到Maven)并不是一个问题。选项。如果我们能够在开发过程中使用爆炸的WAR进行实时重新加载,那将是很好的。

问题,然后:

  • 这可能吗?
  • 如果是,我从哪里开始?
  • 如果没有,那么下一个最佳方法是什么?
  • 我需要注意什么?

注意我们不会使用GORM的方式;我们所有的数据都来自Web服务,我们已经拥有了Java域和消息传递层。

2 个答案:

答案 0 :(得分:2)

好消息:是的,有可能。

坏消息:它有点毛茸茸。

至少有两种方式:

  1. 根据Dylan的建议,修改Grails构建以适应您现有的应用程序,并进行一些调整。
  2. 创建另一个Ant目标,它将现有WAR文件与Grails生成的WAR文件组合在一起。
  3. 第一个选项,修改Grails构建。风险是当Grails更新版本时,定制和调整的Grails构建可能会失败,并且你将不会在这里或那里结束。修复此问题需要深入了解框架如何生成构建。由于这是您最初遇到新框架,可能学习曲线太陡了。

    我更喜欢第二种,因为你不需要搞砸Grails构建。您需要了解底层,web.xml配置的工作原理。我假设您已经掌握了这些知识,因为您已经拥有自己的Ant构建。可能这是阻力最小的路径。

    第二种方法的缺点是在开发过程中很难发生爆炸性的WAR。但是如果您可以将旧应用程序和新应用程序分开而无需在开发期间对它们进行一起测试,那么您将在使用其轻量级开发服务器在Grails中进行开发时享受愉快的时间。

    下一步将逐步使旧的应用程序能够在Grails下运行,因为Grails会调用Java组件。

答案 1 :(得分:1)

您可以通过运行grails install-templates命令编辑web.xml的模板以更改servlet映射

您可以使用Ant & Maven(或Gradle)构建Grails应用程序,但由于这不是“标准”方法,我的经验是可能需要进行一些小的调整。我使用了Ant集成(使用ivy作为依赖项)来构建和使用Gradle来包装Ant并修改构建以满足特殊要求。

您可能遇到的问题是Gant脚本是Grails的核心,并且很多事情发生在这些脚本中(取决于您使用的插件),这可能会导致尝试将两个版本合并在一起时出现问题,因为脚本未写入记住你的用例。