译文

使用 GlassFish v3 Embedded 的 Grails 入门指导

翻译:cindy猫猫 | 2009-11-28 13:32:52 | 阅读350 | 来源

TOTD #75使用 GlassFish v3 Embedded Grails 入门指导


改变一下风格,这篇博客讨论的是现在已经存在一段时间的问题:)

基本上说,我想在计算机上安装一个用于 Grails GlassFish v3 Preludedemo 环境,于是决定记录下来整个过程的步骤。有关详细步骤说明,可在GlassFish/Grails Getting Started Wiki 上获得。

1.下载并解压缩 GlassFish v3 Prelude

2.运行 GlassFish Update Center 并安装 Grails 模块,如下所示:

~/demos/glassfishv3-prelude >./bin/updatetool

The software needed for this command (updatetool) is not installed.

If you choose to install Update Tool, your system will be automatically
configured to periodically check for software updates. If you would like
to configure the tool to not check for updates, you can override the
default behavior via the tool's Preferences facility.

When this tool interacts with package repositories, some system information
such as your system's IP address and operating system type and version
is sent to the repository server. For more information please see:

http://wiki.updatecenter.java.net/Wiki.jsp?page=UsageMetricsUC2

Once installation is complete you may re-run this command.

Would you like to install Update Tool now (y/n): y

Install image: /Users/arungupta/demos/glassfishv3-prelude/bin/..
Installing pkg packages.
Installing: [pkg:/pkg@1.0.7,0-15.1269:20081008T212532Z, pkg:/python2.4-minimal@2.4.5.0,0-15.1269:20081008T212544Z]
Installing updatetool packages.
Installing: [pkg:/updatetool@2.0.0,0-15.1269:20081008T212613Z, pkg:/wxpython2.8-minimal@2.8.8,0-15.1269:20081008T212630Z]
Registering notifier: Already registered.
Initialization complete.

Software successfully installed. You may now re-run this command (updatetool).

3.现在再次运行 Update Center 可查看如下所示截屏:


选择 "GlassFish support for Grails Framework",然后单击 "Install" 可本地安装该模块。这将会在GlassFish v3 Prelude 目录中建立一个新目录 "grails",然后将 Grails 1.0.4 安装在其中。

4.按照如下所示安装环境变量:

~/demos/glassfishv3-prelude/glassfish/grails >export GRAILS_HOME=~/demos/glassfishv3-prelude/glassfish/grails
~/demos/glassfishv3-prelude/glassfish/grails >export PATH=$GRAILS_HOME/bin:$PATH

 

5.创建应用程序模板:

~/demos/glassfishv3-prelude/glassfish/grails/samples >grails create-app bookstore

Welcome to Grails 1.0.4 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails

Base Directory: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples
Note: No plugin scripts found
Running script /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/scripts/CreateApp.groovy
Environment set to development
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/src
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/src/java
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/src/groovy
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/controllers
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/services
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/domain
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/taglib
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/utils
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/views
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/views/layouts
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/i18n
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/conf
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/test
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/test/unit
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/test/integration
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/scripts
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app/js
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app/css
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app/images
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app/META-INF
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/lib
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/conf/spring
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/conf/hibernate
[propertyfile] Creating new property file: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/application.properties
     [copy] Copying 2 files to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
     [copy] Copied 1 empty directory to 1 empty directory under /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
     [copy] Copying 2 files to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app/WEB-INF
     [copy] Copying 5 files to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app/WEB-INF/tld
     [copy] Copying 28 files to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app
     [copy] Copying 18 files to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
[propertyfile] Updating property file: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/application.properties
Created Grails Application at /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore

 

6.创建一个域特定的类:

~/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore >grails create-domain-class book

Welcome to Grails 1.0.4 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails

Base Directory: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
Note: No plugin scripts found
Running script /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/scripts/CreateDomainClass.groovy
Environment set to development
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/domain
Created Domain Class for Book
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/test/integration
Created Tests for Book

 

7.通过编辑"grails-app/domain/Book.groovy" 将属性添加到域类,如此便如下所示:

class Book {
  String title
  String author
}

 

8.新建一个控制器:

~/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore >grails create-controller Book

Welcome to Grails 1.0.4 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails

Base Directory: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
Note: No plugin scripts found
Running script /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/scripts/CreateController.groovy
Environment set to development
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/controllers
Created Controller for Book
    [mkdir] Created dir: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/views/book
     [copy] Copying 1 file to /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/test/integration
Created ControllerTests for Book

9. "grails-app/controller/BookController.groovy" 中编辑生成的控制器来指定域类的scaffold。它显示如下:

class BookController {
    def scaffold = Book
}

10.          如下所示运行 app

~/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore >grails run-app

Welcome to Grails 1.0.4 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails

Base Directory: /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore
Note: No plugin scripts found
Running script /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/scripts/RunApp.groovy
Environment set to development
Starting GlassFish embedded server...    [mkdir] Created dir: /Users/arungupta/.grails/1.0.4/projects/bookstore/classes
  [groovyc] Compiling 8 source files to /Users/arungupta/.grails/1.0.4/projects/bookstore/classes
    [mkdir] Created dir: /Users/arungupta/.grails/1.0.4/projects/bookstore/resources/grails-app/i18n
[native2ascii] Converting 11 files from /Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/grails-app/i18n to /Users/arungupta/.grails/1.0.4/projects/bookstore/resources/grails-app/i18n
     [copy] Copying 1 file to /Users/arungupta/.grails/1.0.4/projects/bookstore/classes
     [copy] Copying 1 file to /Users/arungupta/.grails/1.0.4/projects/bookstore/resources
     [copy] Copying 1 file to /Users/arungupta/.grails/1.0.4/projects/bookstore
Running Grails application..
Application name : bookstore
Web App Root :/Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app
web.xml:/Users/arungupta/.grails/1.0.4/projects/bookstore/resources/web.xml
Mar 18, 2009 10:19:09 PM CommonClassLoaderManager Skipping creation of CommonClassLoader as there are no libraries available
INFO: urls = []
no resource bundle found for version, using default GlassFish version
Mar 18, 2009 10:19:09 PM AppServerStartup run
INFO: [Thread[GlassFish Kernel Main Thread,5,main]] started
Mar 18, 2009 10:19:09 PM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
INFO: Listening on port 8080
Mar 18, 2009 10:19:10 PM org.glassfish.admin.mbeanserver.ConnectorStartupService$ConnectorsStarterThread startConnector
INFO: Started JMXConnector, JMXService URL = service:jmx:rmi:///jndi/rmi://192.168.1.145:8686/jmxrmi
Mar 18, 2009 10:19:10 PM com.sun.enterprise.v3.admin.adapter.AdminEndpointDecider setGuiContextRoot
INFO: Admin Console Adapter: context root: /admin
Mar 18, 2009 10:19:10 PM com.sun.enterprise.v3.server.AppServerStartup run
INFO: GlassFish v3 Prelude startup time : Embedded(418ms) startup services(887ms) total(1305ms)
Mar 18, 2009 10:19:10 PM com.sun.enterprise.web.WebContainer createHttpListener
INFO: Created HTTP listener http-listener-1 on port 8080
Mar 18, 2009 10:19:10 PM com.sun.enterprise.web.WebContainer createHosts
INFO: Created virtual server server
Mar 18, 2009 10:19:11 PM org.apache.catalina.loader.WebappLoader setClassPath
INFO: Unknown loader org.glassfish.grails.MaskingClassLoader@3b948e75 class org.glassfish.grails.MaskingClassLoader
Mar 18, 2009 10:19:12 PM org.apache.catalina.loader.WebappLoader setClassPath
INFO: Unknown loader org.glassfish.internal.api.DelegatingClassLoader@191fa2af class org.glassfish.internal.api.DelegatingClassLoader
Mar 18, 2009 10:19:12 PM org.apache.catalina.core.ApplicationContext log
INFO: PWC1412: WebModule[/bookstore] ServletContext.log():Set web app root system property: 'bookstore-development-0.1' = [/Users/arungupta/demos/glassfishv3-prelude/glassfish/grails/samples/bookstore/web-app/]
Mar 18, 2009 10:19:12 PM org.apache.catalina.core.ApplicationContext log
INFO: PWC1412: WebModule[/bookstore] ServletContext.log():Initializing log4j from [file:/Users/arungupta/.grails/1.0.4/projects/bookstore/resources/log4j.properties]
Mar 18, 2009 10:19:12 PM org.apache.catalina.core.ApplicationContext log
INFO: PWC1412: WebModule[/bookstore] ServletContext.log():Initializing Spring root WebApplicationContext
[0] spring.GrailsWebApplicationContext Refreshing org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@430b4506: display name [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@430b4506]; startup date [Wed Mar 18 22:19:14 PDT 2009]; parent: org.springframework.web.context.support.XmlWebApplicationContext@6ceb51a8
[0] spring.GrailsWebApplicationContext Bean factory for application context [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@430b4506]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1f43243e
Mar 18, 2009 10:19:17 PM org.apache.catalina.core.ApplicationContext log
INFO: PWC1412: WebModule[/bookstore] ServletContext.log():Initializing Spring FrameworkServlet 'grails'
Mar 18, 2009 10:19:17 PM com.sun.enterprise.web.WebApplication start
INFO: Loading application bookstore at /bookstore
Server running. Browse to http://localhost:8080/bookstore

请注意,此处的 GlassFish v3 Embedded Server 用于运行该应用程序。现在可在 "http://localhost:8080/bookstore" 获得该信息,如下所示:

11.          单击 "BookController",显示:

12.          单击 "New Book" 可添加新书:

13.          单击 "Create" 后,可更新/删除每一个条目...



"Book List"
显示如下:

花费几分钟时间,我们就可创建一个简单的使用GlassFish v3 Embedded Server运行的 Grails scaffold

请对其他您想查看的TOTD (今日技巧) 留下建议。所有技巧的完整存档可在此处获得。

【本文翻译仅为外语学习及阅读目的,原文作者个人观点与译者及译言网无关】

分享:

添加评论