目次へ

NetBeans4で古猫を飼う

NetBeans4に登録できるWebサーバはTomcat5だけだ。だがやっぱりTomcat4用のアプリを開発したいと思う人は案外多いみたいだ。我々には必殺のAntがある。コイツでなんとか,少しでもTomcat4を便利に使えるようにしたい。ということでガンバってみました。上から下への書き下ろし形式だヨ。


Tomcat4をインストールする

ま,通常通りのインストールだ。しかしJakartaさんて,古いアーカイブ全然置いてないんじゃないですかッ!?それともどこかに隠してあるんですかッ!?それにくらべるとJ2SEは,java.sun.comにえらく昔のアーカイブから細かいバージョンがたくさん置いてあるゾッ。やっぱりカネないんですかオープンソースはッ?

いずれにしろWindowsにTomcat4.1.18をマイソース置き場からインストールした。もちろんダセえ空白パスなどには置かず(マイエスキューエル子ちゃんいつぞやはゴメ〜ヌ!元気してるかな:業務連絡)c:¥tomcat4118というディレクトリにインストールした。


フツーのWeb Applicationプロジェクトを作る

次にNB4側だ。メニューバーから「New」->「New Project」を選び,新規プロジェクトとしてフツーの「Web Application」を作成する。プロジェクトの名前はcat4trial, 場所はどこでもオッケーよ。たとえばc:¥nonidata¥nbrc4worksの中に作っちゃうとか。


project.propertiesを書き換える

TomcatにWebアプリケーションをインストールする方法。その一番カンタンな方法は,webappsフォルダに,Webアプリケーションに必要な構造を備えたフォルダを放り込むことだ。NetBeans4のWebプロジェクトの「Web Pages」ノードの中味が,放り込むべきそれに相当する。
このWebプロジェクトを「Build」するとナニが起こるか。「Web Pages」の中味がそっくり同じプロジェクト内のbuild/webフォルダにコピーするのだ。そしてフツーなら内蔵Tomcat5,もしくは新たに登録したTomcat5に,このbuild/webフォルダにあるものの情報が送られてアプリケーションとして認識されるという仕掛けなのだ。

しかし,我々は,NB4がソースファイルの位置だけでなくコンパイル生成物の出力先までも自由に変えられるということを知っている。「Project」ウィンドウから「Files」ウィンドウに切り替え,nbproject/project.propertiesを開く。Webプロジェクトの場合,ココを書き換えればよいだろう。

build.web.dir=${build.dir}/web

これを

build.web.dir=${tomcat4.home}/webapps/cat4trial

にする。ここで,tomcat4.home=/tomcat4118 と,同じproject.propertiesファイルに書いておく。これで,Webプロジェクトに対して「Build Project」すると,Webモジュールの中味は全部Tomcat4のwebappsフォルダの中に送られるというワケ。


蟻で猫を起こす

「Runtime」ウィンドウでグラフィカルに起動・終了及びWebアプリケーションの管理が行えるのはTomcat5だけである。ためしに知らん顔でTomcat4を登録してみたらやっぱり失敗した。

Bundled Tomcatのファイルをいじって,CATALINA_HOMEをc:¥tomcat4118に書き換えておいて,RuntimeウィンドウからBundled Tomcatを起動すればだまされてc:¥tomcat4118が立ち上がってくれるかと思ったが,そうカンタンにだまされてはくれなかった。

そこでbuild.xmlにこのような記述を追加した。

<target name="startcat4" depends="initnew">

<exec executable="c:¥tomcat4118¥bin¥startup.bat">
<env key="CATALINA_HOME" value="c:¥tomcat4118"/>
<env key="CATALINA_BASE" value="c:¥tomcat4118"/>

</exec>
</target>

ここで,ターゲット「initnew」は,最初の部分に

<target name="initnew" depends="init"/>

と定義しておく。

なぜなら,NetBeans4のプロジェクトのbuild.xmlで動かすべき大事なトコは,すべてbuild-impl.xmlに退避させられている。このbuild-impl.xmlを勝手にいじるとNBのシニアーズからお叱りを受けるほどだ。このbuild-impl.xmlに書かれているターゲットは,みんな細かい初期化に依存している。その初期化がオールセットになっているターゲットがinitで,それをただここで呼び出してみた,というだけのことだ。

このstartcat4を立ち上げるには「Files」ウィンドウに切り替える。このWebプロジェクト(cat4trialというプロジェクト名だ)の「build.xml」ノードを開いて,ターゲットのノード群の中から「startcat4」ノードを右クリックして「Run Target」とやれば,Tomcat4が立ち上がる。

同様,Tomcat4を落とすターゲットも作った。

<target name="stopcat4" depends="initnew">

<exec executable="c:¥tomcat4118¥bin¥shutdown.bat">
<env key="CATALINA_HOME" value="c:¥tomcat4118"/>
<env key="CATALINA_BASE" value="c:¥tomcat4118"/>

</exec>
</target>


蟻で狐を起こす

次は,Webブラウザを立ち上げるための記述だ。execタスクを呼べばよい。同時に,特定のURLにアクセスするならこのようになる。

<exec executable="${browser.exe}">
<arg value="http://localhost:8080/cat4trial/index.jsp"/>
</exec>

ここで,browser.exe=/Program Files/Mozilla Firefox/firefox.exe であり(て別にIEちゃんでもいんだけど),これもproject.propertiesファイルに書いておく。

かし,これでは,スクリプト中に記述したページ(ここではindex.jsp)しか上げられない。他のページやサーブレットを上げようと思ったら,スクリプト自体を書き換える必要がある。これではあまりグラフィカルでない。

で,このようにした。

<target name="run" depends="initnew">

<exec executable="${browser.exe}">
<arg value="http://localhost:8080/cat4trial/${client.urlPart}"/>
</exec>

</target>

このターゲットrunは,恐れ多くもこのプロジェクトを右クリして「Run Project」を選んだときに走るようにNB4で設定してあるものだ。どこでこの操作とこのターゲットを関連付けているのかは未熟者のワタシにはよくわからぬ。二流SF映画のように「この装置はそう設定されているんだ」と言うしかない。
build-impl.xmlには手をつけてはいけない,とさきほど書いた。しかし,build-impl.xmlに書かれたターゲットと同じ名前でbuild.xmlにその定義をすれば,それはオーバーライドされる。ここでは,恐れ多くもそんな根幹的なターゲットをオーバーライドしてしまったのだ。

この${client.urlPart}というのがちょっといい感じだ。これはWebプロジェクトのプロパティウィンドウで設定できる「Relative URL」の内容なのだ。

だから,ここで設定すれば,ビルドファイルをいちいち修正しなくても,ブラウザの起動と同時にお好みのページにアクセスできるんダ!

でも,プロジェクトのビルドと,Tomcat4の起動をやっておかないといけないヨ。


猫ターゲットをNetBeansのメニューバーに置く

いけないヨ,ってやろうとすると実は非常にめんどくさい。なぜならbuild.xmlとそのターゲットには「Project」ウィンドウからはアクセスできない。「Files」ウィンドウに切り替えないとダメだ。だが,上記の「Run Project」メニューは,「Project」ウィンドウからでないと選べない。猫の起動とブラウザの起動をいちいちウィンドウを切り替えて行うというのはめんどくさい。

めんどくさいものはIDEにあらずッ

というわけで,もっとめんどくさくなくしよう。

実はこんな面白い右クリメニューがある。

startcat4ターゲットについて,これをやってみる。するとウィザードが立ち上がるんダ。

まず,「このショートカットをどこに置くか」というので,「メニューアイテム」においてみる。するとどこのメニューの下に置くか,ときかれるので,「Run」の下に置くことにする。

するとどーだッ!メニューバーにこげなものが

これでウィンドウを切り替えずに猫を上げたりおろしたりブラウザを上げたりおろしたりできるようになった。

では,「Start Tomcat4」をメニューから選択します。
Webプロジェクト「cat4trial」に適当なJSPページやサーブレットを,追加したり編集したりして,「Build Project」します。
そして,プロジェクト「cat4trial 」のプロパティを出して,スタート時のURLを指定します。
さあ,「Run Project」をかけてみよう(かけて・・・)。

みなさん,ちゃんと目的のURLにアクセスできましたか?動いているのはTomcat4であることも確認できましたか?のに子はできたゾ!「サーブレットのエラーです ; がありません  Tomcat4.1.18」て画面が見れたモーン!!