JavaでMySQLを操作する方法が分かったところで、今度はServletに挑戦しよう。前回の内容を理解していれば、Servletのコーディングは簡単だ。
ここからは本命である、「サーバサイドJava」といわれるServletの説明に移ります。とはいっても、基本操作はこれまでに解説してきたものと変わりません。
まずは、Servlet/JSPが動作する環境を構築します。Java Solutionの「JSPの実行環境を整える」に、Tomcatを使った環境構築方法が掲載されているので参考にしてください。「JSPの」とありますが、JSPが使える環境は必然的にServletも使えるようになっています。また、前掲の記事はRed Hat系を対象に書かれていますが、J2SDKのインストール以外はほかのLinuxディストリビューションでも同じように行えます。ではJ2SDKのインストールはどうすれば? ……Javaアプリケーションを実行する際にインストールしていますよね。
JSPの動作確認をするだけならTomcatをインストールしたディレクトリ(たいていは/usr/local/tomcat。以下$TOMCAT_HOME)のwebapps/examplesディレクトリにJSPファイルを作成するだけです。しかし、Servletを動作させるにはもう少し作業をする必要があります。
Tomcatの前身であるJServでは、Servletを用意されたディレクトリ以外で動作させるにはzoneの設定が必要でした。また、HTMLファイルやGIF、JPEGなどの画像ファイルはServletとは別のディレクトリにしなくてはならなかったため、トータルでコンテンツの管理をするには大変な苦労が伴いました。Tomcatではそのあたりを考慮し、問題を一挙に解決する手段としてContext pathが取り入れられています。Context pathは、任意のディレクトリをコンテンツを収めるトップディレクトリとし、その中に所定のディレクトリを作ることでJSP、Servlet、HTML、画像ファイルなど、Webコンテンツに必要なものを一元管理してしまおうというものです。
まず任意の場所にディレクトリを作成しましょう(例では「atmarkit」)。
$ mkdir atmarkit
作成したディレクトリ下に、さらにサブディレクトリを作成します。
$ mkdir atmarkit/WEB-INF $ mkdir atmarkit/WEB-INF/lib $ mkdir atmarkit/WEB-INF/classes
上記のatmarkitディレクトリを、以後は$WEBAPP/と表記します。
次にスーパーユーザーになり、$TOMCAT_HOME/conf/server.xmlを適当なエディタで開いて下記の行を追加します。
<Context path="/admin" docBase="webapps/admin" crossContext="true" debug="0" reloadable="true" trusted="false" > </Context> <Context path="/atmarkit" docBase="$WEBAPP" crossContext="false" debug="0" reloadable="true" > </Context>
注:$WEBAPPは、実際にはatmarkitディレクトリのフルパスに置き換えてください。
Context pathを追加したら、設定を反映させるためにTomcat→Apacheの順で再起動します。
# $TOMCAT_HOME/bin/tomcat.sh stop # $TOMCAT_HOME/bin/tomcat.sh start # apacheのディレクトリ/bin/apachectl restart # export JAVA_HOME="/usr/local/jdk1.3.1" (bash系の場合) # setenv JAVA_HOME /usr/local/jdk1.3.1 (csh系の場合)
注:tomcat.shの実行には$JAVA_HOMEが環境変数に加えられている必要があります。
Tomcat付属のドキュメントでは、上記の作業を「Webアプリケーションを追加する」と説明しています。つまり、サーバの動作や機構をひとくくりにしたWebアプリケーションではなく、単にサイトコンテンツの固まりを指してそう呼んでいます。
MySQLサーバへ接続するには、Javaアプリケーションと同様にJDBCドライバを適切にインストールする必要があります。Javaアプリケーションの場合はjavaコマンドの引数に-classpathを指定することでMM.MySQL JDBCドライバを使用できましたが、Tomcatでは所定のディレクトリにjarファイルを置くだけで自動的にclasspathの追加が行えます。Javaアプリケーションで使用したmysql.jarファイルを$WEBAPP/libにコピーします(コラム:classpathについて参照)。
一番手っ取り早くjarファイルを$CLASSPATHに追加する方法として、$JAVA_HOME/jre/lib/ext/へのコピーがあります。しかし、多くの先輩プログラマーの方はこの方法に否定的です。
例えば、あるAPIのバージョン1.0を想定して作成されたAというclassファイルがあります。ところが今回B.classの作成に当たり、必要に迫られてバージョン2.0を$JAVA_HOME/jre/lib/ext/にコピーしました。さてどうなるでしょう? B.classは何事もなく動作しますが、A.classは起動のたびに膨大な警告とエラーを吐いていることでしょう。
このように、プラットフォーム全体にかかわる$CLASSPATHの変更は慎重に行わなければならず、できるならおのおののclass実行時のみ有効になるように、「Webアプリケーションを追加」の方法を取ることをお勧めします。同様の理由で、$TOMCAT_HOME/libへのjarファイルのコピーも慎重に行いましょう。
Copyright © ITmedia, Inc. All Rights Reserved.