Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Tomcat −3.Webサーバとの連携
更新日:2007/4/28
Tomcat−3.Webサーバとの連携
ここでは、TomcatとWebサーバを連携する方法について解説します。

実行環境
・WindowsXP Home Edition
・Tomcat 6.0.10
・JDK 1.6.0
・Apache 2.2.4
概要
TomcatもWebサーバ機能を持っていますが、従来のWebサーバソフトと比較すると性能が良くなく検証作業など内部利用にとどめた方が良いと言われています。本格的なWebサーバ機能が必要なシステムでは、Apache、IISなどの専用WebサーバソフトとTomcatを連携して使用します。以下に、TomcatのWebサーバ機能を利用すべきでないと言われている理由を記載します。
TomcatのWebサーバ機能は歴史が浅く、Webサーバ専用ソフトと比較すると安定性が悪く、セキュリティも高くない。
TomcatのWebサーバ機能は一般に高速ではない。
Webサーバ専用ソフトを使用することにより静的コンテンツと動的コンテンツの処理を分散させることができる。
TomcatとWebサーバ(Apache、IISなど)の連携は以下のようにして行います。
(1). Webサーバエンジンは受け取ったリクエストが設定したURLパターンに合致する場合、そのリクエストを連携モジュールに渡します。
(2). 連携モジュールは連携プロトコルを使用し、そのリクエストを連携コネクタに渡します。
(3). 連携コネクタはリクエストをJSP/サーブレットコンテナに渡し、そこで処理が実行されます。
TomcatとWebサーバの連携
設定方法
ここでは、Apache2.2から標準装備されるようになったTomcat連携モジュールmod_proxy_ajpを使用してTomcatと連携する方法について解説します。前もってApache2.2以上、J2SDK、Tomcatのインストールは行われているものとします。J2SDK、Tomcatインストールの詳細はJavaの道:Java2 SDK 実装方法Javaの道:Tomcat(インストール(Windows環境))を参照してください。
Apacheの設定
mod_proxy_ajpモジュールを有効化するため、httpd.confに設定されているmod_proxy_ajpモジュールの設定を有効にします(コメントアウトの解除)。
モジュールはmod_proxy_ajpに加え、mod_proxyも設定を有効にする必要があります。
httpd.confは「$APACHE_HOME\conf」ディレクトリ配下にあります。$APACHE_HOMEはApacheのインストールディレクトリです。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

※mod_proxyとmod_proxy_ajpのモジュールの設定を  有効にします(コメントアウトの解除)。
連携するコンテンツの設定は、httpd.confの<Location>設定で行います。
<Location /docs/>
  ProxyPass ajp://localhost:8009/docs/
</Location>

※「http://ドメイン/docs」にアクセスしたら、「Tomcatのdocsディレクトリ」  配下に転送されることを表します。
※8009は、Tomcat側の連携コネクタのポート番号です。
Tomcatの設定
$CATALINA_HOME\conf配下のserver.xmlの連携コネクタの設定部分が有効になっていること(コメントアウトの解除)、ポート番号が8009になっていることを確認します。
$CATALINA_HOMEはTomcatのインストールディレクトリです。
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
動作確認

Tomcat、Apacheを起動し、http://localhost/docs/ にアクセスします。以下の画面が出れば正常に動作しています。Tomcatのポート番号8080ではなく、HTTPのポート番号である80で、Tomcatに接続していることが確認できます。

TomcatとWebサーバの連携の動作確認



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道