TOMCAT與IIS集成
IIS(Internet Information Service)服務器是微軟開發的功能強大的Web服務器,IIS為創建和開發電子商務的提供了安全的Web平臺。把Tomcat與IIS集成,可以擴展IIS的功能,使它支持Java Web應用。一.1 準備相關文件
在開始本節的操作之前,假定在機器上安裝了IIS服務器,應該準備好以下3個文件。
1.JK插件
在本書配套光盤的lib目錄下提供了用于IIS的JK插件:isapi_redirect.dll,此外,也可以到以下地址下載最新的JK插件:http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk,可以把JK插件isapi_redirect.dll拷貝到/bin目錄下。
2.workers.properties文件
在/conf目錄下創建如下的workers.properties文件。在本書配套光盤的sourcecode/chapter22/iis目錄下也提供了該文件:
workers.tomcat_home=C:\jakarta-tomcat #讓mod_jk模塊知道Tomcat workers.java_home=C:\j2sdk1.4.2 #讓mod_jk模塊知道j2sdk ps=\ #指定文件路徑分割符 worker.list=worker1 worker.worker1.port=8009 #工作端口,若沒占用則不用修改 worker.worker1.host=localhost #Tomcat服務器的地址 worker.worker1.type=ajp13 #類型 worker.worker1.lbfactor=1 #負載平衡因數 |
3.uriworkermap.properties文件
在/conf目錄下創建如下的uriworkermap.properties文件,它為JK插件指定URL映射。在本書配套光盤的sourcecode/chapter22/iis目錄下也提供了該文件:
?/P>
/*.jsp=worker1 /helloapp/*=worker1 |
盡管把以上3個文件都放在Tomcat目錄下,其實Tomcat服務器并不會訪問這些文件。以上給出的是按照慣例的一種配置,事實上,也可以把這些文件放在文件系統的其他地方。
二. 編輯注冊表
在配置Apache和Tomcat集成時,JK插件的屬性是在Apache的配置文件httpd.conf中設置的。配置IIS和Tomcat集成時,應該在操作系統的注冊表中設置JK插件的屬性,以下是操作步驟。
(1)在Windows NT/2000中通過regedit命令編輯注冊表,創建一個新的鍵:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector \1.0,如圖4所示。
?/P>

?/P>
(2)在Jakarta Isapi Redirector\1.0鍵下面創建新的字符串,參見表22-5,創建好之后的注冊表如圖22-5所示。
表5 在Jakarta Isapi Redirector\1.0鍵下面創建的字符串
?/P>
字 符 串 | 字 符 串 值 | 描 述 |
extension_uri | /jakarta/isapi_redirect.dll | 指定訪問isapi_redirect.dll文件的uri,在IIS中將創建名為jakarta的虛擬目錄,在該目錄下包含isapi_redirect.dll文件,參見22.4.3節 |
log_file | C:\jakarta-tomcat\logs\isapi.log | 指定JK插件使用的日志文件,在實際配置中,可以通過查看這個日志文件,來跟蹤JK插件的運行過程,這對排錯很有用 |
log_level | debug | 指定JK插件的日志級別, 可選值包括debug、info和error等 |
worker_file | C:\ jakarta-tomcat\conf \workers.properties | 指定JK插件的工作文件 |
worker_mount_file | C:\jakarta-tomcat\conf \uriworkermap.properties | 指定JK插件的URL映射文件 |
?/P>

?/P>
在本書配套光盤的sourcecode/chapter22/iis目錄下提供了注冊表編輯文件jk.reg,如果不想按照以上方式手工修改注冊表,也可以直接運行jk.reg文件(選中這個文件再雙擊鼠標即可),它會把以上配置內容自動添加到注冊表中。jk.reg的內容如下:
?/P>
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ Apache Software Foundation\ Jakarta Isapi Redirector \1.0] "extension_uri"="/jakarta/ isapi_redirect.dll" "log_file"="C:\\jakarta-tomcat \\logs\\isapi.log" "log_level"="debug" "worker_file"="C:\\jakarta-tomcat \\conf\\workers.properties" "worker_mount_file"="C:\\jakarta-tomcat \\conf\\uriworkermap.properties" |
在運行jk.reg文件之前,應該把文件中的"C:\\jakarta-tomcat"目錄替換為Tomcat安裝目錄。
三. 在IIS中加入"jakarta"虛擬目錄
注冊表修改以后,應該在IIS中加入名為"jakarta"的虛擬目錄,它是JK插件所在的目錄,以下是操作步驟。
(1)選擇操作系統的【控制面板】→【管理工具】→【Internet服務管理器】選項,打開Internet信息服務管理器,如圖6所示。
?/P>

?/P>
(2)選中【默認Web站點】,單擊鼠標右鍵,在下拉菜單中選擇【新建】→【虛擬目錄】選項,如圖7所示。創建一個虛擬目錄,名為"jakarta",對應的實際文件資源路徑應該是isapi_redirect.dll文件所在的目錄/bin。
?/P>

?/P>
(3)修改剛剛創建的jakarta虛擬目錄的屬性,將其執行許可權限設為"腳本和可執行程序",如圖8所示。這步操作很重要,它保證在注冊表中設置的extension_uri對應的/jakarta/isapi_redirect.dll可以被執行。如果漏掉這步操作,會導致無法訪問Tomcat中的Servlet/JSP組件。
?/P>

?/P>
在IIS中加入名為"jakarta"的虛擬目錄后,還應該把JK插件作為ISAPI篩選器加入到IIS中,以下是操作步驟。
(1)在Internet信息服務主窗口的目錄樹中選擇IIS主機節點,單擊鼠標右鍵,在下拉菜單中選擇【屬性】選項,如圖22-9所示。在出現的窗口中單擊【編輯】按鈕,打開IIS主機的屬性窗口,如圖10所示。


(2)在主屬性的WWW服務區域單擊【編輯】按鈕,打開WWW服務主屬性窗口,增加新的ISAPI篩選器,篩選器名稱為"jakarta",可執行文件為/bin /isapi_redirect.dll,如圖11所示。

(3)重新啟動IIS服務器,如果配置正常,在WWW服務主屬性的ISAPI篩選器子窗口中,新加的jakarta篩選器的狀態應該變為綠色向上的箭頭,如圖12所示。

重啟Tomcat服務器和IIS服務器,通過瀏覽器訪問http://localhost/index.jsp。如果出現Tomcat的默認主頁,說明配置已經成功。此外,如果在Tomcat服務器上已經發布了helloapp應用,可以訪問http://localhost/helloapp/index.htm;如果正常返回helloapp應用的index.htm網頁,說明配置已經成功;如果配置有誤,可以查看JK插件生成的日志信息,它有助于查找錯誤原因。在注冊表中設定該日志文件的存放位置為/logs/isapi.log。
小 結
上面介紹了通過JK插件來實現Tomcat與Apache以及IIS服務器集成的步驟。Tomcat提供了專門的JK插件來負責Tomcat和HTTP服務器的通信。JK插件安置在對方HTTP服務器上。當HTTP服務器接收到客戶請求時,它會通過JK插件來過濾URL,JK插件根據預先配置好的URL映射信息,來決定是否要把客戶請求轉發給Tomcat服務器處理。Tomcat與Apache以及IIS服務器集成的異同之處參見下表。
Tomcat與Apache以及IIS服務器集成的異同之處
Tomcat與Apache集成 | Tomcat與IIS集成 | |
JK插件的工作文件 | workers.properties文件 | workers.properties文件 |
設置JK插件屬性 | 在Apache的配置文件httpd.conf中設置 | 在注冊表中設置 |
設置URL映射信息 | 在Apache的配置文件httpd.conf中設置 | 在uriworkermap.properties文件中設置 |
加載JK插件 | 把JK插件拷貝到/lib目錄下, 在Apache的配置文件httpd.conf中設置 LoadModule屬性 | 把JK插件所在的目錄作為IIS的虛擬目錄,把JK插件作為ISAPI篩選器加入到IIS中 |