本文介紹如何把IIS伺服器與Tomcat內建。本文的參考書籍是《Tomcat與Java Web開發技術詳解》第三版,作者:孫衛琴。
本文所用的軟體版本為:Window10,Tomcat9。
本文所涉及的源代碼的下載下傳網址為:http://www.javathinker.net/javaweb/iis-tomcat.rar
IIS(Internet Information Service)伺服器是微軟開發的功能強大的Web伺服器,IIS為建立和開發電子商務提供了安全的Web平台。把Tomcat與IIS內建,可以擴充IIS的功能,使它支援Java Web應用。
1.1 安裝和啟動IIS伺服器
高版本的Windows自帶了IIS,但預設情況下沒有被啟用。下面以Window10為例,介紹啟用IIS的步驟。
(1)選擇作業系統的【控制台】→【程式】→【啟動或關閉Windows功能】,打開“啟動或關閉Windows功能”的視窗,參見圖1-1。

圖1-1 打開“啟動或關閉Windows功能”視窗
(2)在“啟動或關閉Windows功能”的視窗中,選擇與IIS資訊服務相關的所有選項,參見圖1-2。確定啟用了“應用程式開發功能”中的各個選項。
圖1-2 在Windows中啟用IIS的各項功能
(3)選擇作業系統的【控制台】→【系統和安全】→【管理工具】→【Internet Information Services (IIS)管理器】,打開IIS管理器。
(4)在IIS管理器視窗左側的目錄樹中選擇表示本地電腦的主機節點,點滑鼠右鍵,在下拉菜單中選擇“啟動”,就會啟動IIS伺服器。如果選擇“停止”,就會終止IIS伺服器,參見圖1-3。
圖1-3 在IIS管理器中啟動或終止IIS伺服器
(5)按照以上步驟(4)啟動IIS伺服器後,通過浏覽器通路http://localhost
如果出現如圖1-4所示的頁面,就表示IIS伺服器已經安裝和啟動成功。
圖1-4 通路IIS伺服器的首頁
1.2 準備相關檔案
在開始本節的操作之前,假定已經按照本章1.1節的步驟,在機器上安裝了IIS伺服器,接下來準備好以下3個檔案,它們的存放路徑為Tomcat根目錄的conf目錄下(<CATALINA_HOME>/conf):
(1)JK插件:isapi_redirect.dll檔案
(2)workers.properties檔案
(3)uriworkermap.properties檔案
1.JK插件
在源代碼包的sourcecode/iis目錄下提供了用于IIS的JK插件:isapi_redirect.dll,此外,也可以到以下位址下載下傳最新的JK插件:
http://tomcat.apache.org/download-connectors.cgi
把JK插件isapi_redirect.dll拷貝到<CATALINA_HOME>/conf目錄下。
針對不同的Windows版本,需要下載下傳不同的IIS JK插件。在配套源代碼包中,sourcecode/iis/isapi_redirect.dll适用于X86_64類型的Windows;sourcecode/iis/isapi_redirect_windows-i386.dll适用于i386型号的Windows。如果選用了不比對的JK插件,會導緻IIS伺服器無法加載它。
2.workers.properties檔案
在<CATALINA_HOME>/conf目錄下建立如下的workers.properties檔案。在配套源代碼包的sourcecode/ iis目錄下也提供了該檔案:
3.uriworkermap.properties檔案
在<CATALINA_HOME>/conf目錄下建立如下的uriworkermap.properties檔案,它為JK插件指定URL映射。在配套源代碼包的sourcecode/iis目錄下也提供了該檔案:
以上配置代碼表明worker1負責處理的URL包括“/*.jsp”,以及helloapp應用。
盡管把以上3個檔案都放在Tomcat目錄下,其實Tomcat伺服器并不會通路這些檔案。以上給出的是按照慣例的一種配置。事實上,也可以把這些檔案放在檔案系統的其他地方。另外,在實際操作過程中,發現把這個三個檔案放在相同的目錄下,更容易成功地把Tomcat與IIS內建。
1.3 編輯系統資料庫
在配置Apache和Tomcat內建時,JK插件的屬性是在Apache的配置檔案httpd.conf中設定的。配置IIS和Tomcat內建時,應該在作業系統的系統資料庫中設定JK插件的屬性,以下是操作步驟。
(1)在Windows 中通過regedit指令編輯系統資料庫,建立一個新的鍵:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector \1.0,如圖1-5所示。
圖1-5 在系統資料庫中建立Jakarta Isapi Redirector\1.0鍵
(2)在Jakarta Isapi Redirector\1.0鍵下面建立新的字元串,參見表1-1,建立好之後的系統資料庫如圖1-6所示。
表1-1 在Jakarta Isapi Redirector\1.0鍵下面建立的字元串
圖1-6 在Jakarta Isapi Redirector\1.0鍵下面建立新的字元串
在配套源代碼包的sourcecode/iis目錄下提供了系統資料庫編輯檔案jk.reg,如果不想按照以上方式手工修改系統資料庫,也可以直接運作jk.reg檔案(選中這個檔案再輕按兩下滑鼠即可),它會把以上配置内容自動添加到系統資料庫中。jk.reg的内容如下:
在運作jk.reg檔案之前,應該把檔案中的“C:\tomcat”目錄替換為讀者本地機器上Tomcat的實際安裝目錄。
1.4 在IIS中加入“jakarta”虛拟目錄
系統資料庫修改以後,應該在IIS中加入名為“jakarta”的虛拟目錄,它是JK插件所在的目錄,以下是操作步驟。
(1)選擇作業系統的【控制台】→【系統和安全】→【管理工具】→【Internet Information Services (IIS)管理器】,打開IIS管理器。
(2)選中視窗左側的目錄樹中的【Default Web Site】,單擊滑鼠右鍵,在下拉菜單中選擇【添加虛拟目錄】選項,如圖1-7所示。建立一個虛拟目錄,名為“jakarta”,對應的實際檔案路徑應該是isapi_redirect.dll檔案所在的目錄<CATALINA_HOME>/conf,參見圖1-8。
圖1-7 選中“添加虛拟目錄”菜單
圖1-8 添加虛拟目錄
1.5 把JK插件作為ISAPI篩選器加入到IIS
在IIS中加入名為“jakarta”的虛拟目錄後,還應該把JK插件作為ISAPI篩選器(也稱為過濾器)加入到IIS中,以下是操作步驟。
(1)在IIS管理器視窗左側的目錄樹中選擇“Default Web Site”節點,然後在右側視窗中選擇“ISAPI篩選器”欄目,添加新的ISAPI篩選器,篩選器名稱為“jakarta”,可執行檔案為<CATALINA_HOME>/conf /isapi_redirect.dll,如圖1-9所示。
圖1-9 添加新的ISAPI篩選器
(2)在IIS管理器視窗左側的目錄樹中選擇IIS主機節點,然後在右側視窗中選擇“ISAPI和CGI限制”欄目,然後添加一條新的ISAPI和CGI限制,參見圖1-10。在圖1-10中,要把“允許執行擴充路徑”選項打勾。
圖1-10 添加ISAPI限制
1.6 測試配置
重新開機Tomcat伺服器和IIS伺服器,通過浏覽器通路:
http://localhost/index.jsp
如果出現Tomcat的預設首頁,說明配置已經成功。此外,如果在Tomcat伺服器上已經釋出了helloapp應用(把配套源代碼包的sourcecode目錄下的helloapp目錄拷貝到<CATALINA_HOME>/webapps目錄下),可以通路:
http://localhost/helloapp/hello.htm
如果正常傳回helloapp應用的hello.htm網頁,說明配置已經成功;如果配置有誤,可以按照以下方法來查找錯誤原因:
(1)如果isapi_redirect.dll、workers.properties和uriworkermap.properties檔案沒有放在同一個目錄下,那麼嘗試把它們放在同一個目錄下。
(2)確定下載下傳的JK插件檔案與Windows版本比對。
(3)檢查是否在系統資料庫中注冊了“Jakarta Isapi Redirector”鍵。
(4)確定在IIS管理器中添加虛拟目錄和ISAPI篩選器時,提供的名字和檔案路徑都正确無誤。
(5)在IIS管理器中添加了虛拟目錄或ISAPI篩選器後,要重新啟動IIS伺服器才能生效。
可以檢視JK插件生成的日志資訊,它有助于查找錯誤原因。在系統資料庫中設定該日志檔案的存放位置為<CATALINA_HOME>/logs/isapi.log。
作者:孫衛琴