Gal Shachor著 <shachor@il.ibm.com>
この文書は、Tomcatと協調させるためにNetscape Webサーバーをセットアップする方法を説明します。 Netscape Webサーバーは、通常独自のServletエンジンとともに提供されます。 しかし、Tomcatリダイレクタプラグインを使用すれば、JSPとServletの要求をTomcatに転送するように設定することができます。
<tomcat_home> は、tomcatのルートディレクトリです。 Tomcatをインストールするためは、以下のサブディレクトリが必要です。
本文書中の全ての例では、<tomcat_home> を c:\jakarta-tomcat と記述します。
ワーカ (worker)は、tomcatプロセスがNetscapeサーバーから仕事を受け取るために定義します。
Netscape-Tomcat リダイレクタは、次の環境で開発とテストをおこないました。
リダイレクタは、Tomcatコンテナに要求を送るために、 ajp12 を使用します。 Tomcatを内部プロセスで使用することもできます。 内部プロセスモードについての詳細は「内部プロセスの手引き」を見てください。
Tomcat 3.2 より、Win32用に事前にビルドされたNetscape リダイレクタ・サーバ・プラグインの nsapi_redirect.dllが、 Tomcatバイナリ配布の win32/i386ディレクトリに用意されています。 Netscapeをあなたのブラウザとして使用する場合には、可能であれば、 ファイルのzpiバージョンのダウンロードを試してください。Netscapeを使用して DLLをダウンロードする際に問題が発生することがあります。
あなたは、また、Tomcatのソース配布をローカルにコピーしてソースから構築する ことができます。
Tomcat リダイレクタには、以下の2つが必要です。
インストールでは、以下のことをおこないます。
この文書では、nsapi_redirect.dll は、 c:\jakarta-tomcat\bin\win32\i386\nsapi_redirect.dll にあり、 プロパティファイルを c:\jakarta-tomcat\confに作成したと仮定します。
これで終りです。 あなたはtomcatを起動して、Netscapeに http://server:port/examples/ を問い合わせることができます。
サンプルコンテキストは、インストールを検証するのに役立ちます。 しかし、さらに自分のコンテキストを追加する必要があります。 新しいコンテキストを追加するためには、2つの操作が必要です。
NSAPIリダイレクタに、このコンテキストを取り扱うように命じることは簡単で、 obj.confを編集して、以下のようなNameTrans行を追加するだけです。
NameTrans fn="assign-name" from="/<context name>/*" name="servlet"
obj.confを保存してからNetscapeをリスタートすれば、あたらしいコンテキストを取扱います。
Tomcat 3.2での新機能として、Tomcatが開始されるたびに、obj.conf-autoが自動的に書かれます。 このファイルは、Tomcatが実行している間、提供するそれぞれのコンテキストの設定が含まれます。 それぞれのコンテキストは、Tomcatが扱うサーブレットとJSP要求(Netscapeに全ての他の 内容を提供させる設定と同様に)を持つために設定を持ちます。 それが直接使用されるまえに、このファイルは若干の修正を必要とします。 もしあなたが、その内容のいくつかをどこか別のファイルにコピーするのではなく、このファイルを 直接使用したい場合には、(次にTomcatを起動したときに、それが上書きされないよう)その名前を変えて、 どんな必要な変更も作成しなければなりません。
リダイレクタはVisual C++ Ver.6.0を使って開発されたので、カスタムビルドしたい場合には、あらかじめこの環境を用意しておく必要があります。
あなたがおこなう必要がある手順は以下のとおりです。
これは、リダイレクタプラグインのリリース版とデバッグ版の両方をビルドします。
他に、msdevで nsapiワークスペースファイル(nsapi.dsw)を開いて、ビルドメニューを使用してビルドできます。
Tomcatが配信するコンテキストの一部のファイルであっても、 Netscapeが静的ページ(html, gif, jpeg,など)を配信する方がよいことがあります。 たとえば、サンプルのコンテキストの中のHTMLファイルとGIFファイルについて検討すれば、わざわざTomcatプロセスからそれを配信しなくても、Netscapeがおこなえば充分です。
NetscapeにTomcatコンテキストの一部を静的ファイルとして送信させるには、以下のことが必要になります。
TomcatコンテキストをNetscapeに追加するためには、Tomcatコンテキストをカバーする新しいNetscape仮想ディレトクリを追加する必要があります。 たとえば、d:\tomkat\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ファイルとサーブレットだけ)を明示的に指定する必要があるので、少し難しくなります。 これは、obj.confのNameTransの部分を変更する必要があります。 たとえば、examplesコンテキストでは、以下の行を書き換える必要があります。
NameTrans fn="assign-name" from="/examples/*" name="servlet"
これを以下の2行のように変更してください。
NameTrans fn="assign-name" from="/examples/jsp/*.jsp"
name="servlet"
NameTrans fn="assign-name" from="/examples/servlet/*"
name="servlet"
見てわかるように、二番目の設定がより明示的であり、/examples/servlet/の下のリソースと、/examples/ の下にある名前の末尾が.jspのリソースに対してのみリダイレクタを割り当てています。 これは、自動的に書かれるobj.conf-autoファイルのそれぞれのコンテキストと 同じです。
さらに明示的にするためには、次のように行を指定してください。
NameTrans fn="assign-name" from="/examples/servletname" name="servlet"
これは、Netscapeに対して、 要求されたURLパスが/example/servletname に等しい場合に、ajp12という名前のワーカに転送するように指示します。
異なるTomcatプロセスに対して、異なるコンテキストを提供させたい(たとえば、異なるマシンで負荷分散をさせる)場合があります。 そのような目的を達成するためには、複数のワーカを定義して、それぞれのワーカにコンテキストを割り当てる必要があります。
ワーカの定義は、workers.propertiesで行います。 このファイルには、以下の2つのエントリが含まれています。
上記の例では、2つのワーカが定義されており、2つの異なるコンテキストにたいして、それぞれ独自のワーカを使うことができます。 異なるワーカに対して要求を発行するためには、Servletの設定オブジェクト中で、 異なるパスのパターンのパラメタを持つService指示子を複数使用すれば可能です。 たとえば、/servletコンテキストにはajp12という名前のワーカを使用して、 /examplesコンテキストにはajp12secondという名前のワーカを使用したい場合には、以下のような設定をしなければなりません。
<Object name=servlet>
ObjectType fn=force-type type=text/plain
Service fn="jk_service" worker="ajp12" path="/servlet/*"
Service fn="jk_service" worker="ajp12second"
path="/examples/*"
Service fn="jk_service" worker="ajp12"
</Object>
フィードバック、バグ報告、または追加したい情報などは、すべてtomcat-user@jakarta.apache.orgへ送ってください。
[訳注: これは熊坂祐二が翻訳しました。 日本語訳に対するコメントは、jajakarta-report@nekoyanagi.com宛に送って下さい。]