【发布时间】:2012-05-14 08:02:52
【问题描述】:
我们有一个使用 Tapestry 4.1 编写的大型、笨重但相当稳定的 Web 应用程序,我们希望逐步摆脱它。为此,我们正在考虑在 Grails 中开发一些新功能。我们的客户永远不应该知道其中的区别,如果可能的话,内部也不会有人知道,例如在安装服务中,也应该关心——理想情况下,Grails 应用程序将与现有的 Tapestry 代码在同一个 WAR 中,只是将 GrailsDispatcherServlet 配置为更具体的路径。对现有应用程序的怪物构建过程进行最小的更改也是至关重要的——在 Gant 和 Ivy 中重做构建系统(目前是 Ant,正在过渡到 Maven)不是一种选择。如果我们可以在开发过程中使用爆炸的 WAR 进行实时重新加载,那就太好了。
问题,然后:
- 这可能吗?
- 如果是这样,我应该从哪里开始?
- 如果不是,那么下一个最佳方法是什么?
- 我需要注意什么?
注意我们不会使用 GORM;我们所有的数据都来自 Web 服务,我们已经拥有 Java 域和消息传递层。
【问题讨论】:
-
你是使用hibernate来持久化数据还是使用其他东西?
-
只是一些想法 - 如何单独创建 grails 应用程序,然后将 grails 应用程序的 war 与原始应用程序的 war 捆绑为一个 .ear 文件?这样,您可以保持您的原始构建,让 grails 按预期方式工作,并且只需在末尾添加额外的步骤来构建 .ear 文件。最大的问题是两者之间的集成程度如何,集成点是什么,以及如何进行适当的 url 重写以使其看起来无缝。
-
除了您将使用 Java 而不是 Groovy 之外,听起来您可能更适合使用 Spring MVC(Grails 的主要组件)。
-
@allthenutsandbolts 数据位于 Web 服务的另一端,碰巧确实使用 Hibernate 进行数据库访问,但也可以与其他更远的 Web 服务一起使用,并且由于历史原因,平坦文件(与旧版 C 应用程序共享)。
-
@GreyBeardedGeek 有趣的想法。我宁愿避免由于改变我们分发原始应用程序的方式而导致的构建/分发混乱(在构建文件和办公室政治中),但这可能最终成为我们必须走的路。