Wicket on dotCloud

なんかWicket ( http://wicket.apache.org/ ) がお手軽ウェブフレームワークらしいので触ってみることにしました。ついでにdotCloudとかいう最近有名なアレの上に乗っけてみることにしました。

ステップ0. dotCloudデプロイ準備

http://docs.dotcloud.com/firststeps/install/ 参考に適当に

$ pip install dotcloud
$ dotcloud setup

ステップ1. Wicketのプロジェクトの作成

プロジェクトはmavenで作成します。しかしmavenのプロジェクト作成コマンドはいつもいつもめんどくさくて覚えてられないですね。Wicketさんはその辺のフォローもしっかりしています。Create a Wicket Quickstart | Apache Wicketで作りたいプロジェクトのグループIDとアーティファクトIDを入力すれば実行すべきコマンドが出てきます。

$ mvn archetype:generate -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.5.3 -DgroupId=org.hogel -DartifactId=wicket-test -DarchetypeRepository=https://repository.apache.org/ -DinteractiveMode=false
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.0:generate (default-cli) @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.0:generate (default-cli) @ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.0:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] Archetype defined by properties
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.547s
[INFO] Finished at: Sat Jan 07 22:58:38 JST 2012
[INFO] Final Memory: 7M/133M
[INFO] ------------------------------------------------------------------------

簡単にできました。

$ cd wicket-test
$ mvn jetty:run
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building quickstart 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
いろいろたくさん...
INFO  - WebApplication             - [wicket.wicket-test] Started Wicket version 1.5.3 in DEVELOPMENT mode
********************************************************************
*** WARNING: Wicket is running in DEVELOPMENT mode.              ***
***                               ^^^^^^^^^^^                    ***
*** Do NOT deploy to your live server(s) without changing this.  ***
*** See Application#getConfigurationType() for more information. ***
********************************************************************
2012-01-07 22:59:56.017:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080 STARTING
2012-01-07 22:59:56.376:INFO:oejs.AbstractConnector:Started SslSocketConnector@0.0.0.0:8443 STARTING
[INFO] Started Jetty Server

起動しました。アクセスしてみましょう→ http://localhost:8080/

コマンド叩いただけなのになんかできてて最近のウェブフレームワークっぽいですね。中身はあとで触っていきましょう。

ステップ2. DEPLOYMENTモードにする

mvn jetty:runしたときにこんな表示をしていましたね。

INFO  - WebApplication             - [wicket.wicket-test] Started Wicket version 1.5.3 in DEVELOPMENT mode
********************************************************************
*** WARNING: Wicket is running in DEVELOPMENT mode.              ***
***                               ^^^^^^^^^^^                    ***
*** Do NOT deploy to your live server(s) without changing this.  ***
*** See Application#getConfigurationType() for more information. ***
********************************************************************

上記メッセージの通り、WicketApplication.javaにWicketApplication#getConfigurationType()を追加します。

package org.hogel;

import org.apache.wicket.RuntimeConfigurationType;
import org.apache.wicket.protocol.http.WebApplication;

/**
 * Application object for your web application. If you want to run this application without deploying, run the Start class.
 *
 * @see org.hogel.Start#main(String[])
 */
public class WicketApplication extends WebApplication
{
    /**
     * @see org.apache.wicket.Application#getHomePage()
     */
    @Override
    public Class<HomePage> getHomePage()
    {
        return HomePage.class;
    }

    /**
     * @see org.apache.wicket.Application#init()
     */
    @Override
    public void init()
    {
        super.init();

        // add your configuration here
    }

    @Override
    public RuntimeConfigurationType getConfigurationType() {
        return RuntimeConfigurationType.DEPLOYMENT;
    }
}

ステップ3. パッケージング

mavenWicketプロジェクトをwarファイルにパッケージング。

$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building quickstart 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
色々...

wicket-test/target/wicket-test-1.0-SNAPSHOT.warができている。おしまい。

ステップ4. デプロイ

http://docs.dotcloud.com/services/java/を参考に先のwarファイルをデプロイしてみる。

dotCloud上にwickettestというアプリケーションを作成する。

$ dotcloud create wickettest
Created application "wickettest"

dotcloudディレクトリを作ってdotcloud用のファイルをまとめる。

$ mkdir dotcloud
$ cp target/wicket-test-1.0-SNAPSHOT.war dotcloud/ROOT.war

dotcloud/dotcloud.ymlに以下の内容を記述

www:
  type: java

デプロイ。

$ dotcloud push wickettest dotcloud

http://wickettest-hogelog.dotcloud.com/

デプロイ完了。うーん便利な時代ですねー。

test