2009年10月7日水曜日

groovyとApache WicketでWeb Applicationを作成する

1.ページクラスの作成

HelloWicket.groovy
import org.apache.wicket.markup.html.*
import org.apache.wicket.markup.html.basic.*

class HelloWicket extends WebPage
{
HelloWicket()
{
add(new Label("message", "Hello Wicket!" + new Date()));
}
}


2.HTMLページの作成
HelloWicket.html
<html>
<head>
<title>hello wicket</title>
</head>
<body>
<span wicket:id="message" id="message" />
</body>
</html>


3.アプリケーションクラスの作成

HelloWicketApp.groovy
import org.apache.wicket.protocol.http.*;

class HelloWicketApp extends WebApplication
{
public Class getHomePage()
{
return HelloWicket.class;
}
}


4.web.xmlの作成
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">
<display-name>Wicket Examples</display-name>
<filter>
<filter-name>HelloWicketApp</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>HelloWicketApp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HelloWicketApp</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


5.必要なjarの用意
以下のURLからApache Wicketをダウンロード
http://www.apache.org/dyn/closer.cgi/wicket/1.4.1
apache-wicket-1.4.1.zipを解凍して、wicket-1.4.1.jarをビルド用のlibディレクトリへコピー。

以下のURLからSLF4Jをダウンロード
http://www.slf4j.org/download.html
slf4j-1.5.8.zipを解凍して、slf4j-api-1.5.8.jar,slf4j-jdk14-1.5.8.jarをビルド用のlibディレクトリへコピー。

6.gantファイルの作成

build.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.5'
warFile = 'hellowicket.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)

def cpath = path {
pathelement(location: "./lib/wicket-1.4.1.jar")
pathelement(location: "./lib/slf4j-api-1.5.8.jar")
}
groovyc(srcdir:sourceDir, destdir:buildDir,
classpath: cpath)

}

target(war:'packaging'){
depends(compile)
mkdir(dir:"${stagingDir}/WEB-INF/classes")
copy(todir:stagingDir){
fileset(dir:"./", includes:"*.groovy")
}
copy(todir:"${stagingDir}/WEB-INF/lib",
file:"${groovyDir}/lib/groovy-1.6.5.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/lib"){
fileset(dir:"./lib", includes:"*.jar")
}
copy(todir:"${stagingDir}/WEB-INF/classes"){
fileset(dir:buildDir, includes:"*.class")
}
copy(todir:"${stagingDir}/WEB-INF/classes"){
fileset(dir:sourceDir, includes:"*.html")
}
mkdir(dir:"${stagingDir}/WEB-INF/lib")
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)


7.ビルド
以下のファイル配置になっていることを確認して、gantコマンドでビルド。
build.gant
web.xml
lib/slf4j-api-1.5.8.jar
lib/slf4j-jdk14-1.5.8.jar
lib/wicket-1.4.1.jar
src/HelloWicket.groovy
src/HelloWicket.html
src/HelloWicketApp.groovy

8.Tomcatでの確認
ブラウザでhttp://localhost:8080/hellowicket/にアクセス。

動作環境
JDK6 Update 16, Groovy 1.6.5, Apache Tomcat 5.5.28,
Apche Wicket 1.4.1, SLF4J 1.5.8

関連情報
Apache Wicket

0 件のコメント:

コメントを投稿