WicketとWTPを使った開発This is a featured page


Eclipse 3.2+WTP 1.5+MavenでWicket開発環境を作成する


ここでは、Wicketの開発環境としてEclipse 3.2+WTP 1.5+Maven2を使った開発の始め方を簡単に解説します。

Eclipse 3.2, WTP 1.5 , Tomcat 5.5, Maven 2の環境はセットアップ済みであることを前提にしています。Eclipse + WTP環境構築の方法は、以下のリンクを参考にしてください。


Maven2の導入は以下のリンクを参考にしてください。バイナリを任意のディレクトリに展開して(展開先)/binにPATHを通し、環境変数JAVA_HOMEを設定するだけです。


ここでは、E:\work\wicketwtp\以下に開発環境を用意し、EclipseのワークスペースがE:\work\wicketwtp\workspaceにあるものとして説明をします。

EclipseワークスペースにM2_REPO変数を登録


まず、Eclipseでのビルド時にMavenのローカルリポジトリを参照できるようにM2_REPOというクラスパス変数を設定します。設定用のeclipse:add-maven-repoが用意されているので、ワークスペースを-Declipse.workspaceで指定して実行します。

E:\>mvn -Declipse.workspace="E:/work/wicketwtp/workspace" eclipse:add-maven-repo
(実際には一行で入力します)

これでEclipse上のクラスパス変数としてM2_REPOが設定されます。この操作はワークスペース毎に一度だけ実行すれば、再度実行する必要はありません。


プロジェクトディレクトリの作成とpom.xmlの編集


Eclipseワークスペースの下にプロジェクトディレクトリを作成します。ワークスペースに移動して、archetype:createゴールを実行します。

E:\>cd e:\work\wicketwtp\workspace

E:\work\wicketwtp\workspace>mvn archetype:create -DgroupId=com.example -Dversion=0.0.1 -DartifactId=wicketapp1 -DarchetypeArtifactId=maven-archetype-webapp


プロジェクトディレクトリが作成され、その中にpom.xmlが作成されますので、pom.xmlを自分の用件にあうように編集します。
まずwicketへの<dependency>を追加します。-①
また、JDK 1.5でコンパイルするためにmaven-compiler-pluginへ設定追加を行います。-②

maven-archetype-webapp
で作成したワークスペースはデフォルトではsrc/main/resourcesのみがソースフォルダとして登録されるので、これをsrc/main/javaに変更します。-③

最後に、<resources>を追加して、リソースのフィルタを変更しています。-④
これはWicketの場合、ソースフォルダにHTMLファイルを作成し、それがWARのclasses/にコピーされる必要があるためです。(デフォルトではソースフォルダにあるファイルは、コンパイル後のclassファイルのみコピーされ、HTMLファイルはコピーされない)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>wicketapp1</artifactId>
<packaging>war</packaging>
<version>0.0.1</version>
<name>wicketapp1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency> <!-- 1 -->
<groupId>wicket</groupId>
<artifactId>wicket</artifactId>
<version>1.2.4</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/main/java</sourceDirectory> <!-- 3 -->
<finalName>wicketapp1</finalName>
<plugins> <!-- 2 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>

<resources>
<!-- 4 -->
<resource>
<filtering>false</filtering>
<directory>src/main/java</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
</project>

太字の部分が追記した箇所です。また上記のpom.xmlファイルはここからダウンロード可能です)

プロジェクトをEclipseからインポートできるようにする


プロジェクトディレクトリの用意が出来たので、eclipse:eclipseゴールを使用してEclipseからインポート可能にします。まずプロジェクトディレクトリに移動して、-Dwtpversion=1.5-DdownloadSources=true付けてeclipse:eclipseゴールを実行します。

E:\work\wicketwtp\workspace>cd wicketapp1
E:\work\wicketwtp\workspace\wicketapp>mvn -Dwtpversion=1.5 -DdownloadSources=true eclipse:eclipse
(もしうまく動かない場合は、-DeclipseProjectDir="E:/work/wicketwtp/workspace"でEclipseのワークスペースを指定してみてください)

eclipse:eclipseを実行すると、必要なファイル(wicket本体など)がEclipseプロジェクトから参照可能なようにセットアップされます。必要なファイルがローカルリポジトリに無い場合、自動的にダウンロードされます。また-DdownloadSource=trueを付けていますので、ソースもダウンロードされ、これもEclipseから参照可能なように設定されます。

次に、src\main\javaディレクトリを作成します。(デフォルトではsrc\main\resourcesしか作成されないため)

E:\work\wicketwtp\workspace\wicketapp1>mkdir src\main\java

プロジェクトのインポート


Eclipseを起動し、作成したプロジェクトをインポートします。
メニューのファイル⇒インポートを選択します。

インポート(1)

「既存プロジェクトをワークスペースへ」を選択して「次へ」を押します。

インポート(2)

「ルート・ディレクトリーの選択」で、作成したワークスペース(E:\work\wicketwtp\workspace\wicketapp1)を指定し、「終了」を押します。インポート後、初回のみダウンロードした"http://java.sun.com/dtd/web-app_2.3.dtd"へのライセンスの同意が求められますので、「同意します」を押します。

プロジェクトフォルダ先ほど作成したsrc/main/javaフォルダがEclipseのソースフォルダとして登録されているはずです。src/main/resoucesはソースフォルダになっていないので、必要であればソースフォルダとして登録します。src/main/resoucesをパッケージ・エクスプローラー上で右クリックし、「ビルド・パス」⇒「ソース・フォルダーとして使用」を選択すれば登録できます。

プロジェクト全体は右図のようになっているはずです。wicketや、wicketが依存するcommons-logging等がソースコードと共にプロジェクトから参照可能なように設定されています。

アプリケーションの作成


単純に現在時刻を表示するだけのアプリケーションを作成して、動作確認を行います。まず、mvn archetype:createが作成したsrc/main/webapp/index.jspは不要なので削除します。

先にパッケージ名とアプリケーションクラスの名前を決めておく必要があります。ここではパッケージ名をcom.example.wicket、アプリケーションクラスをApplicationとします。

web.xmlファイルを編集して、Wicketのサーブレットクラスとアプリケーションクラスを定義します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>Wicket Application</display-name>

<context-param>
<param-name>configuration</param-name>
<param-value>development</param-value>
</context-param>

<servlet>
<servlet-name>wicketapp</servlet-name>
<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>com.example.wicket.Application</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>wicketapp</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

(上記のweb.xmlファイルはここからダウンロード可能です)

あとは決めたパッケージ以下にクラスやHTMLテンプレートを作成していくだけです。HTMLテンプレートは対応するクラスと同じパッケージ(ディレクトリ)に作成する必要があります。src/main/webapp以下に作成しても動作しないので注意が必要です。
ここでは以下のように作成しました。

Application.java ダウンロード
======================================================================
package com.example.wicket;

import wicket.protocol.http.WebApplication;

public class Application extends WebApplication {

@Override
public Class getHomePage() {
return Home.class;
}
}
======================================================================


Home.java ダウンロード
======================================================================
package com.example.wicket;

import java.util.Date;

import wicket.markup.html.WebPage;
import wicket.markup.html.basic.Label;

public class Home extends WebPage {

private static final long serialVersionUID = 1L;

public Home() {
add(new Label("time",new Date().toString()));
}
}
======================================================================


Home.html ダウンロード
======================================================================
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Current Time</title>
</head>
<body>
現在の日時は<span wicket:id="time">00:00:00</span>です。
</body>
</html>
======================================================================

WTPの機能を使ってTomcat上で起動する


WTPWTPに登録してあるTomcat上で作成したアプリケーションを起動します。サーバビューを表示し、Tomcatを右クリック⇒「プロジェクトの追加および除去」を選択し、作成したwicketapp1を登録します。

登録できたら、サーバービューのデバッグボタン、もしくは実行ボタンを押しTomcatを起動します。起動後ブラウザからhttp://localhost:8080/プロジェクト名にアクセスする事でアプリケーションを実行します。

実行すると以下のように現在の時刻が表示されます。リロードすると時間が更新されるのが確認できます。

実行画面

開発中は基本的にTomcatを立ち上げっぱなしで問題ありません。HTML,クラスの変更はTomcatのリスタート無しで動的に反映されます。

補足

ロギングについて

上記の方法ではロギングの設定がされていないので、情報がほとんどコンソールに出力されません。src/main/java以下にcommons-logging.propertieslog4j.propertiesを置く事でログが出力されるようになります。

commons-logging.propertiesには

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

とだけ書いてlog4jにロギングを任せます。

log4j.propertiesには、最低限以下のような設定が必要です。

log4j.rootLogger=DEBUG,Stdout
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout

log4j.logger.org=INFO
log4j.logger.wicket=INFO


warの作成

WTPの機能としてwarファイル作成機能があるので、それを使うと簡単にwarファイルが作成できます。プロジェクトを右クリック⇒エクスポートからwarを選択する事でwarが作成できます。
また、Mavenを使って、コマンドラインからmvn packageを実行することでもwarが作成できます。この場合は\target\ディレクトリ以下にwarファイルが作成されます。


WTPのHTMLエディタでwicket:idへの警告が出る場合

WTPのHTMLエディタを使ってWicketのHTMLテンプレートを作成していると、「属性名 (wicket:id) が未定義です。」という警告が出る場合があります。そのままにしておいても特に問題はありませんが、警告を消したい場合はwicketというネームスペースを適当に定義する事で警告を回避できます。(これが正しい方法ではないと思うのですが、他に良い方法が分からないのでこうしています)

WTPでHTMLファイルを作成する場合は、XHTMLのテンプレートに以下のネームスペースを追加したテンプレートを登録しておくと便利だと思います。

例)
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.sourceforge.net/ ">


No user avatar
sim_j
Latest page update: made by sim_j , Jan 16 2007, 10:35 AM EST (about this update About This Update sim_j Edited by sim_j

12 words added

view changes

- complete history)
More Info: links to this page
There are no threads for this page.  Be the first to start a new thread.
Text File pom.xml_wicket-spring.txt (Text File - 2k)
posted by sim_j   Jan 17 2007, 10:00 AM EST
Wicket+Spring Annotationのpom.xmlサンプル
Web Page Home.html (Web Page - 0k)
posted by sim_j   Jan 15 2007, 10:57 AM EST
Home.html
Java Source Home.java (Java Source - 0k)
posted by sim_j   Jan 15 2007, 10:57 AM EST
Home.java
Java Source Application.java (Java Source - 0k)
posted by sim_j   Jan 15 2007, 10:57 AM EST
Application.java

Related Content

  (what's this?Related ContentThanks to keyword tags, links to related pages and threads are added to the bottom of your pages. Up to 15 links are shown, determined by matching tags and by how recently the content was updated; keeping the most current at the top. Share your feedback on Wetpaint Central.)