連携(mod_jk,tomcat-connectors)ARRでIISとTomcatを連携してみました。Routingで連携もうひとつ、古くからあるtomcat-connectorsを使用する方法を試してみます。tomcat-connectorsの入手ISAPIフィルターであるtomcat-connectorsを入手します。http://archive.apache.org/dist/tomcat/tomcat-connectors/ダウンロードリンクがわかりにくいですが、/jk/binaries/windows/と進みます。http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/「tomcat-connectors-1.2.42-windows-x86_64-iis.zip」をダウンロードし、解凍すると「isapi_redirect.dll」が入手できます。ISAPIフィルターの設定isapi_redirect.dllを適当なフォルダーにコピーします。今回は「C:\inetpub\connector」というフォルダーを作成してdllをコピーしました。isapi_redirect.propertiesdllをコピーしたフォルダに「isapi_redirect.properties」ファイルを作成します。このファイルは、他の設定ファイルのパスを記載するなど、大本の設定ファイルとなります。HowToこちらではレジストリに値を登録する例が記載されていますが、レジストリを使用しない場合はこちらの設定ファイルを作成すれば良いようです。設定値も参考になります。ファイルの内容は以下の通り。extension_uri=/jakarta/isapi_redirect.dlllog_file=C:\share\isapi_redirect.loglog_level=debugworker_file=C:\inetpub\connector\workers.propertiesworker_mount_file=C:\inetpub\connector\uriworkermap.propertiesuri_select=unparsed・extension_uri転送先のuri(任意値)http://localhost/[任意の値]/isapi_redirect.dllというURLで解決できるパスを記載します。今回は「/jakarta/isapi_redirect.dll」としました。後の手順で「jakarta」という仮想ディレクトリを作成し、isapi_redirect.dllへアクセスできるよう構成します。・log_fileログの出力パス・log_levelログの出力レベル。errorなどが指定できます。debugだとフルダンプのログが出力されるので、うまく動いてくれない時の原因調査時に役立ちます。実運用する場合は、info以上が良いかと思います。・worker_file,worker_mount_file各々の設定ファイルへのパスを記載します。その他、詳細な内容は以下が参考になります。IISworkers.propertiesisapi_redirect.propertiesで指定したパスに「workers.properties」を作成します。このファイルにはリクエスト転送先の情報を記載します。ps=\worker.list=tomcatworker.tomcat.port=8009worker.tomcat.host=192.168.1.4worker.tomcat.type=ajp13※192.168.1.4はTomcatを動かすサーバーのIPです。・psパスセパレーター(だと思う)・worker.listこれから定義していくworkerの名称をカンマ区切りで指定します。(任意)ここで指定した文字列をキーに、以降の設定を記載していきます。・port,host,type転送先のポート、ホスト、転送タイプを指定します。ポートは8080ではなく、8009を指定します。ここでajp13という転送専用のリスナーが待ち受けています。後ほど、Tomcatでの設定を確認します。その他、詳細な内容は以下が参考になります。configuration他の項目と合わせる必要があるのか悩みましたが、worker.listに指定する名前は任意です。worker.list=[hoge]worker.[hoge].port=8009worker.[hoge].host=localhostworker.[hoge].type=ajp13転送先が複数ある場合worker.list=[hoge],[piyo]worker.[hoge].port=8009worker.[hoge].host=localhostworker.[hoge].type=ajp13worker.[piyo].port=8009worker.[piyo].host=192.168.1.4worker.[piyo].type=ajp13worker.listで指定した名称は次に記載する設定ファイルで使用します。uriworkermap.propertiesisapi_redirect.propertiesで指定したパスに「uriworkermap.properties」を作成します。このファイルにはリクエスト転送先の情報を記載します。/sample/*=tomcathttp://iisserver/sampleのリクエストをtomcatに転送するしていです。ここで指定している「tomcat」はworkers.propertiesで命名したworkerの名称となります。複数のURLを記載したり、拡張子による分岐も可能です。/sample/*=tomcat/sample2/*=tomcat/sample3/*.do=tomcatその他、詳細な内容は以下が参考になります。configurationここまでで「C:\inetpub\connector」は以下のようになるはずです。IISの設定ここからはIISマネージャー画面での設定作業になります。やることは以下の4つ。・仮想ディレクトリでハンドラーマッピングの追加まず、サーバーホームから「ISAPIおよびCGIの制限」を選択。ISAPIまたはCGIのパスにコピーしたisapi_redirect.dllへのパスを指定します。説明は任意の文字列を入力。Site」を選び、「ISAPIフィルターを」選択します。右側の[追加]をクリック。フィルター名は任意に入力し、実行可能ファイルに再びisapi_redirect.dllへのパスを指定します。続いて仮想ディレクトリを追加します。ポイントは「エイリアス」です。isapi_redirect.propertiesのextension_uriで指定した名称と一致させます。今回は「/jakarta/isapi_redirect.dll」と指定したので、エイリアスを「jakarta」としました。物理パスはdllをコピーしたフォルダを指定します。仮想フォルダ「jakarta」が追加できました。作成した仮想フォルダのハンドラーマッピングを表示します。右側の[スクリプトマップの追加]をクリック。要求パス:*実行可能ファイル:isapi_redirect.dllへのパス名称:任意を入力します。追加時、スクリプトマップ追加の確認ダイアログが表示されます。「はい」を選択してISAPI拡張を有効にします。ここまで設定が終わったらIISを再起動します。server.xmlデフォルトでajp13は有効となっているはずですが、念の為確認します。%TOMCAT%/conf/server.xmlを開きます。8009ポートでajp13を待ち受ける設定が有効であることが確認できました。動作確認Tomcatに直接アクセスしてみます。http://192.168.1.4:8080/sample/SampleServletこのURLでこんな表示。IISでのリダイレクトをテストします。http://192.168.1.102/sample/SampleServlet狙い通りの動作です。Forbiddenほとんど発生することはないと思いますが、403.18エラーが発生してうまく動いてくれないことがありました。プールで、指定された要求を処理することができません。