Eclipse WTP Tomcat hot deploy

元ネタ http://ducquoc.wordpress.com/2010/11/06/eclipse-wtp-tomcat-hot-deploy/

EclipseでWebプロジェクトを作るときはWTPを使っています。tomcatプラグインなんてのもありますが、mavenでのライブラリ管理と相性がイマイチなので最近はもっぱらWTPです。

んでデフォルトままWTPにアプリケーションデプロイすると、tomcatのserver.xml

<Context docBase="appname" path="/appname" reloadable="true" source="org.eclipse.jst.j2ee.server:network-application"/></Host>

のような設定でデプロイされます。reloadable="true"とかあるのでクラスファイルに変更があったりするとtomcatが再読み込みを行ってくれます。

一見便利そうなのですが、これがなかなかの曲者で、クラスファイルの変更を検知しなかったり、再読込を繰り返しているうちにtomcatがフリーズしたりとなかなか安定して動いてくれません。reloadable="false"にすればとりあえず安定して動くものの、クラスファイルを変更したら自分でtomcatを再起動しなくてはいけなくなるので、これはコレで面倒くさくなります。

http://ducquoc.wordpress.com/2010/11/06/eclipse-wtp-tomcat-hot-deploy/ の話です。簡単に言うとWTPTomcat使ってて、ホットデプロイさせる何かです。まだ私も使い始めただけなのでわかりませんが、今のところ安定して動きます。

やりかたは普通に一度アプリケーションをデプロイしてからServerビューを開く。
f:id:yamkazu:20110327164931j:image
起動中のサーバをダブルクリック。

f:id:yamkazu:20110327164930j:image
そうすると設定画面が開くので[Modules]タブを選択して、デプロイしたアプリケーションを選択して[Edit]。

f:id:yamkazu:20110327164932j:image
[auto reloading enabled]のチェックを外す。外したら設定を保存。

f:id:yamkazu:20110327164933j:image
そしてらデバッグモードでサーバを再起動。デバッグモードで起動するとHotSwapが有効になるからということらしい(このへんの仕組みはまだよくわかってない)。

ともあれでコレでホットデプロイな環境でサクサク開発できそうです。