Topics & News
マピオンラボリニューアルしました。

Mapion マピオンラボ Java 超軽量サーブレットコンテナを使って開発スピードを上げる

超軽量サーブレットコンテナを使って開発スピードを上げる



  • 超軽量サーブレットコンテナです
  • 300kちょっとのjarのみです
  • 起動が速いので開発用サーブレットコンテナとして使えます
ちなみに起動は一瞬です。(1秒かからないかも)
対して、Glassfish V3は15秒くらいでしょうか。(V3はV2に比べて大幅に起動時間が短くなりましたが)

基本的な使い方
>java -jar winstone.jar --webroot=WebContent
※WebContent以下にclassファイルを格納したWEB-INF/classesがあることが前提

warを指定する場合
>java -jar winstone.jar --warfile=aaa.war
http://localhost:8080/がプロジェクトルートになります。
--prefix=プロジェクト名をつければ
http://localhost:8080/プロジェクト名がルートになります。


Mavenプロジェクトで使ってみる

Eclipse、Netbeans共、Mavenプロジェクトを開発する場合、IDEの機能だけでは不十分です。
そこで、IDEはエディタとして使い、ターミナルでmvn jetty:runを実行する方法がありますが、
どうせなら、Winstoneですばやく開発したいところです。

<Mavenを使う理由>
  1. CIツールで管理しやすい。
  2. テストが容易。
  3. FindBugs、Checkstyleなどのリポートを生成できる。
など

Eclipseの場合
  1. MavenプラグインでMavenプロジェクトを作成する
  2. プロジェクト名右クリック>プロパティ>ビルドパス>デフォルト出力フォルダを「プロジェクト名/src/main/webapp/WEB-INF/classes」にする
  3. 以下batファイルを作る(setting infoの部分は適宜変更)
@echo off

REM setting info -----------
set projectpath=C:\eclipse\workspace
set project=プロジェクト名
set winstone=C:\winstone.jar
set controlport=1255
REM --------------------

set projectroot=%projectpath%\%project%
set war=%projectroot%\target\%project%.war

java -cp %winstone% winstone.tools.WinstoneControl shutdown --host=localhost --port=%controlport% >NULL 2>&1
java -jar %winstone% --webroot=%projectroot%\src\main\webapp --prefix=/%project% --controlPort=%controlport%

これで、ソース修正>batファイル実行というサイクルで開発ができます。
batファイルはEclipse上から実行できます。(アプリケーションから開く>デフォルトエディタ、以後はダブルクリックでok)

※注意
ソース修正するとEclipseが自動でコンパイルします。
コンパイルが終了する前にbatファイルを実行してしまった場合はExceptionが吐かれます。
その場合は再度batファイルを実行してください。

Netbeansの場合
  1. MavenプラグインでMavenプロジェクトを作成する
  2. pom.xmlのproject>buildの子要素として<outputDirectory>${basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>を追加する
  3. 以下batファイルを作る(setting infoの部分は適宜変更)
@echo off

REM setting info -----------
set projectpath=C:\netbeans\NetBeansProjects
set project=プロジェクト名
set winstone=C:\winstone.jar
set controlport=1255
REM --------------------

set projectroot=%projectpath%\%project%
set war=%projectroot%\target\%project%.war
set pom=%projectroot%\pom.xml

java -cp %winstone% winstone.tools.WinstoneControl shutdown --host=localhost --port=%controlport% >NULL 2>&1
call mvn -f %pom% compile
java -jar %winstone% --webroot=%projectroot%\src\main\webapp --prefix=/%project% --controlPort=%controlport%

これで、ソース修正>batファイル実行というサイクルで開発ができます。
Eclipseと違うのは、ソースを修正しても自動でコンパイルしてくれないので、batファイル側でコンパイルを実行している点です。
なので、Eclipseの注意書きの現象は起こりません。

補足
Seaser系のフレームワークを使えばホットデプロイできますが、
フルスタックすぎるし、仕組みを知っていないと痛い目にあってしまうので。
(ClassCastException問題、シングルトンがシングルトンでなくなるとか)
comment
ニックネーム 
trackback

この記事のトラックバックURLhttp://labs.mapion.co.jp/mtos/mt-tb.cgi/58

Mashup Awards 7 (#MA7)
ユーザーアーカイブ