BAE上的Groovy之旅

BAE上的Groovy之旅

一、前言

BAE支持Java语言后,那基于JVM的脚本语言是否也可以在BAE跑起来呢?基于JVM的脚本语言,即具备脚本语言的敏捷性,又能充分利用JAVA语言编写的各类强大库,这对JAVA开发者而言,相当有吸引力。

本文就尝试在BAE使用基于JVM的脚本语言Groovy。经过测试,BAE可以兼容Groovy的最新稳定版本2.1.3,支持groolvets以及gsp,不过遗憾的是框架grails并不兼容。Grooby其他版本没有测试。大家如果有测试过兼容性,可以直接评论回复。

 

Groovy介绍。

Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。

二、BAE上的简单Groovy demo的搭建

 

创建BAE Java应用

1)       在BAE创建一个默认的Java语言的应用。

2)       将groovy 2.1.3的相关库添加到根目录的lib库中。具体的库可以从本文对应demo中复制,也可以从groovy官方网站上下载。

搭建Groovlets以及gsp的模板servlet

Groovlets会拦截所有.groovy的请求,自动编译你的.groovy 源文件,把它们变成字节码,加载类并且缓存它,直到你改变源文件。

         首先,在web.xml中添加如下的servlet

<servlet>

<servlet-name>groovlet</servlet-name>

<servlet-class>groovy.servlet.GroovyServlet</servlet-class>

</servlet>

 

<servlet-mapping>

<servlet-name>groovlet</servlet-name>

<url-pattern>*.groovy</url-pattern>

</servlet-mapping>

 

<servlet>

<servlet-name>GroovyTemplate</servlet-name>

<servlet-class>groovy.servlet.TemplateServlet</servlet-class>

</servlet>

 

<servlet-mapping>

<servlet-name>GroovyTemplate</servlet-name>

<url-pattern>*.gsp</url-pattern>

</servlet-mapping>

 

其次,撰写HelloWorld 的groovy脚本

在应用的WebRoot目录下创建 hello.groovy,其内容如下:

println “”"

<html><head>

<title>Groovlets 101</title>

</head>

<body>

<p>

Welcome to Groovlets 101. As you can see

this Groovlet is fairly simple.

</p>

<p>

This course is being run on the following servlet container: </br>

${application.getServerInfo()}

</p>

</br>

</br>

</body>

</html>

“”"

最后,我们就可以通过 xxx.duapp.com/hello.groovy 进行访问。

 

三、 使用BAE的mysql以及cache服务

1mysql 服务

我们需要在管理平台上创建一个数据库。由于BAE已内置了mysql驱动,所以直接使用groovy的Sql库访问。在WebRoot下撰写mysql.groovy,代码如下:

import groovy.sql.Sql

import com.baidu.bae.api.util.BaeEnv

 

 

host = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_ADDR_SQL_IP)

port = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_ADDR_SQL_PORT)

username = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_AK)

password =BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_SK)

driverName = “com.mysql.jdbc.Driver”

dbUrl = “jdbc:mysql://”

serverName = host + “:” + port + “/”

databaseName = “JHLuSJomWJJJjhokXzlC”

connName = dbUrl + serverName + databaseName

sqlStr= “select * from User”

 

data=”"

i=0

sql = Sql.newInstance(connName,username,password,driverName);

sql.eachRow(sqlStr){

data+= “row ${i} id = ${it.id} username=${it.username}  password=${it.password}”;

}

 

 

println “”"

<html><head>

<title>mysql sample code for groovy</title>

</head>

<body>

<p>

data = ${data}

</br>

</p>

</body>

</html>

“”"

2cache服务

我们直接通过groovy使用BAE提供的Java的cache库。首先在服务管理页中初始化cache。具体的使用代码如下:

import com.baidu.bae.api.util.BaeEnv

 

import com.baidu.bae.api.memcache.*

import java.util.Random

 

random = new Random()

value=random.nextInt()

mc = new BaeMemcachedClient()

res = mc.add(“key”,value)

if(!res){

mc.replace(“key”,value)

}

ret = mc.get(“key”)

 

 

println “”"

<html><head>

<title>mysql sample code for groovy</title>

</head>

<body>

<p>

putvalue = ${value}

</br>

getvalue = ${ret}

</br>

</p>

</body>

</html>

“”"

 

四、 Demo的下载地址

Groovy Demo下载地址

此条目发表在 未分类 分类目录。将固定链接加入收藏夹。

BAE上的Groovy之旅》有 1 条评论

  1. ertuo 说:

    支持groovy,不支持grails,这个有点蛋疼啊。

发表评论