[譯] 第六天:在Java虛擬機上用Grails進行快速Web開發

前言

30天學習30種技術的第六天,我決定學習Grails Web應用開發框架.html

 

Grails是基於GroovyJava的開源Web開發框架。是對流行的Rails或者Django Web框架的JVM(Java虛擬機)響應,幫助開發者應對標準Jetty或者Tomcat服務器快速巧妙開發應用。這篇博客裏,咱們會講到用Grails Eclipse插件建立簡單的Web應用。java

爲何咱們要關注Grails?

考慮學習Grails的兩個緣由:git

  1. 快速web開發:有助於像Rails或者Django那樣幫助咱們高效開發,固然,要在掌握JVMJava的前提下。
  2. 成熟的技術支持:Grails底層用SpringHibernate構建,能夠當作是這些技術的糖衣語法。

前提準備

  1. 必要的Java基礎知識。
  2. 安裝最新的JDK, 能夠裝OpenJDK7Oracle JDK 7. OpenShift支持OpenJDK 67
  3. 官網下載最新的Eclipse包,目前最新的叫作Kepler.

安裝Eclipse很簡單,下載安裝包後解壓就好,在Linux或者Mac上,打開命令器,運行如下命令:web

$ tar -xzvf eclipse-jee-kepler-R-*.tar.gzsql

 

Windows上用Winzip或者7-zip解壓,解壓後,你會有一個eclipse文件夾,能夠爲可執行文件建個快捷方式。數據庫

安裝Grails

請參考Grails入門指南api

 

咱們這裏用的Grails版本是2.3.1. 運行grails -version 來檢查版本號。tomcat

$ grails -version
Grails version: 2.3.1

我第一運行的時候,提示一下信息。ruby

$ grails -version
Exception in thread "main" java.lang.NoClassDefFoundError:
org/codehaus/groovy/grails/cli/support/GrailsStarter

這個異常時由於我機器上已經安裝了舊版本的Grails. Mac上,到/usr/local/bin路徑,你可能發現另一個安裝版本。我以前可能無心間用brew 安裝了Grails, 如今先卸載掉。服務器

brew uninstall grails

第一步:安裝Eclipse Grails插件

Java EE解壓Eclipse Kpler IDE後,打開Eclipse,找到項目位置。打開Help>Eclipse Marketplace, 而後搜索Grails.安裝 "Groovy/Grails Tool Suite(GGTS) for Eclipse Kepler(4.3)". 安裝完後重啓Eclipse.

第二步:新建Grails項目

這裏咱們建一個簡單的連接分享應用。用戶能夠先註冊而後提交連接。

 

新建Grails 項目步驟File>New>Grails Project,輸入詳細信息,命名爲linkbin. 

 

第一次建立Grails項目須要配置安裝信息,點擊"Configure Grails Installations" 而後添加新的安裝。

 

也能夠給項目指定不一樣路徑,點擊"Finish" 按鈕。

 

Eclipse會問你是否要打開"Grails perspective", 點擊 Yes. 項目就建立好並導入到Eclipse了。

第三步:建立領域模型

程序的領域模型很是簡單。兩個實體:UserStory.

 

User包含兩塊:emailfullName. 咱們在Email上添加了not blank, emailunique約束。email約束確保郵件格式驗證。fullNamenot blanksize約束。size約束是用groovy Range 限制集合,數字,或者字符長度的大小。要新建domain類,右擊domain,選擇New>Domain Class.

 

建立User 域類,用如下代碼替換User域類代碼。

package linkbin
 
class User {
    String email
    String fullName
    static constraints = {
        email unique:true , blank : false , email:true
        fullName size:5..100  , blank : false
    }

}

 

Story 實體包含三塊:link, description submittedOn. Link 和用戶要提交的Web url相關。 Description submittedOnlink 和提交日期的補充文本。咱們爲link escription添加了not blank約束,uniqueurl約束也加到了link裏。

package linkbin
 
class Story {
    String link
    String description
    Date submittedOn
 
    static constraints = {
        link url : true , blank : false ,unique : true 
        description size : 10..1000 , blank : false 
    }
}

 

如今給User Story添加關聯。用戶能夠提交不少故事,故事屬於用戶,關係以下:

package linkbin
class User {
    String email
    String fullName
    static hasMany = [stories : Story]
    static constraints = {
        email unique:true , blank : false , email:true
        fullName size:5..100  , blank : false
    }
    static mapping = {
        table 'users'
    }
}

一個故事屬於一個用戶。

package linkbin
class Story {
    String link
    String description
    Date submittedOn  
    static belongsTo = [user : User]
    static constraints = {
        link url : true , blank : false ,unique : true 
        description size : 10..1000 , blank : false 
    }
    static mapping = {
        table 'stories'
    }

}

第四步:域類的Scaffold控制器和視圖

Grails從域類生成控制器和視圖很簡單。要爲User域類生成控制器和視圖,打開"Grails Command Wizard ".

它會在能看到全部Grails 命令的地方打開命令窗口,用generate-all命令生成控制器和視圖。

 

而後它會要求輸入域類的名字,輸入 linkbin.User 而後點擊"Finish"按鈕。

 

一樣的,給Story域類生成控制器和視圖。

 

Generate-all命令爲全部實體生成CRUD控制器和視圖。

第五步:運行程序

全部的Grails項目都嵌入到支持運行嵌入式的tomcat服務器上。在本地運行程序,右擊,選擇"Run as grails app".

 

這回啓動一個嵌入式tomcat servlet容器,能夠在控制檯看到如下日誌。

| Loading Grails 2.3.1
| Configuring classpath.
| Environment set to development.....
| Packaging Grails application.....
| Running Grails application
| Server running. Browse to http://localhost:8080/linkbin

第六步:發佈到雲上

Grails 程序打包成WAR格式。OpenShift是一個公開的可擴展的開源平臺。若是你用Java, Python, Node.js或者PHP, 你應該看看OpenShift. OpenShift做爲公共平臺服務,你能夠在上面免費發佈應用。

OpenShift上發佈應用以前,先作如下步驟:

  1. OpenShift      Account上註冊。 OpenShift徹底免費,紅帽給每一個用戶免費提供了3個Gears來運行程序。目前,這個資源分配合計有每人1.5GB內存,3GB磁盤空間。
  2. 在本機安裝rhc 客戶端工具,rhc是ruby gem包,因此你須要安裝1.8.7或以上版本的ruby。安裝rhc,輸入 
sudo gem install rhc

         要更新rhc,輸入

sudo gem update rhc

        想了解rhc command-line 工具,更多幫助參考https://openshift.redhat.com/community/developers/rhc-client-tools-install

  1. 用rhc 安裝命令安裝OpenShift. 執行命令能夠幫你建立空間,上傳ssh 密鑰到OpenShift服務器。

OpenShift也有eclipse插件,只是這裏咱們用OpenShift rhc命令工具。 

 

安裝以後,咱們能夠運行如下命令來建立程序。

$ rhc create-app linkbin tomcat-7 postgresql-9.2

 

這會建立一個程序容器,叫gear,安裝所需的SELinux策略和cgroup配置。OpenShift也會爲你安裝一個私有的git倉庫,並克隆到本地。最後,OpenShift會把DNS 擴散到網絡中。程序可訪問http://linkbin-domain-name.rhcloud.com/.替換你本身惟一的OpenShift域名(有時也叫命名空間) 

 

咱們要發佈WAR文件,因此須要把OpenShift上默認的文件刪除。

$ git rm -rf src/ pom.xml
$ git commit -am "deleted default source code"

 

Eclipse, postgresql更換datasource配置。 Grails在conf/Datasource.groovy維護全部數據庫配置。用PostgreSQL設置更新產品信息。

production {
    dataSource {
        dbCreate = "update"
        driverClassName = "org.postgresql.Driver"
        dialect = org.hibernate.dialect.PostgreSQLDialect   
    uri = new URI(System.env.OPENSHIFT_POSTGRESQL_DB_URL)
    url = "jdbc:postgresql://"+uri.host+uri.path+"/"+System.env.OPENSHIFT_APP_NAME
        username = System.env.OPENSHIFT_POSTGRESQL_DB_USERNAME
        password = System.env.OPENSHIFT_POSTGRESQL_DB_PASSWORD
    }

}

 

如今把全部Grails程序打包成WAR文件,使用Grails WAR 命令。打開"Grails Command Wizard",使用WAR 命令,它會要求輸入文件名,取名target/ROOT.war,會在目標文件夾生成 ROOT.war,複製ROOT.war到你的OpenShift linkbin程序的webapps文件夾。 

 

如今添加wargit倉庫,發佈。

$ git add .
$ git commit -am "linkbin app deployed to cloud"
$ git push

 

代碼發佈後WAR就成功部署了,能夠在http://linkbin-{domain-name}.rhcloud.com看到程序。 

 

做爲程序結果演示,能夠到http://linkbin-shekhargulati.rhcloud.com

 

這是今天的內容. 但願對你有用,繼續給意見和建議吧。

 

原文:https://www.openshift.com/blogs/day-6-rapid-web-development-on-the-jvm-with-grails

相關文章
相關標籤/搜索