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