Mapion マピオンラボ Java 超軽量サーブレットコンテナを使って開発スピードを上げる
Follow @honjo2
warを指定する場合
- 超軽量サーブレットコンテナです
- 300kちょっとのjarのみです
- 起動が速いので開発用サーブレットコンテナとして使えます
ちなみに起動は一瞬です。(1秒かからないかも)対して、Glassfish V3は15秒くらいでしょうか。(V3はV2に比べて大幅に起動時間が短くなりましたが)
基本的な使い方
>java -jar winstone.jar --webroot=WebContent
※WebContent以下にclassファイルを格納したWEB-INF/classesがあることが前提
>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を使う理由>
- CIツールで管理しやすい。
- テストが容易。
- FindBugs、Checkstyleなどのリポートを生成できる。
など
Eclipseの場合
- MavenプラグインでMavenプロジェクトを作成する
- プロジェクト名右クリック>プロパティ>ビルドパス>デフォルト出力フォルダを「プロジェクト名/src/main/webapp/WEB-INF/classes」にする
- 以下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の場合
- MavenプラグインでMavenプロジェクトを作成する
- pom.xmlのproject>buildの子要素として<outputDirectory>${basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>を追加する
- 以下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問題、シングルトンがシングルトンでなくなるとか)

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





