فهرست منبع

Merge branch 'master' of https://github.com/LadyMozzarella/FrameworkBenchmarks into get-rack-rails-sinatra-running

Brittany Mazza 10 سال پیش
والد
کامیت
dfc526c0ae
30فایلهای تغییر یافته به همراه104 افزوده شده و 128 حذف شده
  1. 1 1
      config/benchmark_profile
  2. 1 1
      frameworks/C/haywire/benchmark_config
  3. 1 1
      frameworks/Go/beego/benchmark_config
  4. 1 1
      frameworks/Groovy/grails/README.md
  5. 0 4
      frameworks/Groovy/grails/bash_profile.sh
  6. 1 1
      frameworks/Groovy/grails/hello/application.properties
  7. 4 4
      frameworks/Groovy/grails/hello/grails-app/conf/BuildConfig.groovy
  8. 3 0
      frameworks/Groovy/grails/hello/grails-app/conf/mysql-connection.properties
  9. 3 6
      frameworks/Groovy/grails/hello/grails-app/controllers/hello/HelloController.groovy
  10. 3 0
      frameworks/Groovy/grails/hello/grails-app/domain/hello/Fortune.groovy
  11. 3 0
      frameworks/Groovy/grails/hello/grails-app/domain/hello/World.groovy
  12. 0 85
      frameworks/Groovy/grails/hello/src/groovy/org/codehaus/groovy/grails/plugins/codecs/JSONEncoder.java
  13. 5 1
      frameworks/Groovy/grails/install.sh
  14. 6 1
      frameworks/Groovy/grails/setup.sh
  15. 5 5
      frameworks/Java/gemini/Docroot/WEB-INF/GeminiHello.conf
  16. BIN
      frameworks/Java/gemini/Docroot/WEB-INF/lib/postgresql-9.4-1200.jdbc41.jar
  17. 1 1
      frameworks/Java/gemini/Docroot/WEB-INF/resin.xml
  18. 40 2
      frameworks/Java/gemini/benchmark_config
  19. 1 0
      frameworks/Java/gemini/source_code
  20. 4 2
      frameworks/Java/gemini/start.sh
  21. 9 0
      frameworks/Java/gemini/start_postgres.sh
  22. 1 1
      frameworks/Java/ninja-standalone/pom.xml
  23. 1 1
      frameworks/Lua/lapis/bash_profile.sh
  24. 1 1
      frameworks/Lua/openresty/bash_profile.sh
  25. 1 1
      frameworks/Perl/kelp/benchmark_config
  26. 1 1
      frameworks/Python/bottle/setup_nginxuwsgi.sh
  27. 1 1
      frameworks/Python/flask/setup_nginxuwsgi.sh
  28. 1 1
      frameworks/Python/uwsgi/setup_nginx.sh
  29. 1 1
      frameworks/Python/wsgi/setup_nginxuwsgi.sh
  30. 4 4
      toolset/setup/linux/frameworks/grails.sh

+ 1 - 1
config/benchmark_profile

@@ -20,7 +20,7 @@ export TFB_DISTRIB_DESCRIPTION=$DISTRIB_DESCRIPTION
 
 export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
 export RESIN_HOME=${IROOT}/resin-4.0.41
-export GRAILS_HOME=${IROOT}/grails-2.4.2
+export GRAILS_HOME=${IROOT}/grails-2.4.4
 export VERTX_HOME=${IROOT}/vert.x-2.1.1
 export TOMCAT_HOME=${IROOT}/apache-tomcat-7.0.35
 export NODE_HOME=${IROOT}/node-v0.10.8-linux-x64

+ 1 - 1
frameworks/C/haywire/benchmark_config

@@ -10,7 +10,7 @@
       "database": "None",
       "framework": "haywire",
       "language": "C",
-      "orm": "None",
+      "orm": "Raw",
       "platform": "haywire",
       "webserver": "None",
       "os": "Linux",

+ 1 - 1
frameworks/Go/beego/benchmark_config

@@ -12,7 +12,7 @@
       "database": "MySQL",
       "framework": "beego",
       "language": "Go",
-      "orm": "beego ORM",
+      "orm": "Micro",
       "platform": "Go",
       "webserver": "None",
       "os": "Linux",

+ 1 - 1
frameworks/Groovy/grails/README.md

@@ -4,7 +4,7 @@ This is the Grails portion of a [benchmarking test suite](../) comparing a varie
 
 ## Infrastructure Software Versions
 The tests were run with:
-* [Grails 2.4.2](http://grails.org/)
+* [Grails 2.4.4](http://grails.org/)
 
 ## Test URLs
 

+ 0 - 4
frameworks/Groovy/grails/bash_profile.sh

@@ -1,4 +0,0 @@
-export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
-export RESIN_HOME=${IROOT}/resin-4.0.41
-
-export GRAILS_PATH=${IROOT}/grails-2.4.2/bin/

+ 1 - 1
frameworks/Groovy/grails/hello/application.properties

@@ -1,6 +1,6 @@
 #Grails Metadata file
 #Tue Feb 25 10:29:09 EET 2014
-app.grails.version=2.4.2
+app.grails.version=2.4.4
 app.name=hello
 app.servlet.version=2.5
 app.version=0.1

+ 4 - 4
frameworks/Groovy/grails/hello/grails-app/conf/BuildConfig.groovy

@@ -45,7 +45,7 @@ grails.project.dependency.resolution = {
         inherits true // Whether to inherit repository definitions from plugins
         grailsPlugins()
         grailsHome()
-		mavenLocal()
+        mavenLocal()
         grailsCentral()
         mavenCentral()
 
@@ -60,11 +60,11 @@ grails.project.dependency.resolution = {
     dependencies {
         // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
 
-        runtime 'mysql:mysql-connector-java:5.1.29'
+        runtime 'mysql:mysql-connector-java:5.1.34'
     }
 
     plugins {
-        runtime ":hibernate:3.6.10.16"
+        runtime ":hibernate:3.6.10.18"
         //runtime ":jquery:1.10.2"
         //runtime ":resources:1.2.1"
 
@@ -73,6 +73,6 @@ grails.project.dependency.resolution = {
         //runtime ":cached-resources:1.0"
         //runtime ":yui-minify-resources:0.1.4"
 
-        build ":tomcat:7.0.54"
+        build ":tomcat:7.0.55.2"
     }
 }

+ 3 - 0
frameworks/Groovy/grails/hello/grails-app/conf/mysql-connection.properties

@@ -58,3 +58,6 @@ maintainTimeStats=false
 # timeouts for TCP/IP
 connectTimeout=15000
 socketTimeout=120000
+
+# enable batch mode
+rewriteBatchedStatements=true

+ 3 - 6
frameworks/Groovy/grails/hello/grails-app/controllers/hello/HelloController.groovy

@@ -1,16 +1,13 @@
 package hello
 
+import grails.compiler.GrailsCompileStatic
 import grails.converters.JSON
-import grails.transaction.Transactional
-import groovy.transform.CompileStatic
-import groovy.transform.TypeCheckingMode;
 
 import java.util.concurrent.ThreadLocalRandom
 
-import org.springframework.transaction.annotation.Propagation;
-import org.hibernate.Session;
+import org.hibernate.Session
 
-@CompileStatic
+@GrailsCompileStatic
 class HelloController {
 
     def index() {

+ 3 - 0
frameworks/Groovy/grails/hello/grails-app/domain/hello/Fortune.groovy

@@ -1,5 +1,8 @@
 package hello
 
+import grails.compiler.GrailsCompileStatic
+
+@GrailsCompileStatic
 class Fortune {
     Integer id
     String message

+ 3 - 0
frameworks/Groovy/grails/hello/grails-app/domain/hello/World.groovy

@@ -1,5 +1,8 @@
 package hello
 
+import grails.compiler.GrailsCompileStatic
+
+@GrailsCompileStatic
 class World {
     Integer id
     Integer randomNumber

+ 0 - 85
frameworks/Groovy/grails/hello/src/groovy/org/codehaus/groovy/grails/plugins/codecs/JSONEncoder.java

@@ -1,85 +0,0 @@
-/*
- * Copyright 2013 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.codehaus.groovy.grails.plugins.codecs;
-
-import org.apache.commons.lang.StringUtils;
-import org.codehaus.groovy.grails.support.encoding.CodecIdentifier;
-import org.codehaus.groovy.grails.support.encoding.DefaultCodecIdentifier;
-
-/**
- * Escapes characters in JSON output
- *
- * @author Lari Hotari
- * @since 2.3.4
- */
-public class JSONEncoder extends AbstractCharReplacementEncoder {
-    public static final CodecIdentifier JSON_CODEC_IDENTIFIER = new DefaultCodecIdentifier(
-            "JSON", "Json") {
-        public boolean isEquivalent(CodecIdentifier other) {
-            return super.isEquivalent(other) || JavaScriptEncoder.JAVASCRIPT_CODEC_IDENTIFIER.getCodecName().equals(other.getCodecName());
-        };
-    };
-
-    public JSONEncoder() {
-        super(JSON_CODEC_IDENTIFIER);
-    }
-
-    /* (non-Javadoc)
-     * @see org.codehaus.groovy.grails.plugins.codecs.AbstractCharReplacementEncoder#escapeCharacter(char, char)
-     */
-    @Override
-    protected String escapeCharacter(char ch, char previousChar) {
-        switch (ch) {
-            case '"':
-                return "\\\"";
-            case '\\':
-                return "\\\\";
-            case '\t':
-                return "\\t";
-            case '\n':
-                return "\\n";
-            case '\r':
-                return "\\r";
-            case '\f':
-                return "\\f";
-            case '\b':
-                return "\\b";
-            case '\u000B': // vertical tab: http://bclary.com/2004/11/07/#a-7.8.4
-                return "\\v";
-            case '\u2028':
-                return "\\u2028"; // Line separator
-            case '\u2029':
-                return "\\u2029"; // Paragraph separator
-            case '/':
-                // preserve special handling that exists in JSONObject.quote to improve security if JSON is embedded in HTML document
-                // prevents outputting "</" gets outputted with unicode escaping for the slash
-                if (previousChar == '<') {
-                    return "\\u002f"; 
-                }
-                break;
-        }
-        if(ch < ' ') {
-            // escape all other control characters
-            return "\\u" + StringUtils.leftPad(Integer.toHexString(ch), 4, '0');
-        }
-        return null;
-    }
-
-    @Override
-    public boolean isApplyToSafelyEncoded() {
-        return true;
-    }
-}

+ 5 - 1
frameworks/Groovy/grails/install.sh

@@ -1,3 +1,7 @@
 #!/bin/bash
+export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
+export RESIN_HOME=${IROOT}/resin-4.0.41
 
-fw_depends grails resin 
+export GRAILS_PATH=${IROOT}/grails-2.4.4/bin/
+
+fw_depends grails resin

+ 6 - 1
frameworks/Groovy/grails/setup.sh

@@ -1,4 +1,8 @@
 #!/bin/bash
+export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
+export RESIN_HOME=${IROOT}/resin-4.0.41
+
+export GRAILS_PATH=${IROOT}/grails-2.4.4/bin/
 
 sed -i 's|jdbc:mysql://.*:3306|jdbc:mysql://'"${DBHOST}"':3306|g' hello/grails-app/conf/DataSource.groovy
 
@@ -6,8 +10,9 @@ export PATH=${GRAILS_PATH}:$PATH
 export GRAILS_AGENT_CACHE_DIR=${IROOT}/.grails/.slcache
 
 cd hello
+grails -Dgrails.work.dir=${IROOT}/.grails -non-interactive -plain-output refresh-dependencies
 grails -Dgrails.work.dir=${IROOT}/.grails -non-interactive -plain-output compile
 grails -Dgrails.work.dir=${IROOT}/.grails prod -non-interactive -plain-output war
 rm -rf $RESIN_HOME/webapps/*
 cp target/hello-0.1.war $RESIN_HOME/webapps/grails.war
-$RESIN_HOME/bin/resinctl start
+$RESIN_HOME/bin/resinctl start

+ 5 - 5
frameworks/Java/gemini/Docroot/WEB-INF/GeminiHello.conf

@@ -87,19 +87,19 @@ DeploymentDescription = Production
 # specific configuration files.
 
 # MySQL/ConnectorJ
-db.Driver.Class = com.mysql.jdbc.Driver
-db.Driver.UrlPrefix = jdbc:mysql://
+db.Driver.Class = org.postgresql.Driver
+db.Driver.UrlPrefix = jdbc:postgresql://
 db.Driver.SupportsAbsolute = yes
 db.Driver.SupportsGetRow = yes
 db.Driver.Jdbc1 = no
 
-db.ConnectString = localhost:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useServerPrepStmts&enableQueryTimeouts=false&useUnbufferedIO=false&useReadAheadInput=false&maintainTimeStats=false&cacheRSMetadata=true
+db.ConnectString = 127.0.0.1:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useServerPrepStmts&enableQueryTimeouts=false&useUnbufferedIO=false&useReadAheadInput=false&maintainTimeStats=false&cacheRSMetadata=true
 db.LoginName = benchmarkdbuser
 db.LoginPass = benchmarkdbpass
 
 # JTDS (Open source JDBC driver for Microsoft SQL Server)
-#db.Driver.Class = net.sourceforge.jtds.jdbc.Driver
-#db.Driver.UrlPrefix = jdbc:jtds:sqlserver://
+#db.Driver.Class = org.postgresql.Driver
+#db.Driver.UrlPrefix = jdbc:postgresql://
 #db.Driver.SupportsAbsolute = yes
 #db.Driver.SupportsGetRow = yes
 #db.Driver.Jdbc1 = no

BIN
frameworks/Java/gemini/Docroot/WEB-INF/lib/postgresql-9.4-1200.jdbc41.jar


+ 1 - 1
frameworks/Java/gemini/Docroot/WEB-INF/resin.xml

@@ -14,7 +14,7 @@
     </server>
 
     <host>
-      <web-app id="/" root-directory="/home/tfb/FrameworkBenchmarks/frameworks/Java/gemini/Docroot" />
+      <web-app id="/" root-directory="/home/knewman/FrameworkBenchmarks/frameworks/Java/gemini/Docroot" />
     </host>
 
   </cluster>

+ 40 - 2
frameworks/Java/gemini/benchmark_config

@@ -4,11 +4,49 @@
     "default": {
       "setup_file": "start",
       "json_url": "/",
+      "plaintext_url": "/plaintext",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "None",
+      "framework": "gemini",
+      "language": "Java",
+      "orm": "Micro",
+      "platform": "Servlet",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "gemini",
+      "notes": "",
+      "versus": "servlet"
+    },
+    "mysql": {
+      "setup_file": "start",
+      "db_url": "/db",
+      "query_url": "/query?queries=",
+      "fortune_url": "/fortunes",
+      "update_url": "/update?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "gemini",
+      "language": "Java",
+      "orm": "Micro",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "gemini",
+      "notes": "",
+      "versus": "servlet"
+    },
+    "postgres": {
+      "setup_file": "start_postgres",
       "db_url": "/db",
       "query_url": "/query?queries=",
       "fortune_url": "/fortunes",
       "update_url": "/update?queries=",
-      "plaintext_url": "/plaintext",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Fullstack",
@@ -23,6 +61,6 @@
       "display_name": "gemini",
       "notes": "",
       "versus": "servlet"
-    }
+    }   
   }]
 }

+ 1 - 0
frameworks/Java/gemini/source_code

@@ -24,6 +24,7 @@
 ./gemini/Docroot/WEB-INF/lib
 ./gemini/Docroot/WEB-INF/lib/kryonet-1.04-all.jar
 ./gemini/Docroot/WEB-INF/lib/mysql-connector-java-5.1.23-bin.jar
+./gemini-Docroot/WEB-INF/lib/postgresql-9.4-1200.jdbc41.jar
 ./gemini/Docroot/WEB-INF/lib/mustache-compiler-0.8.13.jar
 ./gemini/Docroot/WEB-INF/lib/mail.jar
 ./gemini/Docroot/WEB-INF/lib/activation.jar

+ 4 - 2
frameworks/Java/gemini/start.sh

@@ -1,7 +1,9 @@
 #!/bin/bash
 
-sed -i 's/db.ConnectString = .*:3306/db.ConnectString = '"$DBHOST"':3306/g' Docroot/WEB-INF/GeminiHello.conf
+sed -i 's|db.ConnectString = .*/|db.ConnectString = '"$DBHOST"':3306/|g' Docroot/WEB-INF/GeminiHello.conf
 sed -i 's|root-directory=".*/FrameworkBenchmarks/frameworks/Java/gemini|root-directory="'"$TROOT"'|g' Docroot/WEB-INF/resin.xml
+sed -i 's|db.Driver.Class = .*|db.Driver.Class = com.mysql.jdbc.Driver|g' Docroot/WEB-INF/GeminiHello.conf
+sed -i 's|db.Driver.UrlPrefix = .*|db.Driver.UrlPrefix = jdbc:mysql://|g' Docroot/WEB-INF/GeminiHello.conf
 mkdir -p Docroot/WEB-INF/classes
 ant compile
-$RESIN_HOME/bin/resinctl -conf $TROOT/Docroot/WEB-INF/resin.xml start
+$RESIN_HOME/bin/resinctl -conf $TROOT/Docroot/WEB-INF/resin.xml start

+ 9 - 0
frameworks/Java/gemini/start_postgres.sh

@@ -0,0 +1,9 @@
+#!/bin/bash
+
+sed -i 's|db.ConnectString = .*/|db.ConnectString = '"$DBHOST"':5432/|g' Docroot/WEB-INF/GeminiHello.conf
+sed -i 's|root-directory=".*/FrameworkBenchmarks/frameworks/Java/gemini|root-directory="'"$TROOT"'|g' Docroot/WEB-INF/resin.xml
+sed -i 's|db.Driver.Class = .*|db.Driver.Class = org.postgresql.Driver|g' Docroot/WEB-INF/GeminiHello.conf
+sed -i 's|db.Driver.UrlPrefix = .*|db.Driver.UrlPrefix = jdbc:postgresql://|g' Docroot/WEB-INF/GeminiHello.conf
+mkdir -p Docroot/WEB-INF/classes
+ant compile
+$RESIN_HOME/bin/resinctl -conf $TROOT/Docroot/WEB-INF/resin.xml start

+ 1 - 1
frameworks/Java/ninja-standalone/pom.xml

@@ -9,7 +9,7 @@
 
     <properties>
         <java-version>1.7</java-version>
-        <ninja.version>4.0.0</ninja.version>
+        <ninja.version>4.0.5</ninja.version>
         <mysql.version>5.1.26</mysql.version>
         <jetty.version>9.2.1.v20140609</jetty.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 1 - 1
frameworks/Lua/lapis/bash_profile.sh

@@ -1,3 +1,3 @@
 #!/bin/bash
 
-export OPENRESTY_HOME=${IROOT}/openresty-1.7.4.1
+export OPENRESTY_HOME=${IROOT}/openresty-1.7.7.1

+ 1 - 1
frameworks/Lua/openresty/bash_profile.sh

@@ -1,3 +1,3 @@
 #!/bin/bash
 
-export OPENRESTY_HOME=${IROOT}/openresty-1.7.4.1
+export OPENRESTY_HOME=${IROOT}/openresty-1.7.7.1

+ 1 - 1
frameworks/Perl/kelp/benchmark_config

@@ -12,7 +12,7 @@
       "port": 8080,
       "approach": "Realistic",
       "classification": "Fullstack",
-      "database": "SQL",
+      "database": "MySQL",
       "framework": "kelp",
       "language": "Perl",
       "orm": "Raw",

+ 1 - 1
frameworks/Python/bottle/setup_nginxuwsgi.sh

@@ -3,4 +3,4 @@
 sed -i 's|include .*/conf/uwsgi_params;|include '"${NGINX_HOME}"'/conf/uwsgi_params;|g' nginx.conf
 
 ${NGINX_HOME}/sbin/nginx -c ${TROOT}/nginx.conf
-${PY2_ROOT}/bin/uwsgi -d --ini ${TROOT}/uwsgi.ini --processes ${MAX_THREADS} --wsgi app:app
+${PY2_ROOT}/bin/uwsgi -d ${ERR} --ini ${TROOT}/uwsgi.ini --processes ${MAX_THREADS} --wsgi app:app

+ 1 - 1
frameworks/Python/flask/setup_nginxuwsgi.sh

@@ -3,4 +3,4 @@
 sed -i 's|include .*/conf/uwsgi_params;|include '"${NGINX_HOME}"'/conf/uwsgi_params;|g' nginx.conf
 
 $NGINX_HOME/sbin/nginx -c $TROOT/nginx.conf
-${PY2_ROOT}/bin/uwsgi -d --ini ${TROOT}/uwsgi.ini --processes ${MAX_THREADS} --wsgi app:app
+${PY2_ROOT}/bin/uwsgi -d ${ERR} --ini ${TROOT}/uwsgi.ini --processes ${MAX_THREADS} --wsgi app:app

+ 1 - 1
frameworks/Python/uwsgi/setup_nginx.sh

@@ -3,4 +3,4 @@
 sed -i 's|include .*/conf/uwsgi_params;|include '"${NGINX_HOME}"'/conf/uwsgi_params;|g' nginx.conf
 
 $NGINX_HOME/sbin/nginx -c ${TROOT}/nginx.conf
-$PY2_ROOT/bin/uwsgi -d --ini uwsgi.ini --processes ${MAX_THREADS} --gevent 1000 --wsgi hello
+$PY2_ROOT/bin/uwsgi -d ${ERR} --ini uwsgi.ini --processes ${MAX_THREADS} --gevent 1000 --wsgi hello

+ 1 - 1
frameworks/Python/wsgi/setup_nginxuwsgi.sh

@@ -3,4 +3,4 @@
 sed -i 's|include .*/conf/uwsgi_params;|include '"${NGINX_HOME}"'/conf/uwsgi_params;|g' nginx.conf
 
 $NGINX_HOME/sbin/nginx -c $TROOT/nginx.conf
-$PY2_ROOT/bin/uwsgi -d --ini uwsgi.ini --processes ${MAX_THREADS} --wsgi hello:app
+$PY2_ROOT/bin/uwsgi -d ${ERR} --ini uwsgi.ini --processes ${MAX_THREADS} --wsgi hello:app

+ 4 - 4
toolset/setup/linux/frameworks/grails.sh

@@ -1,9 +1,9 @@
 #!/bin/bash
 
-RETCODE=$(fw_exists ${IROOT}/grails-2.4.2.installed)
+RETCODE=$(fw_exists ${IROOT}/grails-2.4.4.installed)
 [ ! "$RETCODE" == 0 ] || { return 0; }
 
-fw_get http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.4.2.zip -O grails-2.4.2.zip
-fw_unzip grails-2.4.2.zip
+fw_get http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.4.4.zip -O grails-2.4.4.zip
+fw_unzip grails-2.4.4.zip
 
-touch ${IROOT}/grails-2.4.2.installed
+touch ${IROOT}/grails-2.4.4.installed