2009年10月10日土曜日

groovyでサーブレット(groovlets)を作成する

groovyでサーブレット(groovlets)は以下のような簡単なコードで作成できます。

Hello.groovy
println """
<html>
<head>
<title>Hello Groovlet</title>
</head>
<body>
Hello, world.${new Date()}
</body>
</html>
"""


web.xmlは以下のように記述します。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>GroovyServlet</servlet-name>
<servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GroovyServlet</servlet-name>
<url-pattern>*.groovy</url-pattern>
</servlet-mapping>
</web-app>


warファイルのデプロイまでおこなうgantスクリプト例
sourceDir = 'src'
buildDir = 'build'
stagingDir = 'stage'
deployDir = 'C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps'
groovyDir = 'C:/Program Files/Groovy/Groovy-1.6.3'
warFile = 'groovlet.war'

ant.taskdef(name : 'groovyc', classname:'org.codehaus.groovy.ant.Groovyc')

target(compile:'compile java and groovy files.'){
mkdir(dir:buildDir)
javac(srcdir:sourceDir , destdir:buildDir)
groovyc(srcdir:sourceDir, destdir:buildDir)
}

target(war:'packaging'){
depends(compile)
mkdir(dir:"${stagingDir}/WEB-INF/classes")
copy(todir:stagingDir){
fileset(dir:"./", includes:"*.groovy")
}
copy(todir:"${stagingDir}/WEB-INF/classes"){
fileset(dir:buildDir, includes:"*.class")
}
mkdir(dir:"${stagingDir}/WEB-INF/lib")
copy(todir:"${stagingDir}/WEB-INF/lib",
file:"${groovyDir}/lib/groovy-1.6.3.jar")
copy(todir:"${stagingDir}/WEB-INF/lib",
file:"${groovyDir}/lib/asm-2.2.3.jar")
copy(todir:"${stagingDir}/WEB-INF/lib",
file:"${groovyDir}/lib/antlr-2.7.7.jar")
copy(todir:"${stagingDir}/WEB-INF",
file:"./web.xml")

jar(destfile:warFile, basedir:stagingDir)
}

target(deploy:'copy war files to webapps'){
depends(war)
copy(todir:deployDir) {
fileset(dir:"./", includes:"*.war")
}
}

includeTargets << gant.targets.Clean
cleanPattern << '**/*~'
cleanDirectory << buildDir
cleanDirectory << stagingDir

setDefaultTarget(deploy)


関連情報
Groovelets
http://groovy.codehaus.org/Groovlets

動作環境
JDK6 Update16, groovy1.6.3, Apache Tomcat 5.5.28

0 件のコメント:

コメントを投稿