|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
この文書は、IISをTomcatと協調するように設定する方法を説明します。 通常、IISはServletやJava Server Pages(JSP)を実行できません。 しかしJKのISAPIリダイレクタプラグインを使えるようにIISを設定することで、 IISがServletやJSPへの要求をTomcatに送信できるようになります (さらにこの方法で、クライアントに応答することができます)。 WebサーバとTomcatエンジンの間で動作する構成要素(ワーカ)の設定方法を知るために、 ワーカの手引き もあわせて読むことをおすすめします。
${tomcat_home}はTomcatのルートディレクトリです。 Tomcatのインストール時には以下のサブディレクトリがなければいけません。
この文書の全てのサンプルでは、${tomcat_home}は c:\jakarta-tomcat になっています。 ワーカ(worker)は、IISサーバからの作業を受け取るTomcatプロセスと定義します。
IIS-Tomcatリダイレクタは以下の環境で開発・テストされました。
リダイレクタは、要求をTomcatコンテナに送るのに ajp12 および ajp13 を使用します。Tomcatを内部プロセスで使用するという選択肢もあります。 内部プロセスモードの詳細は「内部プロセスの手引き」にあります。
ajp12プロトコルはTomcat 3.2.xと3.3.xでのみ使用可能です。 ajp12 は Tomcat 3.3.xでは 推奨されません 。代わりに ajp13 を使うべきです。これはTomcat 4.0.x, 4.1.x と 5 で扱える唯一のajpプロトコルです。 もちろんTomcat 3.2.xと 3.3.xでもajp13プロトコルをサポートしています。 jetty のような他のServletエンジンでもajp13プロトコルをサポートしています。
事前にビルドされたISAPIリダイレクタサーバプラグインである、isapi_redirect.dll は、jakarta-tomcat-connectors配布のwin32/i386ディレクトリで利用できます。 ブラウザとしてNetscapeをお使いの方は、もし配布されているなら、このファイルのZIPバージョンをダウンロードしてみて下さい。 Netscapeを使ってDLLファイルをダウンロードする場合は問題が起こる可能性があります。 また、jakarta-tomcat-connectors配布に含まれるソースを使って、同じものをローカルでビルドすることも可能です。 Tomcatリダイレクタには、以下の3つが必要です。
インストールでは以下のことを行います。
この文書では、isapi_redirect.dllは c:\jakarta-tomcat\bin\win32\i386\isapi_redirect.dll にあり、 プロパティファイルを c:\jakarta-tomcat\conf に作成したと仮定します。
これで終りです。Tomcatを起動し、IISに/exampleコンテキストの実行を依頼することができるはずです。 サンプルとして http://localhost/examples/jsp/index.html を試し、いくつかのJSPサンプルを実行してください。 もしうまく動作しない場合は、問題解決の手助けとして、後述する「トラブルシューティング」を参照してください。
examplesコンテキストはインストールが正しく行われたことを確認するのに役立ちますが、 さらに自分のコンテキストを追加する必要があります。 新しいコンテキストを追加するには以下の2つの操作が必要です。
コンテキストをISAPIリダイレクタに加えるのは簡単で、uriworkermap.propertiesを編集し、以下の行を追加するだけです。
ワーカとその名前はworkers.propertiesで定義されます。workers.propertiesには、 デフォルトで、 "defworker" という名前で設定済のワーカが入っていて、そのまま使えます。 例えば、"shop"という名前のコンテキストを加えたい場合、uriworkermap.propertiesに 以下のような行を追加しなければなりません。
Tomcat 3.2まで使える機能として、Tomcatが起動するたびに、uriworkermap.properties-autoが、 自動的に書き出されるという機能があります。 書き出し実行中もTomcatは利用できます。 各コンテキストでは、TomcatがServletやJSPの要求を扱うという設定になっていますが、静的コンテンツは、デフォルトでは依然としてIISが扱うようになっています。 各コンテキストには、Tomcatがコンテキストに対する全ての要求を扱うという設定もありますが、こちらはコメントアウトされていて(設定が反映されないようになって)います。 (次にTomcatが起動したときに上書きされないように)このファイルの名前を変えて、 この設定のコメントをはずしたり、他の変更を行うことができます。 このファイルを(変更せずに)そのまま自分のworker_mount_file設定で使うこともできます。
たとえ静的ページ(html、gif、jpegなど)がTomcatがサービスするコンテキストの一部であったとしても、 IISにそれらのファイルを扱わせた方がいいこともあります。 例えば、examplesコンテキストにあるhtmlファイルとgifファイルですが、 これらのファイルをTomcatプロセスが扱う必要はなく、IISで十分なのです。 Tomcatコンテキストの一部である静的ファイルをIISに扱わせるためには、以下の作業が必要です。
TomcatコンテキストをIISに加えるためには、Tomcatコンテキストをカバーする新しいIIS仮想ディレクトリを追加する必要があります。 例えば、c:\jakarta-tomcat\webapps\examplesディレクトリをカバーする/exampleというIIS仮想ディレクトリを加えます。 リダイレクタの設定は少し難しく、Tomcatに処理して欲しい正確なURLパスのパターン (普通はJSPファイルとServletだけです)を指定する必要があります。 このためには、uriworkermap.propertiesを変更する必要があります。
ご覧のとおり、2番目の(変更後の)設定の方がより明示的であり、実際に、 /examples/servlet/の下のリソースと、/examples/の下の、名前の末尾が.jspのリソースへの 要求のみをリダイレクトするようにリダイレクタに指示しています。 これは各コンテキスト向けのuriworkermap.properties-autoファイルに自動的に書かれる内容と同じです。 さらに明示的になるように、以下のように行を指定することもできます。
これは、要求のURLパスが/example/servletnameである場合に、要求をdefworkerという名前のワーカに転送するように、リダイレクタに指示するものです。
各Servletアプリケーション(コンテキスト)にはWEB-INFという名前の特別なディレクトリがあります。 このディレクトリには、注意を要する設定データとJavaクラスが入っており、 Webユーザーからは隠しておかなければなりません。IIS管理コンソールを使用すれば、 WEB-INFディレクトリをユーザーのアクセスから保護することはできますが、 管理者がこのことを覚えている必要があります。 その必要をなくすためには、リダイレクタプラグインを使って、URLパスにWEB-INFが含まれている要求を全て拒否することで、自動的にWEB-INFディレクトリを保護する必要があります。
各コンテキストを別々のTomcatプロセスで処理したい場合もあります (例: 複数のマシンで負荷分散させる場合)。 そのような目的を達成するためには、複数のワーカを定義し、 それぞれのワーカにコンテキストを割り当てる必要があります。 ワーカの定義は、workers.propertiesで行います。このファイルには、以下の2種類のエントリが含まれています。
上記の例では2つのワーカが定義されており、これらのワーカを使って、2つのコンテキストを それぞれ別のワーカが処理することができます。
ご覧のとおり、 examples コンテキストを worker1 が処理し、 webpages コンテキストを worker2 が処理しています。 ワーカの使用方法・設定方法の詳細については、 ワーカの手引き をご覧下さい。
リダイレクタはVisual C++ Ver.6.0で開発されましたので、カスタムビルドしたい場合は あらかじめこの環境を用意しておく必要があります。またIIS Developer SDKも必要です。 必要なステップは以下の通りです。
もし、msdevがpathにない場合は、msdev.exeのフルパスを入力します。 これでリダイレクタプラグインのリリースバージョンとデバッグバージョンの両方がビルドされます。 他に、msdevでisapiワークスペースファイル(isapi.dsw)を開いて、 ビルドメニューを使用してビルドするという方法もあります。
初めてISAPIリダイレクタをインストールしようとする時に、うまく動かないことがよくあります。 もしそうなった場合のために、問題修正のためのいくつかのステップを紹介します。 これらのステップはすべての問題がカバーされているとは保証できませんが、 典型的な間違いを見つけるのに役立つはずです。 以下のステップでなんらかの修正を加えた場合は、上記のインストールの最後のステップで説明した方法で IISサービスを再起動し、その上でステップを繰り返してください。 エラーの追跡を可能にするために、Webサイトでの活動がログに残されていることを確認してください。 PWS 4.0の場合は、パーソナルWebマネージャの詳細オプション画面の「Web サイト活動ログを保存する」にチェックが入っていることを確認して下さい。
注意: これらのステップは
worker_mount_file
の設定で、
uriworkermap.properties
ファイルの
未修正のコピーが指定されていることを前提としています。
IISサービスとTomcatをスタートさせます。 log_file設定で指定したISAPIリダイレクタログファイルが存在するか確認します。 見つからない場合は、以下をチェックします。
ブラウザで http://localhost/examples/jsp/index.html を呼び出します。 Tomcatでは大文字と小文字の違いが重要です。URLの"localhost"以下の文字は小文字でなければなりません。 ページが表示されない場合は、IISサービスを停止させます(IISのログファイルを見るために必要です)。 その上で、SYSTEM/LogFiles/W3SVC1にあるIISログファイルの最終行を調べてください。 (訳注: ログファイルの格納先は、たとえばC:\WINDOWS\System\LogFiles\W3SVC1 といったフォルダ名になるはずです。また上記の格納先はデフォルトのものです。) もし最終行に以下の文字列が含まれている場合は、
ISAPIリダイレクタが、"/examples"コンテキストへの要求を扱うべきであると認識していません。 以下についてチェックして下さい。
もし、最終行に以下のような内容が含まれている場合は、
ISAPIリダイレクタは、要求を扱うべきことは認識していますが、 Tomcatに要求を処理させるところで失敗しています。 次の「GET "/..."」でのエラーコードをチェックしなければなりません。
上記の設定が正しければ、index.htmlページがブラウザで表示されるはずです。 また、ExecuteリンクをクリックしてJSPのサンプルを実行できるはずです。
World Wide Web Publishing ServiceとTomcatを起動します。 log_file設定で指定したISAPIリダイレクタログファイルが存在するかチェックします。 見つからない場合は、以下をチェックします。
追加したjakartaフィルタをチェックし、ステータスに緑の上矢印が表示されていることを確認します。 もしそうでないなら、以下の点をチェックしてください。
ブラウザで http://localhost/examples/jsp/index.html を呼び出します。 Tomcatでは大文字か小文字かが重要です。URLの"localhost"以下の文字は小文字でなければなりません。 ページが表示されない場合は、System32/LogFiles/W3SVC1にあるIISサーバログファイルの最終行を調べてください。 (訳注: ログファイルの格納先は、例えば、C:\WINNT\System32\LogFiles\W3SVC1 といったフォルダ名になるはずです。また上記の格納先はデフォルトのものです。) 最終行には「GET "/jakarta/isapi_redirect.dll HTTP1.1"」といった内容が含まれているはずです。 これは、ISAPIリダイレクタが要求を扱うべきことを認識していることを示しています。 次の「GET "/..."」でのエラーコードをチェックしなければなりません。
上記の設定が正しい場合は、index.htmlページがブラウザで表示されるはずです。 また、ExecuteリンクをクリックしてJSPのサンプルを実行することができるはずです。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
[訳注: これは高橋 達男が翻訳しました。日本語訳に対するコメントがあれば、こちらに送って下さい。(熊坂氏翻訳のtomcat-iis-howto.htmlを参考にしました。)]
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||