注意:TOMCATをインストールする前に、Java2 SDK SEをインストールしておいてください。Java2 SDK SEは
http://java.sun.com/j2se/1.5.0/ja/download.html にあります。ここから「JDK のダウンロード」を選択します。次の画面からは英語ですが、下にある「ACCEPT」をチェックしてボタンを押してください。次にダウンロードするファイルを選択する画面に移ります。ここでは「Windows Offline Installation, Multi-language」を選んでおけばいいでしょう。
なおTOMCAT55.5からはJ2SDK 5.0対応になっています。ただしJ2SDK 1.4.2で動作させることも可能です。この場合の追加設定は、TOMCAT本体のダウンロードとインストールのところで説明しています。
Java2 SDK SEインストール後、環境変数 %JAVA_HOME% に、Java2 SDK SEのホームディレクトリを指すパスを設定しておいてください。
環境変数はWindows2000の場合、「設定」−「コントロールパネル」−「システム」を選択し、「詳細」タブを選択します。「環境変数」ボタンを押し、「システム環境変数」のほうに変数と値を設定します。
SET JAVA_HOME=C:\Java\jdk1.5.0_05
という行を入れておいてください(パスは各自のインストール環境に合わせてください。これはデフォルトの場合です)。
TOMCATの最新版は、http://tomcat.apache.org/download-55.cgi にあります。TOMCATの最新版は5系列の5.5.12ですが、これの正式リリースのタイミングでTOMCATの位置付けが変わりました。以前はapacheのjakartaプロジェクト内のTOMCATサブプロジェクトでしたが、apache直下のTOMCATプロジェクトに格上げになりました。
ここにあるTOMCAT5.5.nnのところの、Windows Executable のリンクから落とせばいいでしょう(JDKが5.0以上であることが前提になります)。この5.5.nnのnnは修正版が出るたびに増えていき、2005年10月20日現在では5.1.12があります。
J2SDK 1.4で動作させるときは、 JDK 1.4 Compatability Package からzipファイル(apache-tomcat-5.5.12-compat.zip)も落としておいてください。
落としてきた.exeファイルを実行すれば、インストールが開始されます。
後は画面の指示に従っていけば問題ないと思います。最初に「コンポーネントの選択」(Choose Components)の指定画面が出てきます。
ここでは「Examples」のチェックを付けておきましょう。設定については後ほど説明しますが、JSPでクライアントからのリクエストを受ける際の文字化け対策の関係です。この対策として「リクエストに一括してFilterをかけ、文字コードを変換する」という方法があります。そのときに使うFilter定義(Javaプログラムですが)は、この「Examples」をチェックしておかないとインストールされません。
さらにこの指定画面で「TOMCAT」の左側の「+」の部分をクリックするとより細かいオプションが指定できます(下の図がその状態です)。
OSがWinNT、Win2000、WinXPの場合、デフォルトではTOMCATは「サービス」としてインストールされます。またTOMCAT4.1のときとは異なり、「スタートアップの種類」は「手動」となっています。
ここでデフォルトのまま「Service」のチェックを外しておけば、TOMCATは手動起動のサービスになります。チェックを付けると自動起動のサービス(OS起動時に自動的に起動される)となります。あとからこの状態を変えたい場合は、インストール後に「コントロールパネル」−「管理ツール」−「サービス」と進み、「スタートアップの種類」を「自動」や「手動」にするか、後述する「Configure Tomcat」の「General」タブの画面で、「Startup type」を「Manual」や「Automatic」にすることで変更できます。
次にインストール先のディレクトリを指定する画面に移ります。
これもインストール先をデフォルトから変えたくなければ、そのまま先に進んでください(サンプル画面では変更しています、念のため)。
それからTOMCATに接続する際のポート番号と、TOMCATの管理者ユーザー名・パスワードを指定する画面に移ります。
実際に業務運用をすることを考えた場合は当然ながら、管理者ユーザー名はデフォルトから変更し、パスワードもきちんと設定すべきです。
ですがここはお勉強環境構築の説明なので、面倒だしこのままでいいと思います。
変更した場合はくれぐれも、このユーザー名とパスワードを忘れることの無いようにしてください。
最後にJavaのVM(Virtual Machine)がインストールされているパスを聞いてきます。
ここではレジストリの内容が参照されて表示されるので、そのまま先に進めばインストールは完了です。
Java実行環境のいくつかのバージョンがインストールされていて切り替えたいときなどは、どのJREを使うかを明示的に指定してください。
またJava実行環境がJ2SDK 1.4の場合でも、ここでは次のように普通に表示され、インストールも続行できます。
ここではレジストリの内容が参照されて表示されるので、そのまま先に進めばインストールは完了です。
以上でインストールが完了です。インストーラが終了するときに、このまま TOMCAT を起動するか聞いてきます。
このままインストール後の動作確認を行いたいので、Run Apache Tomcatのチェックは残しておきましょう。
■J2SDK 1.4で動かすときの追加設定
J2SDK 5を使っている人はここは飛ばしてください。
J2SDK 1.4でTOMCAT 5.5を動かす場合は、本体と一緒に落としてきたモジュールを、TOMCAT5.5をインストールしたディレクトリに組み込む必要があります。そのためRun Apache Tomcatのチェックは外してそのまま起動することのないようにしておいてください。
まず落としてきた apache-tomcat-5.5.12-compat.zip をどこかに展開してください。中は次のようなディレクトリ構成になってます。
それぞれのディレクトリ内の全ファイルを、TOMCATインストールディレクトリの同名ディレクトリにコピーしてください。これでJ2SDK 1.4環境でもTOMCAT5.5が動くようになります。
そうしたら動作確認をするため、先に「■起動と停止」の説明を見てTOMCATを起動しておいてください。
■動作確認
メッセージに従って答えていくとインストールが終わり、最後にTOMCATサービスが起動されるはずです(上の画面でチェックを消していないとき)。
そうしたらブラウザを立ち上げ、アドレスに http://localhost:8080/index.jsp と入れてください(TOMCATと同じPCで確認する場合)。別のPCから確認するには localhost のところに、TOMCATをインストールしたPCのIPアドレスを指定して下さい(例: http://192.168.0.100:8080/index.jsp )。
そうするとTOMCATのExamplesの先頭ページが表示されます。
あとは左側の下のほうに JSP Examples や Servlet Examples というリンクがあるので、ここをクリックしてJSPやServletの例が動くことを確認しましょう(これはインストール時にコンポーネントの選択で「Examples」をチェックしてあるときに可能です)。
ここまででインストールは完了です。
インストール完了後、環境変数 %CATALINA_HOME% に、TOMCATのホームディレクトリを指すパスを設定しておいてください。
JavaとTOMCATの環境変数の設定は、たとえばこんな感じです(注:当然ながらドライブ名やパスは各自のインストール環境によって変わるので、まるごと真似しないように)。
TOMCATの起動と停止方法はインストール時に、自動起動サービスとするか手動起動サービスとするかによって変わります。自動起動にしてあるとOS起動時に自動的に起動されるので、停止後の再起動以外は特に起動の操作は必要ありません。
起動・停止方法は主に次の3種類あります。
◇コントロールパネルから操作
この場合はWindows2000環境を例に説明します。
標準ではTOMCATはサービスに登録され、かつサービスのプロパティで「スタートアップの種類」は「手動」になります。この場合はOSを起動しただけではTOMCATは起動されません。
この状態を変えるには、「スタート」ボタンから「設定」−「コントロールパネル」−「管理ツール」−「サービス」と進みます。そうすると次のような画面が表示されます。
そしてApache Tomcatを選択した状態で、メニューの「操作」もしくはマウスの右ボタンをクリックして「プロパティ」を選択します。表示されるダイアログの「全般」タブの中に「スタートアップの種類」があるので、これを「自動」にしてください。そうするとOS起動時にTOMCATも自動起動されるようになります。
TOMCATを手動で起動する場合も停止する場合も、この「サービス」の画面で行えます。
起動のときはApache Tomcatを選択した状態で、メニューの「操作」から「開始」を選択、もしくは右向き黒三角のアイコンをクリックしてください。
停止のときはApache Tomcatを選択した状態で、メニューの「操作」から「停止」を選択、もしくは■のアイコンをクリックしてください。
◇コマンドラインから操作
あるいはコマンドプロンプトの画面を開いて(「スタート」ボタンから「ファイル名を指定して実行」と進み、cmd を実行する)、
net start "apache tomcat"
とすると起動され、
net stop "apache tomcat"
で停止できます。MySQL等も動かしているときはこちらの方が楽だと思います。
◇Configure Tomcatの画面から操作
TOMCATと一緒にインストールされる設定ツールから起動・停止を行う方法です。サービスの「スタートアップの種類」もこのツールで変更できます。
「スタート」ボタンから「プログラム」−「Apache Tomcat 5.5」−「Configure Tomcat」と進むと次の画面が表示されます。
ここで「Startup Type」を変えることにより、自動起動・手動起動を切り替えられます。
下のほうの「Service Status」にTOMCATが停止中か起動中か表示されていて、この状態に合わせてその下のボタン、「Start」や「Stop」が使用可能になっています。ここで起動・停止・再起動などが行えます。
この「Configure Tomcat」に似たものに「Monitor Tomcat」があります。「スタート」ボタンから「プログラム」−「Apache Tomcat 5.5」−「Monitor Tomcat」と進むとこれが起動され、タスクトレイにこのような アイコンが入ります(これはTOMCATが稼動中です。停止中だと中の緑の部分が赤く変わります)。このアイコンを右ボタンクリックすると出るメニューから「Start service」または「Stop service」を選ぶことによって、TOMCATの起動・停止が行えます。
なお「Configure Tomcat」や「Monitor Tomcat」を起動しようとしたら「An instance of 'TOMCAT5' application is already running」というメッセージが出て出来ない場合、タスクマネージャを開いてプロセス一覧を表示し、tomcat5w.exeというプロセスを「プロセスの終了」で終了させてください。
※ 本来の(TOMCATの設定変更をするなどの)起動・停止以外でも、例えばJSPやサーブレットのJavaプログラムがループしてしまった場合にもTOMCATを一度停止することになります。
以下の設定を行った後は、必ずTOMCATの停止と再起動を行ってください。それが設定内容を反映させる一番確実な方法です。
なお■アプリケーション用ディレクトリ作成 は必須ですが、それ以降はTOMCATを起動した状態でスタートメニューの「Apache Tomcat 5.5」−「Tomcat Administoration」からも行えます。これはTOMCATが持っているWebベースの設定画面なんですが、これについてはしばらく説明しません。画面で行った設定情報が、どの設定ファイルに反映されるか把握しておきましょう。
「Tomcat Administoration」を使った設定は、ここのページでは説明しないかもしれません。画面イメージを編集して貼り付けて、という作業が面倒なんです (- -;
これについて詳しく知りたい人はググるなりヤフるなりして別のサイトを探してみてください。きっと見つかります。
一つだけこのツールに関する注意点を述べておきます。各種設定後「Save」ボタンを押すと画面で指定した内容が反映されますが、それは一時的なものです。稼動中のTOMCATサービス内では変更内容が活きますが、TOMCATを再起動したしたときには設定変更前に戻ってしまうようです。
画面上部にある「Commit Changes」というボタンを押すと初めて設定ファイル上に反映され、次回TOMCAT起動時にも反映されます。
■アプリケーション用ディレクトリ作成
%CATALINA_HOME%\webappsの下に、自分のアプリケーション用ディレクトリを作成します(このページの例ではTestAp)。
その下にサーブレット用のディレクトリを作成します。WEB-INFというディレクトリを作成してください。
(注意:ディレクトリ名をつけるとき大文字にしてください)。
さらにその下に、classesというディレクトリを作成します。
それからWEB-INFの下にもう一つ、libというディレクトリを作成します。
この、%CATALINA_HOME%\webapps\TestApがJSPファイルを格納する場所で、%CATALINA_HOME%\webapps\TestAp\WEB-INF\classesがサーブレットファイル(Javaソースをコンパイルして出来る、.classファイル)を格納する場所になります(デフォルトの場合)。
%CATALINA_HOME%\webapps\TestAp\WEB-INF\libはJAR(Java ARchive)ファイルという、.classファイルをまとめて圧縮したファイルを置く場所になります。
なおWEB-INF\classesとWEB-INF\libに同名ファイルがある場合、つまりclasses下の、ある.classファイルと同名のファイルを圧縮したものを含む.jarファイルがlib下にも存在する場合、.classファイルが優先されます。先にclassesディレクトリを検索し、見つからない場合にlibディレクトリの各JARファイルの中を検索する、という順番です。
それからJavaでパッケージ機能を利用する場合はTestApディレクトリの下に、さらにパッケージ名に対応したディレクトリを作成する必要があります。ただしパッケージについて、上に述べたJARファイルを利用する場合はこの限りではありません。
(これらについてはJavaプログラムとの兼ね合いがあるので、「Java超入門編(1から3くらいまで) 」のパッケージに関する説明とJARに関する説明を参照してください)。
上の説明でTestApという、自分のアプリケーション用ディレクトリを作成しました。これが自分用の実行環境、コンテキスト(Context)になります。次に行う作業はTOMCAT設定ファイル上に、このコンテキストに関する情報を定義する作業です。
TOMCAT4.1のときはコンテキストの定義は%CATALINA_HOME%\conf\server.xmlに対して行いましたが、TOMCAT55ではこれが変わります。コンテキスト設定に4種類あるので、まずはそれらを大雑把に説明します。
(1) %CATALINA_HOME%\conf\にContext.xmlを作成
全てのアプリケーションのデフォルトコンテキストになります。
(2) %CATALINA_HOME%\conf\Catalina\localhostにContext.xmlを作成
上のディレクトリはデフォルトのままの場合です。localhost、つまりTOMCATをインストールしたPC上の全てのアプリケーションのデフォルトコンテキストになります。
(3) %CATALINA_HOME%\conf\Catalina\localhostにTestAp.xmlを作成
上のディレクトリはデフォルトのままの場合です。アプリケーション用ディレクトリをいくつか作る場合、つまりコンテキストをいくつか作るときに、アプリケーション毎にコンテキスト設定を分ける方法です。
(4) %CATALINA_HOME%\webapps\TestAp\META-INF \にContext.xmlを作成
アプリケーション用ディレクトリにMETA-INFというディレクトリを作成し、そこにContext.xmlを作成する方法です。上の(1)〜(3)でTestApが定義されていないとき、ここを見に行きます。JavaプログラムをTOMCATに配備(デプロイ)するときに、warファイルというものを作って行う方法があります。その場合、コンテキスト定義も一緒に配備出来るので便利かもしれません。
(1)と(2)の違いですが、(1)は自分では試していません。別のPCにインストールしたTOMCATと連携させるときに(1)の方法を使う気がします。
ここでは(3)の方法、%CATALINA_HOME%\conf\Catalina\localhostの下にTestAp.xmlというファイルを作成し、ここにコンテキストの情報を定義します。
内容は以下のとおりでいいでしょう。
ContextタグのworkDirパラメータ指定は無くても動きましたが、明示的に指定しましょう。例示しているのはTOMCAT55のデフォルトの内容です。JSPを実行するとき自動的にサーブレットに変換されます。この変換されたサーブレットソースとそのコンパイル結果が保存される場所が、このworkDirパラメータで指定した場所になります(%CATALINA_HOME%\work\Catalina\localhost\TestAp下です)。
Valveタグの指定は無くてもいいんですが、あった方が自分の実行環境用にログが別ファイルに分かれて出てくるんで、後で見やすいと思います。
ログファイルは%CATALINA_HOME%\logs下に出力されます。
特に開発中やテスト中は、reloadableは"true"にしておいて下さい。
サーブレットファイルは一度ロードされるとメモリ中のモジュールが使いまわされるんですが、これを"true"にしておくとコンパイル後の新しいclassファイルをコピーすれば、reloadされて新しいのが動きます。逆に"false"だと新しいclassファイルをコピーしても、メモリ中にロード済みのものがあればそれが使われるので、新しいのは再ロードされません。
TestAp.xmlの内容
<?xml version="1.0" encoding="Windows-31J"?>
<Context crossContext="true" docBase="TestAp" path="/TestAp" reloadable="true"
workDir="work\Catalina\localhost\TestAp">
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="localhost_TestAp_log." suffix=".txt" pattern="common"/>
</Context>
各自用の実行環境(コンテキスト)を作るだけなら、TOMCAT55では先のTestAp.xml作成だけでいいのですが、JSPの文字化け対策としてserver.xmlにも修正が必要です。JSPの文字化け対策は下のweb.xmlでの指定と対になります。
HTMLのフォームデータの送信方法にはgetとpostがあるのですが、getのときはサーバーに送られるURL中にこのパラメータが含まれます。TOMCAT4.1.29からこのパラメータのエンコードが厳密になり、URLはエンコードしない、となったようです。ですから送信方法がpostのときはエンコードが効いても、getのときはエンコードされず日本語が文字化け、ということのようです。
これはTOMCAT55でも踏襲されています。ただしTOMCAT55ではserver.xmlの指定で、URL中のパラメータ部分に対してもエンコード可能です。
具体的な修正個所は%CATALINA_HOME%\conf\server.xmlの、Serviceタグ内にある最初のConnectorタグに対して、useBodyEncodingForURI="true"というパラメータ設定を追加します。
server.xmlの内容
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true" port="8080" redirectPort="8443"
useBodyEncodingForURI="true">
</Connector>
ともかくサーブレットを動かすだけならこのweb.xmlは無くてもいいんですが、コンテキスト毎の設定があるのでやはり作成しておきましょう。
環境個別のweb.xmlを作らない場合は、%CATALINA_HOME%\conf\web.xmlの中でデフォルトサーブレットマッピング指定が注釈になっているので、この注釈を外すだけです。90行目付近の<servlet> タグがそれです。servlet-name がinvoker に対するservlet のコメントを外します。それともう一箇所、320行目付近のinvoker に対するservlet-mapping のコメントも外します。
以下ではTOMCAT全体に対するweb.xmlを使うのではなく、各自の環境用にweb.xmlを作成する方法を説明します。
web.xmlを作成する場所は、作成したアプリケーション用ディレクトリの配下、このページの例ではTestApなのでそのさらに下、WEB-INFの直下になります。
%CATALINA_HOME%\webapps\TestAp\WEB-INF\web.xmlという構成です。
最低限必要な内容は、
web.xmlの内容
<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<!-- クライアントからのパラメータの文字エンコードをShift-JISにする -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- デフォルトのサーブレット -->
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- デフォルトのJSPサーブレット -->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- デフォルトのサーブレットマッピング -->
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
<!-- デフォルトのJSPサーブレットマッピング -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
</web-app>
です。
ここにあるsevlet-nameがinvokerというのが、個別にサーブレット名が定義されていない場合のデフォルトの意味になります。これだけあれば、サーブレット名.classファイルを%CATALINA_HOME%\webapps\TestAp\WEB-INF\classes下に持ってくれば動きます。
ブラウザで指定する場合は http://localhost:8080/TestAp/servlet/サーブレット名 です。
<filter> と <filter-mapping> が無いと、JSPでクライアントからの日本語パラメータを受けるときに文字化けします。この設定に併せて、%CATALINA_HOME%\webapps\servlets-examples\WEB-INF\classesの下にあるfiltersというディレクトリを、%CATALINA_HOME%\webapps\TestAp\WEB-INF\classes下にコピーしてください。
■アプリケーション環境の動作確認
今度は単独で表示できるHTMLファイルを作成したディレクトリ(%CATALINA_HOME%\webapps\TestAp)にコピーし、そのHTMLを表示してみましょう。
指定方法はTOMCATインストール後に行った動作確認方法と似てますが、自分のディレクトリを指定するところが違います。ブラウザのアドレスに http://localhost:8080/TestAp/HTMLファイル名 と指定ください。これでコピーしたHTMLファイルの内容が表示されればOKです。