HOME: 開発日記
WikiのJSP&Servlet実装であるMobWikiをEclipseプロジェクトにしてみようと思う。ちなみに私、JSP初心者です。
今回の環境。
TomcatとTomcatプラグインはずっと前に導入済みなので今回は割愛。
実は金曜日に済ませる予定だったが、Mobster Projectさんのサーバにつながりにくい状態だったので日を改めた。 そういえば、ADSLを導入してからというもの、定額で快適な環境のおかげで文書や圧縮ファイルのローカルコピーを持つ習慣が無くなったと思う。 コピーする手間が省けて楽にはなったものの、サーバの調子が悪いときは資料を参照できずに支障が出るというリスクもあるわけだ。 本当に無いと困るものはコピーしてあるのだが。
mobwiki_1.1.2.zipをダウンロードし、wiki.warをTomcatのwebappsディレクトリに移動するだけで自動的に展開される。 あとはブラウザでhttp://localhost:8080/wiki/index.jspにアクセスするとMobWikiのFrontPageが表示される。まあなんと簡単なんでしょう。
TomcatプラグインによるTomcatプロジェクトをmobwiki_1.1.2フォルダを指定して作成する。
mobwiki_1.1.2のsrc、libをEclipseが作成したWEB-INFの中に移動する。 これに合わせてAntのビルドファイルbuild.xml内のsrc、libへのパスを書き換えておく。
プロジェクトフォルダの右クリックでプロパティを開き、[Javaのビルドパス]-[ライブラリー]でWEB-INF内のjarを追加する。 これによって大部分のエラーが消えるが、不要なimportに対しての警告がいくつか残る。
このままでも良いのだが、タスクビューで警告をダブルクリックしてソースを開き、Shift+Ctrl+Oでimportを再編成すると警告は消える。
これで一応プロジェクトのエラーは消えたのだが、大切なものが欠けている。画像やスタイルシートだ。
wiki.warから次のファイルやフォルダを取り出してプロジェクトフォルダに移動する。
jar xvfでもZIPをサポートした解凍ツールでも良いが、ZIPフォルダやVECAが便利。
これでファイルがそろったが、JSPなのでサーバに配備しないと動作しない。 ここはやはり自動的にwarを作成してなおかつサーバにインストールされるようにしたい。
プロジェクトフォルダを右クリックし、 [Tomcatプロジェクト]-[プロジェクトの設定に従いWARファイルを作成する]という項目があるので試してみる。
設定はプロジェクトのプロパティーを開き、[Tomcat]-[全般]-[エキスポートするWARファイル]で出力先を設定できるだけである。なんか嫌な予感が。
これで作ったwarはプロジェクトフォルダ内のほとんどすべてのファイルが含まれている。 build.xmlやREADMEも入ってしまう。 開発中はこれでもいいかもしれないが、配布を考えたとき、これはあまり美しくないかも。
何か良い方法は無いかと探したら、resources.propertiesのproject.warExport.exclude.filesにwarに入れたくないファイルを並べるといいらしい(releaseNotesV21.txtより)。
だが、このresources.propertiesはプラグインフォルダのtomcat.jarの中にある。これではだめだ。
そうだ、Antがあるじゃないか!
ただし、同梱のbuild.xmlにはwarを作ってサーバに配備するターゲットが無いので自分で用意することになった。
<property name="war.name" value="mobwiki.war"/> <property name="war.dest" value="webappsへのパス${war.name}"/> <target name="war" description="warの作成"> <delete file="${war.name}"/> <war destfile="${war.name}" webxml="WEB-INF/web.xml"> <!-- <classes dir="WEB-INF/classes"/> <lib dir="WEB-INF/lib"/> --> <webinf dir="WEB-INF"> <exclude name="web.xml"/> <exclude name="src/**"/> <exclude name="lib/servlet.jar"/> </webinf> <fileset dir="."> <include name="css/**"/> <include name="images/**"/> <include name="upload/**"/> <include name="*.jsp"/> </fileset> </war> </target> <target name="war-export" description="warをTomcatに配置"> <move overwrite="true" file="${war.name}" tofile="${war.dest}"/> </target>
上のソースは追加した部分のみ。<exclude>で必要の無いファイルを除外した。
ちなみにservlet.jarはwarに入れるとTomcatが「そのクラスは上書きできないよ」と警告を出すので除外した。
WebappClassLoader: validateJarFile(C:\Program Files\Apache Group\Tomcat 4.1\webapps\wiki\WEB-INF\lib\servlet.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
libディレクトリにいくつかあるjarの機能を調べてみた。
transformとtagはWikiのマークアップをHTMLに変換するパッケージ。
7つあるJSPファイルのうち、リクエストを受け付けるファイルは4つ。
MobWikiは私も内部を知っているYukiWikiを参考にJSP&Servletで実装されているということで読みやすかった。 YukiWikiをJavaで書くとこうなるんだなぁとか、いろいろと興味深いものがあった(のでここに書いた以上に詳しく読んでいたりする)。
Wiki自体が単純だし、なじみ深いものだからJSP入門としては良い題材ではないだろうか。
HOME: 開発日記
by Takayuki, 2003.