我从grails邮件列表中收到了一些好的回复,结论与David的评论相同。请查看线程这里
以下是几个相关的回复:
来自Tomas Lin:
如果你真的想在App Engine上构建项目,我建议你去研究一下Gaelyk。它是从头开始以App Engine为目标引擎构建的,因此可以避免由于Spring和Hibernate导致的长时间加载问题。新引入的插件机制保证了您的Gaelyk应用程序可以在GAE上扩展并能够正常工作。
Gaelyk有自己的本地实体持久化DSL,比基于App Engine的JPA/JDO抽象更加简洁。
我目前在App Engine和Grails中看到了很多HardDeadlineExceeded异常。它现在并不适合与Spring很好地配合使用。希望随着Groovy、Grails和Spring / Google合作推出的后续版本的发布,这种情况会得到改善,但我不认为Grails在GAE上已经可以投入生产使用。
即使是在Gaelyk中,也有慢速性能的问题报告。因此,想象一下在更大的Grails堆栈中可能会出现的困难。
应用引擎自带基于GMail账户的用户/安全管理系统。如果您只想提供管理员/非管理员实现,则支持在应用程序配置中进行设置。无法评论Shiro。
请注意,App Engine的主要限制之一是无法编写文件,因此即使是Spring中的基本文件上传也会出现问题,因为默认机制会写入临时文件。我认为,大多数插件在不深入挖掘其代码并进行更改的情况下可能无法立即正常工作。
我认为这里最大的问题是缺乏对本地JDBC的支持。 JPA的支持不如纯JDBC GORM好,例如命名查询可能无法立即正常工作,需要进行改装。如果您想使用最新和最先进的Grails部分,考虑其他托管解决方案可能是值得的。
来自Aaron Eischeid
1. GAE插件和JPA-GORM插件组合起来不能无缝地获得所有GORM功能。尽管您应该获得基础功能,如.save()、.delete()和可能的.list(),但动态查找等等都将无法使用(至少目前是这样)。我可能完全错了,但我认为大部分/全部依赖Hibernate的功能都将无法使用或被替换为其他内容(因为它在底层依赖于SQL,而GAE目前没有基于SQL的数据库...),因此例如任何标准生成器都无法使用。对我来说不清楚您可以在对象上做多少点钻研。例如,不确定您是否可以执行以下操作:
def b = new Book()
def stores = b.authors.publishers.bookstores
需要一些指导的地方是如何在领域类中使用JPA。我相信有很好的信息可以找到,但我还没有找到。
不确定
包括领域类或操作当前领域类的grails插件,由于您必须以不同的方式构造领域类以与JPA兼容,因此可能会出现问题,这是必要的,因为Google Datastore并非像关系型数据库那样。另一方面,您可以使用Google内置的安全性,因此您不一定需要像Acegi或Shiro这样的插件。
这可能归结为您可以在控制器和服务中使用不同级别的GORM以及定义领域类的不同方法。除非JPA与SQL数据库一样与Googles Datastore兼容,否则某些重构似乎是不可避免的。如果JPA可以像这样移动,那么转移应该很容易,但是通过使用JPA-GORM,您放弃了一些您可能希望拥有的东西,如果您没有从GAE中受益,则可能不会受益。
渴望听取他人的意见,
Aaron