Winstoneを使ってみる。

噂によると起動が爆速らしい。
そして、ライブラリのサイズが超小さいらしい。


とりあえず、winstone-0.9.6.jarをダウンロード。
んで、めぼしいWebアプリが思いつかないので、teeda-html-exmapleを使う事に。
SVNからチェックアウトしてきて、webappフォルダをテキトーなフォルダにコピーしる。
今回は、JSPも使いたいので、Tomcatのcommon/libから必要なライブラリをコピーしてくる。
ディレクトリはこんな感じに。

んで、起動スクリプトはこんな感じ。

set JAVA_HOME=C:\jdk1.5.0_11
%JAVA_HOME%\bin\java -jar winstone-0.9.6.jar --useJasper --webroot=.\webapp

これだけ。

起動。普通にデプロイされたみたいな感じ。

http://localhost:8080/

にアクセスしると、Teedaのサンプルコードが色々動くます。


ちなみに、起動がモノスゲェ速いかと言うと、そんなに早くも無いのかなぁ…。
只、体感速度には明らかなる差があるのは間違い無い感じ。
後、useJasper=trueで起動すると、明らかに遅くなるます。
特に最初の時点で何かJspコンパイルが走ったりしている訳ではナイケレド。
寧ろ、winstoneの起動が速すぎて、もしかしたらS2Containerの起動を遅く感じているのやも。


winstone-lite-0.9.6.jarにしてみると、動作が早くなった様に感じる。
winstone-liteだと、内部にServlet2.3とServlet2.2のDTDしか持って無いみたい。
つまり、Servlet2.4以降は、DTDじゃなくてXMLSchemaになるだもんで、
そのパースに時間がかかったりしてるのかな…。
全部入りとLiteの違いは、これですな。

The distribution jar is now available in two forms:
1. Complete version (winstone.jar): This contains the complete winstone feature-set, including AJP13 Apache connectors, Authentication/Realm support and Clustering support.
2. Lite version (winstone-lite.jar): This is the core winstone feature-set only, ie commonly used servlet features, as fast and reliable as possible, with unnecessary options removed.

つまり、フルバージョンでは、

  • AJP13のポートをバインドする
  • 認証の為のセキュリティレルムを扱う為の初期化コストがかかる
  • クラスタリングの為の機能がある

から、少しだけ遅くなりますよん。と、まぁそういう事らしい。
でも、実質的には、AJP13のポートバインディング以外は、
オプションをONにしない限りピクリとも動かないので、
Complete versionとLite versionの違いはTCPポートを一つ余分に掴むかどうかだけなんじゃないかなぁ…とか。
あ、でも、LiteバージョンだとSSLも効かないから、
やっぱりその初期化コスト分は早くなるですなぁ…。


要は、Servlet2.3までのweb.xmlで、開発にしか使わないなら、
winstone-lite-0.9.6.jarを使いなさい。
と、まぁ、そういう事です。