Posted by
arungupta on April 23, 2008 at 7:00 AM PDT
TOTD
#30 explained how to create CRUD application using
Grails and hosted using
in-built
Jetty servlet
engine and in-memory
HSQLDB
database. Jetty and HSQLDB are built into Grails and allows to start easily.
You can also use
GlassFish and
MySQL for deploying your applications in
production environment.
This blog entry walks you through the steps of deploying a Grails
application on GlassFish and MySQL.
- If MySQL
is already installed, then download GlassFish
v2 UR1. Otherwise you can also Download GlassFish v2 UR1
and MySQL co-bundle
from usual Download
Page (instructions).
- Configure MySQL database
- Download MySQL Connector/J 5.1.6 from here.
- Extract the bundle and copy
"mysql-connector-java-5.1.6-bin.jar" to the "lib" directory of Grails
application.
- Start MySQL database as:
~/testbed/grails-1.0.2/samples/crud
>sudo
/usr/local/mysql/bin/mysqld_safe --user root --console
Starting mysqld daemon with databases from /usr/local/mysql/data |
- Create database by giving the following command:
| ~/testbed/grails-1.0.2/samples/crud
>/usr/local/mysql/bin/mysqladmin
create crudProd --user root |
- Configure the Application
- Edit
"grails-app/conf/DataSource.groovy" to specify MySQL
configuration. The updated file looks like (changes highlighted in bold):
dataSource
{
pooled = false
driverClassName = "com.mysql.jdbc.Driver"
username = "root"
password = ""
dialect =
"org.hibernate.dialect.MySQL5InnoDBDialect"
}
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='org.hibernate.cache.EhCacheProvider'
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost/crudProd"
}
}
} |
Being in production, it's recommended to use InnoDB
tables instead of
MyISAM
tables. This can be easily specified by using the dialect as
explained here.
More details about the contents of "DataSource.groovy" can be found
here.
- Create a WAR by giving the following command:
~/testbed/grails-1.0.2/samples/crud
>grails war
Welcome to Grails 1.0.2 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /Users/arungupta/testbed/grails-1.0.2
Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud
Note: No plugin scripts found
Running script /Users/arungupta/testbed/grails-1.0.2/scripts/War.groovy
Environment set to production
[delete] Deleting:
/Users/arungupta/.grails/1.0.2/projects/crud/resources/web.xml
[delete] Deleting directory
/Users/arungupta/.grails/1.0.2/projects/crud/classes
. . .
[propertyfile]
Updating property file:
/Users/arungupta/testbed/grails-1.0.2/samples/crud/staging/WEB-INF/classes/application.properties
[mkdir] Created dir:
/Users/arungupta/testbed/grails-1.0.2/samples/crud/staging/WEB-INF/plugins
[copy] Warning:
/Users/arungupta/testbed/grails-1.0.2/samples/crud/plugins not found.
[jar] Building jar:
/Users/arungupta/testbed/grails-1.0.2/samples/crud/crud-0.1.war
[delete] Deleting directory
/Users/arungupta/testbed/grails-1.0.2/samples/crud/staging
Done creating WAR
/Users/arungupta/testbed/grails-1.0.2/samples/crud/crud-0.1.war |
- Deploy the WAR file as:
~/testbed/grails-1.0.2/samples/crud
>~/testbed/glassfish/v3/p2b9/glassfish/bin/asadmin
deploy crud-0.1.war
crud-0.1 deployed successfully
Command deploy executed successfully. |
The application is now accessible at "http://localhost:8080/crud-0.1"
and looks like:

- READ - Click on "StateController" and the following page is
shown:

- CREATE - Click on "New State" and enter the values as shown
below:

and click on "Create" to see the following page:

- UPDATE & DELETE - You can click on "Edit" or
"Delete" to perform U or D of CRUD or click
on "State List" to view the updated list.
Please leave suggestions on other TOTD that you'd like to see.
A complete archive is available here.
Technorati: groovy
grails
glassfish
mysql scripting
netbeans