Apache Software Foundation | Jakarta Project | Apache Tomcat
はじめに

この文書は、Tomcatと連携させるためにNetscape Webサーバーをセットアップする方法を説明します。

Netscape Webサーバーは、通常独自のServletエンジンとともに提供されます。 しかし、Tomcatリダイレクタプラグインを使用すれば、JSPとServletの要求をTomcatに転送するように設定することができます。

Web サーバと Tomcat エンジンとの間で動作するコネクタを設定する方法を知るために、 ワーカの手引き の文書を読んでおくことをお奨めします。

文書規約と仮定

${tomcat_home} は、tomcatのルートディレクトリです。 Tomcatをインストールするためには、以下のサブディレクトリが必要です。

  • ${tomcat_home}\conf - さまざまな設定ファイルを置きます
  • ${tomcat_home}\webapps - サンプルアプリケーションを含みます
  • ${tomcat_home}\bin - Webサーバープラグインを置きます

本文書中の全ての例では、${tomcat_home} を c:\jakarta-tomcat と記述します。 Netscape/iPlanetサーバーからの依頼をtomcatプロセスが受け付けるために定義するのがワーカ(worker)です。


サポートする構成

Netscape-Tomcat リダイレクタは、次の環境で開発とテストをおこないました。

  • WinNT4.0-i386 SP4/SP5/SP6a (他のサービスパックでの動作も含む)と、いくつかのUNIX
  • Netscape Enterprise 3.0 と 3.61
  • Tomcat 3.2.x、3.3.x、Tomcat 4.0.x、Tomcat 4.1.xおよびTomcat 5

リダイレクタは、Tomcatコンテナに要求を送るために、 ajp12 ajp13 を使用します。 Tomcatを内部プロセスで使用することもできます。 内部プロセスモードについての詳細は「内部プロセスの手引き」を見てください。


ajpプロトコルをサポートするソフトウェアは?

ajp12 プロトコルは、Tomcat 3.2.x と 3.3.x. でのみサポートされています。

ajp12 は、Tomcat 3.3.x では 推奨されません 。代わりに ajp13 を使うべきです。 Tomcat 4.0.x、4.1.x、5 では、 ajp13 だけがサポートされる ajp プロトコルです。

もちろん、Tomcat 3.2.x や 3.3.x でも ajp13 プロトコルをサポートしています。

jetty のような Tomcat 以外の Servlet エンジンでも ajp13 プロトコルをサポートしています。


どのように動作しますか?

  1. Netscape-Tomcat リダイレクタは、Netscapeのサービスステッププラグインです。 Netscape は、リダイレクタプラグインを読み込み、"servlet" 設定オブジェクトに割り当てられた要求のために、そのサービスハンドラ機能を呼び出します。
  2. 入ってくる要求ごとに、obj.confに追記した一連のNameTrans指示をNetscapeが実行し、 要求されたURLとパラメータが一致するかをassign-name機能がチェックします。
  3. 一致した場合assign-name機能は、要求に対してServletオブジェクト名を割り当てます。 これによってNetscapeは、Servlet設定オブジェクトに対して要求を送るようになります。
  4. Netscapeは、jk_serviceエクステンションを実行します。 エクステンションは要求パラメータを集め、ajp13プロトコルを使用してそれらを適切なワーカに送ります。 (jk_serviceでのworker="defworker" パラメータは、 defworker という名前のワーカがこの要求を処理することを知らせます) ワーカのプロパティファイルである、 workers.properties は、defworker が ajp13 プロトコルを使用することを示しています。
  5. エクステンションは、ワーカからのレスポンスを集めて、それをブラウザに返します。



インストール

Netscape リダイレクタ nsapi_redirect.dll のビルド済みのバージョンが、 jakarta-tomcat-connectors 配布の win32/i386 ディレクトリに用意されています。 ブラウザとしてNetscapeを使用する場合には、可能であれば、 ファイルのzpiバージョンのダウンロードを試してください。Netscapeを使用して DLLをダウンロードすると問題が発生することがあります。 また、jakarta-tomcat-connectors 配布のソースをローカルにコピーしてビルドすることもできます。 Tomcat リダイレクタには、以下の2つが必要です。

  • nsapi_redirect.dll - Netscape サーバープラグイン。すでにビルドされているDLLを入手するか、 あなた自身でビルドしてください (ビルドセクションを参照)。
  • workers.properties - ワーカ(Tomcatプロセス)のために使用されるホスト名とポート番号を記述するファイル。 サンプルの workers.properties は conf ディレクトリにあります。
インストールでは、以下のことをおこないます。
  • NSAPIリダイレクタをデフォルトの/exsamples コンテキストで設定して、 NetscapeでServletが実行できることを確認します。
  • さらに他のコンテキストを設定に追加します。


NSAPI リダイレクタの設定

この文書では、nsapi_redirect.dll は、 c:\jk\lib\nsapi_redirect.dll にあり、 プロパティファイルは c:\jk\conf にあり、 ログディレクトリを c:\jk\logs に作成したものと仮定します。

  • Netscapeが、Servletをサポートするようにビルドされていれば、それを無効にします。
  • リダイレクタプラグインをNetscapeサーバーの設定に追加します。 サーバーの obj.conf を編集して、以下の行を追加します。

Init セクション:
Init fn="load-modules" funcs="jk_init,jk_service" shlib="c:/jk/lib/nsapi_redirect.dll"
Init fn="jk_init" worker_file="c:/jk/conf/workers.properties" log_level="debug" log_file="c:/jk/logs/nsapi.log"
デフォルトobject NameTrans セクション
NameTrans fn="assign-name" from="/servlet/*" name="servlet"
NameTrans fn="assign-name" from="/examples/*" name="servlet"
obj.confファイルの末尾に以下の行を加え、新しい設定オブジェクトを作成します。
<Object name=servlet>
ObjectType fn=force-type type=text/plain
Service fn="jk_service" worker="worker1"
</Object>

  • Netscape を再起動(サーバーの停止と開始)します。

これで終りです。 Tomcatを起動して、Netscapeに http://server:port/examples/ を問い合わせることができます。

さらにコンテキストを追加する

サンプルコンテキストは、インストールを検証するのに役立ちます。 しかし、さらに独自のコンテキストを追加する必要があります。 新しいコンテキストを追加するためには、2つの作業が必要です。

  • コンテキストをTomcatに追加します(この文書では説明しません)。
  • NSAPIリダイレクタに、このコンテキストを処理するように割り当てます。

NSAPIリダイレクタに、このコンテキストを取り扱うように割り当てることは簡単で、 obj.conf を編集して、以下のようなNameTrans行を追加するだけです。

NameTrans fn="assign-name" from="/<context name>/*" name="servlet"

obj.conf を保存してからNetscapeをリスタートすれば、あたらしいコンテキストを取扱います。


より高度なコンテキストの設定

Tomcatが配信するコンテキストの一部のファイルであっても、 Netscapeが静的ページ(html, gif, jpeg,など)を配信する方がよいことがあります。 たとえば、examplesコンテキストの中のHTMLファイルとGIFファイルについて考えると、 わざわざTomcatプロセスからそれを配信しなくても、Netscapeがおこなえば充分です。

NetscapeにTomcatコンテキストの一部を静的ファイルとして送信させるには、以下のことが必要になります。

  • Netscapeに対して、Tomcatコンテキストの設定をおこないます。
  • WEB-INFディレクトリが、アクセスされないように保護されていることを確認します。
  • NSAPIリダイレクタにJSP/Servletの取扱いを必要とする特定の要求だけを割り当てるようにNetscapeを設定します。

TomcatコンテキストをNetscapeに追加するためには、Tomcatコンテキストを含む新しいNetscape仮想ディレトクリを追加する必要があります。

たとえば、 c:\jakarta-tomcat\webapps\examples ディレクトリを含む/example Netscape 仮想ディレクトリを追加します。

新たに仮想ディレクトリを追加するためには、 obj.conf に以下の行を追加してください。

NameTrans fn=pfx2dir from=/examples dir="c:/jakarta-tomcat/webapps/examples"

WEB-INFの保護については、説明が必要です。 それぞれのServletアプリケーション(コンテキスト)には、 WEB-INF という名前の特別なディレクトリがあります。 このディレクトリには、注意が必要な設定データとJavaクラスが含まれているので、Webユーザからは隠しておかなければなりません。 WEB-INFは、デフォルト設定オブジェクト内のPathCheckセクションに次の行を追加することによって保護されます。

PathCheck fn="deny-existence" path="*/WEB-INF/*"
この行は、/WEB-INF/ パスが含まれるURLを持つすべての要求を拒否するようにNetscapeに指示します。

NSAPIリダイレクタに特定の要求だけを割り当てるようにNetscapeを設定することは、 Tomcatに処理して欲しいURLパスのパターン(通常JSPファイルとServletだけ)を明示的に指定する必要があるので、少し難しくなります。

これは、 obj.conf のNameTransの部分を変更する必要があります。

たとえば、examplesコンテキストでは、以下の行を書き換える必要があります。
NameTrans fn="assign-name" from="/examples/*" name="servlet"
with the following two lines:
NameTrans fn="assign-name" from="/examples/jsp/*.jsp" name="servlet"
NameTrans fn="assign-name" from="/examples/servlet/*" name="servlet"

見てわかるように、二番目の設定がより明示的であり、 /examples/servlet/ の下のリソースと、 /examples/ の下にある名前の末尾が .jsp のリソースに対してのみリダイレクタを割り当てています。

さらに明示的にするためには、次のように行を指定してください。

NameTrans fn="assign-name" from="/examples/servletname" name="servlet"
これは、Netscapeに対して、 要求されたURLパスが /example/servletname に等しい場合に、リクエストをリダイレクタに割り当てるように指示します。


高度なワーカ設定

異なるTomcatプロセスに対して、異なるコンテキストを提供させたい(たとえば、異なるマシンで負荷分散をさせる)場合があります。 そのような目的を達成するためには、複数のワーカを定義して、それぞれのワーカにコンテキストを割り当てる必要があります。

ワーカの定義は、 workers.properties で行います。 このファイルには、以下の2つのエントリが含まれています。

定義するすべてのワーカのリストのエントリ。例:
worker.list=worker1, worker2
これらのワーカに関連するホストとポートの定義エントリ。例:
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.type=ajp13
worker.worker2.host=otherhost
worker.worker2.port=8009
worker.worker2.type=ajp13

上記の例では、2つのワーカが定義されており、2つの異なるコンテキストに対して、それぞれ独自のワーカを使うことができます。 異なるワーカに対して要求を発行するためには、Servlet設定のObject中で、 異なるパスのパターンのパラメタを持つService指示子を複数使用すれば可能です。

たとえば、 /examples コンテキストには worker1 という名前のワーカを使用して、 /webpages コンテキストには worker2 という名前のワーカを使用したい場合には、以下のような設定をしなければなりません。

<Object name=servlet>
ObjectType fn=force-type type=text/plain
Service fn="jk_service" worker="worker1" path="/examples/*"
Service fn="jk_service" worker="worker2" path="/webpages/*"
Service fn="jk_service" worker="worker1"
</Object>

ワーカの使用や設定に関するより詳細な情報は ワーカの手引き にあります。



NSAPI リダイレクタのビルド

リダイレクタはVisual C++ Ver.6.0を使って開発されたので、カスタムビルドしたい場合には、あらかじめこの環境を用意しておく必要があります。 また、NES 開発 SDK も必要です。 必要な手順は以下のとおりです。

  • nsapiプラグインソースディレクトリに移動します。
  • nsapi.dsp を編集して、includeとライブラリパスが、インストールしたNetscapeサーバーを参照するように更新します。 (コンパイラオプションの /I とリンカオプションの /libpath を見つけてください)
  • MSDEV でソースを Make(コンパイル)します。

nsapiプラグインソースディレクトリに移動
c:\> cd c:\home\apache\jk\nsapi
MSDEV を使ってソースをビルド
c:\> MSDEV nsapi.dsp /MAKE ALL

もし、msdevがパスに無い場合には、msdev.exeへのフルパスを入力します。 これは、リダイレクタプラグインのリリース版とデバッグ版の両方をビルドします。 他に、msdevで nsapiワークスペースファイル(nsapi.dsw)を開いて、ビルドメニューを使用してビルドできます。


[訳注: これは鰈崎 義之が翻訳しました。日本語訳に対するコメントがあれば、こちらに送って下さい。(熊坂氏翻訳のtomcat-netscape-howto.htmlをベースに一部追加・修正)]