OOWeb

Javaの軽量WebコンテナOOWebについて調べてみた.現在最新バージョンが一年前にでた0.7.1ということで,開発止まっちゃってるのかもしれないので,心配なのだけど,他に代替になりそうなものも見当たらないので.

OOWebはPythonによるWebコンテナCherryPyにinspireされたもので,オブジェクトをURLにマップし,そのURL以下のURLが,オブジェクトのメソッドにマップされるもの.CherryPyの場合はFORMの引数が,名前付き引数として引き渡されるが,Javaには名前付き引数はないので,その辺の扱いは結構違う.Basic認証,クッキー,セッションなど,すぐに必要になるものは一通りある.

ダウンロードとインストール

0.7.1を上記サイトからダウンロード.ソースとバイナリがあるが,とりあえずソースで.tar zxvf で解凍して,ant で target/dist
/ooweb-0.7.1.jar ができる.lib 以下にも必要なjarが含まれているので,これを合わせてCLASSPATHに入れればインストール完了.

HelloWorld

index.htmlにHello Worldを返すサンプルはこんな感じ.mainがExceptionをthrowするようになっているが,これは,PygmyServerがExceptionを投げるから.なんともまあ,お行儀の悪いことだ.

import net.sf.ooweb.Server;
import net.sf.ooweb.http.pygmy.PygmyServer;
import net.sf.ooweb.annotations.Controller;

@Controller("/")
public class FirstPage {

  public static void main(String[] args) throws Exception {
    Server s = new PygmyServer();
    s.addController(new FirstPage());
    s.start();
  }
  public String index() {
    return "<h1>Hello World </h1>";
  }
}

クラス定義の前のアノテーションControllerで,このクラスのオブジェクトがマップされるpathを指定している.