本样例程序是用Grails框架实现的一个宠物诊所的web应用。用户可以查看诊所内所有兽医的姓名和主治领域,可以注册一个宠物主人(Owner)并添加某一种类的宠物(Pet)、记录宠物病历(Visit)等。
程序repository地址:https://github.com/SpringSource/cloudfoundry-samples/tree/master/petclinic-grails
该程序的实现很简单,其中包含几个域类(domain class)用来描述兽医师、宠物主人、宠物、病历等实体对象,这些域类位于
grails-app / domain / org / grails / samples /
目录下;还包含三个controller来支持用户接口,位于
grails-app / controller/ org / grails / samples /
目录下。各个实体域类之间的继承和引用关系如下图所示:
宠物主人Owner类和兽医Vet类均继承自公共超类Person;一个Owner拥有多个宠物Pet,一个Pet又拥有一个宠物种类PetType和多条病历Visit;一个Vet拥有多个主治领域Speciality。
至于程序的其他部分,与一般的Grails程序并无太大差异,完全可以使用本地开发环境中的各种配置参数(如数据源的url、username、password等),Cloud Foundry的自动重新配置机制会做适当的处理,因为Grails程序是搭建在标准Spring框架之上的。唯独需要稍加注意的是应用程序构建的配置,即文件
grails-app / conf / BuildConfig.groovy :
dependencies {
runtime "hsqldb:hsqldb:1.8.0.10", "postgresql:postgresql:9.1-901-1.jdbc4"
}
plugins {
compile ":cloud-foundry:1.2.2",
":hibernate:$grailsVersion",
":webxml:1.4.1"
build ":tomcat:$grailsVersion"
}
注意其中引入了cloud foundry的扩展插件。
本文下面将重点介绍在Cloud Foundry部署一个Grails应用程序的过程。当然在此之前你需要安装好Grails。
首先安装Grails的CloudFoundry插件。此插件会为 Grails 增加一些命令(大多数都与VMC命令等效),使它能够方便地部署并管理你的应用程序。执行以下命令:
$ grails install-plugin cloud-foundry
安装完插件后,您可以使用以下命令查看可以使用哪些 CloudFoundry 命令:
$ grails cf-help
接下来,需要指定你在Cloud Foundry注册的用户名和密码。放置这些数据的最佳位置为 ~/.grails/settings.groovy 文件:
grails.plugin.cloudfoundry.username= "<yourusername>"
grails.plugin.cloudfoundry.password = "<yourpassword>"
最好将此文件设置为只有你能够读写。可执行以下命令确认此验证信息是否有效:
$ grails cf-info
一切就绪,接下来就可以使用以下命令开始部署你的应用程序了:
$ grails prod cf-push
此命令将首先询问你要使用什么 URL。只要应用程序的名称在 cloudfoundry.com 上是唯一的,就可以根据应用程序的名称,使用默认URL。而这里,由于本样例程序已在cloudfoundry.com 上部署过,需要输入另外一个唯一的名称,而不能接受默认 URL。也可在运行 cf-push 命令之前手动修改 application.properties 属性文件中的“app.name”字段。
接下来,在系统询问是否希望创建并绑定服务时选择与PostgreSQL服务绑定。之后,你将会看到应用程序已经完成部署并在 cloudfoundry.com 上启动了。
总结:本文介绍了如何安装Grails的Cloud Foundry插件并使用它向Cloud Foundry部署一个Grails应用程序。这里只介绍了几个最基本的grails cf 命令,关于此插件的更多具体细节和高级使用技巧,请参考Cloud Foundry官方中文文档、Grails插件用户指南和SpringSource社区博客。