« ビリーズブートキャンプ | トップページ | Subversion + Apache2 »

2007年8月28日 (火)

Tomcat + WTP殿: 開発時に確認のたび毎回デプロイなんかしたくないっす!

Eclipse 3.2 + WTP + Tomcat5.5を使ってものを作っていて、ひとつ困ったことが起こった。

昔Tomcat4系+エディタなんかで、ごりごりと物を作っていた。当時はデプロイなんていう概念も知らず、JSPをいじって確認すると、その場でコンパイルが走って変更がブラウザから見える。PERLでCGIを作っているのと同じようなサクサクとしたターンアラウンドタイムでものがつくれていた。

それが、Tomcat5系になってからというもの話が変わった。なんだか、デフォルト設定だとJSPをいじっても反映されないだとか、勝手に再起動しちゃうなんていうことになり、いやだなぁということになったのだ。約2-3年前の話だ。

で、今ここにきてまた、なんだか似たような状況になって困ったのだ。

AJAXなものづくりってことで、JavaScriptをかなり本格的に使っている。ただ、サーバサイドはJava+DBなので、WTP+Tomcat5.5なんていう環境でものをつくっていたわけだ。それが設定をいじっているうちに、JavaScriptをちょこっといじっただけで、

  1. 勝手にサーバ再起動されるか、
  2. 書き換えたJSが反映されないか

という究極の選択状態になってしまったのだ。 もちろんやりたいのは、以下である。

  1. JSを書き換えたら、サーバ再起動せずに確認できる。

これは、本当に困る。というかストレスがたまりまくる。というか、眠くなる。。というわけで、解決せねばということでいろいろ調べて、考えて、結局以下のようにしてとりあえず問題を解決したのでこれを記しておく。

  1. Eclipse 上、Serversプロジェクトからみえるserver.xmlの中のContext要素を書き換える。
  2. DocBase属性に、ワークスペース上プロジェクトの絶対パスを書き、
  3. source属性はばっさり削除
  4. reloadable属性はtrue
  5. サーバの設定としては、Run directly from workspece チェックをはずし
  6. automatic Publishingは never publish automatically を選択。

あれこれ試行錯誤して、上記で動いたということなのだが、なぜこれでそうなるのか、これがやるべき方法なのかはよくわからない。

少なくとも、WTPにはpublishという概念があるようで、これはつまり内部的にデプロイしているってことのように見える。ワークスペースの .metadata/.plugins/org.eclipse.wst.server.core/の中にpublish関連のいろいろな設定XMLがあって、そこのtmp/の中にpublishされたものが入っていた気がする。

デプロイされたものを確認するというプロセスだとどうしても開発時(特にフロントの開発)にはターンアラウンドタイムが長くなる。だから、自分的要件としては、デプロイせずに、編集しているワークスペース上のファイルをそのまま動かす必要があったわけだ。

まあ、今思えばわかりやすくクリアーな要件で「そうすりゃいいじゃん」なわけだけど、上記要件を認識するまでに結構時間がかかってしまった。今は普通にこう思う「デプロイして確認なんてやってられっか!」(少なくとも、クラスロード時に、いろいろhibernateの設定とか読み込んで時間がかかるシステムのフロント部分をいじっているときは)

あと、server.xmlのContext要素の関する以下情報は覚えておこうとおもう。

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

http://www.limy.org/program/tomcat/server_xml5_5.html

docBase属性 アプリルートディレクトリ(またはwarファイル)の指定。 絶対パスか、外側のHost要素appBase属性からの相対パスで指定する。
reloadable属性 Set to true if you want Catalina to monitor classes in /WEB-INF/classes/ and /WEB-INF/lib for changes, and automatically reload the web application if a change is detected.


削除したsource属性は何なのかは謎(上記に書いてない)。 WTPで普通に設定すると、org.eclipse.jst.j2ee.server:[プロジェクト名]という文字列が入っていた。

想像するに、Eclipse WTPがGUI側での設定を反映する上での紐付けのために勝手につけている「勝手属性」なんじゃないかと思う。

debug属性というのも設定可能なように見えたが、これはTomcatの出力するログレベルを変えるための属性のようで、関係なかった。しかも、5.5以降ではそんなものを指定してもしょうがないようだ。(log4Jで制御)

« ビリーズブートキャンプ | トップページ | Subversion + Apache2 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/34023/16267015

この記事へのトラックバック一覧です: Tomcat + WTP殿: 開発時に確認のたび毎回デプロイなんかしたくないっす!:

« ビリーズブートキャンプ | トップページ | Subversion + Apache2 »

Haruya's Violin

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

最近のトラックバック

無料ブログはココログ