简介: Grails 作为 Web 框架的新生力量,已经被越来越多的开发人员所接受。而 Google App Engine(以下简称 GAE)作为云计算的平台,为应用提供了广阔的扩展空间。如何将二者擦出绚丽的火花呢?本文将以一个应用为例介绍如何使用 Grails 开发 GAE 应用,以及其中的注意事项。
Grails 作为 Web 框架的新生力量,已经被越来越多的开发人员所接受。而 Google App Engine(以下简称 GAE)作为云计算的平台,为应用提供了广阔的扩展空间。如何将二者擦出绚丽的火花呢?
- 本文将借助 Grails 中支持 GAE 的插件 --Grails App Engine(以下简称 GAE 插件),使用 JPA 接口,以一个 ToDo 应用为例,讲述了如何使用 GAE 插件进行 GAE 程序的开发,以及在开发中的注意事项。
- 本文使用的环境:
- Grails 1.3 M1
- Google App Engine 1.3.1
- app-engine-0.8.10
- gorm-jpa-0.7.1
请先下载 GAE SDK for Java 以及 Grails 。 将下载的 zip 解压至适当的位置,并设置环境变量 APPENGINE_HOME 和 GRAILS_HOME。
使用 grails create-app AppName,创建 Grails 项目。
在你的项目中安装 GAE 插件:grails install-plugin app-engine,数据持久化选择 JPA。这个命令会进行如下工作:
- 卸载 Hibernate,Tomcat 插件;安装 gorm-jpa 插件。
- 安装 gorm-jpa 插件。
- 在 AppName /grails-app/conf 下创建:
- datastore-indexes.xml:数据存储索引的相关配置,缺省是自动创建索引
- persistence.xml:持久化的配置
- 在 AppName /src/templates 下创建 artifacts、scaffolding、war 三个目录,分别存有 domain class、controller/views、web.xml 的模板文件。
- 创建 userhome/.grails/1.3.0.M1/projects/AppName/plugins/gorm-jpa-0.7.1/src /groovy/org/grails/jpa/JpaPluginSupport.groovy,这是 Plug 最为关键的类,它将 JPA 的相关操作进行了封装,Controller 中调用的方法都要通过这个类。
环境准备就绪后,执行 grails app-engine run,会创建如下内容:
- 将 GAE 的需要的 Jar 拷贝至 AppName / web-app / WEB-INF/lib 目录下;
- 在 AppName / web-app / WEB-INF 下创建 plugin 目录、grails.xml、applicationContext.xml、web.xml
GAE 插件提供的可用命令如下:
- 启动应用:grails app-engine run,以 debug 的模式启动本地应用
- 打包应用:grails app-engine package,打包本地程序
- 从 GAE 上取日志:grails app-engine logs --file=logs.txt --days=5,将最近 5 天的日志保存在 logs.txt 文件中
- 更新 GAE 上的索引:grails app-engine update_indexes
- 回滚 GAE 的上一次更新:grails app-engine rollback
为了便于讲解 GAE 插件,本文将借助一个工作任务应用(ToDo)。ToDo 是一个工作任务列表。其中 Domain Class 为:User,UserProfile,Task,Category。它们之间的关系如下:
更多:http://www.ibm.com/developerworks/cn/opensource/os-cn-grailsgae/index.html