如何讓IIS5.0 與Tomcat 5.0協(xié)同工作(轉(zhuǎn)貼:http://www.bbbear.org/admin/mt-tb.cgi/2)

作者環(huán)境:
Windows 2000 SP4 + IIS 5.0 + JDK 1.4.2
Tomcat安裝路徑:C:\Tomcat 5.0
Jdk1.4 安裝路徑:C: \j2sdk1.4.1_02
JAVA_HOME :C: \j2sdk1.4.1_02
CLASSPATH :.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\LIB\DT.JAR;

前期準(zhǔn)備:
?在整合之前作者假定您已經(jīng)成功的安裝好了JDK1.4.2(現(xiàn)在SUN已經(jīng)發(fā)行了JDK5.0,這里我只以JDK1.4.2為例,因?yàn)榫唧w使用什么JDK并不影響服務(wù)器的配置,JDK的作用是在IIS已經(jīng)將HTTP請求轉(zhuǎn)發(fā)給Tomcat以后才起作用,所以等你完全配置好了您的服務(wù)器之后再重新安裝更高的JDK也不會有什么大的問題。:),并配置好了JAVA_HOME和CLASSPATH環(huán)境變量。

開始安裝:
1.安裝Tomcat5.0
安裝模式不用normal,而是選擇full(這樣會把Tomcat安裝成服務(wù)模式啟動,而且還有tomcat的源代碼),然后按照提示進(jìn)行。我的Tomcat裝在C:\Tomcat 5.0下,安裝路徑您可以自行設(shè)置,但如果你修改了安裝目錄,那我后面介紹到的配置文件的相應(yīng)目錄您也必須一并修改。

2.設(shè)置環(huán)境變量TOMCAT_HOME
在桌面上“我的電腦”圖標(biāo)上點(diǎn)右鍵選“屬性”->“高級” -> “環(huán)境變量” -> “系統(tǒng)變量”-> 新建變量名:TOMCAT_HOME,變量值:C:\Tomcat 5.0,點(diǎn)“確定”保存。

3.拷貝isapi_redirector2.dll
在C:\Tomcat 5.0\conf下新建“jk2”文件夾(這個目錄您可以自行設(shè)置,但這將影響到后面相關(guān)配置文件的參數(shù)),然后復(fù)制isapi_redirector2.dll到C:\Tomcat 5.0\conf\jk2下面。

4.創(chuàng)建workers2.properties
創(chuàng)建workers2.properties到C:\Tomcat 5.0\conf下,文件內(nèi)容如下:
[shm]
file= C:/Tomcat 5.0/logs/jk2.log
size=1048576

# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

# define the worker
[ajp13: localhost:8009]
channel=channel.socket:localhost:8009

# Uri mapping
[uri:/*.jsp]
[uri:/servlets-examples/*]
worker=ajp13:localhost:8009

# define the worker
[status:status]

# Uri mapping
[uri:/jkstatus/*]
worker=status:status

使用前請將文件的第二行:file= C:/Tomcat 5.0/logs/jk2.log 中的C:/Tomcat 5.0改成您的Tomcat安裝路徑。

5.創(chuàng)建jk2.properties
創(chuàng)建jk2.properties到C:\Tomcat 5.0\conf下。其內(nèi)容如下:
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
# handler.list=apr,request,channelJni
#
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config? is working
# shm.file=${jkHome}/work/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
#request.tomcatAuthentication=true

request.tomcatAuthentication=false

6.創(chuàng)建并導(dǎo)入注冊表文件isapi_redirect.2.0.reg
?創(chuàng)建并導(dǎo)入注冊表文件isapi_redirect.2.0.reg,其內(nèi)容如下:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi ?Redirector]

[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\2.0]
"serverRoot"="C:\\Tomcat 5.0"
"extensionUri"="/jakarta/isapi_redirector2.dll"
"workersFile"="C:\\Tomcat 5.0\\conf\\workers2.properties"
"logLevel"="DEBUG"
導(dǎo)入之前請先修改注冊表文件,把serverRoot 和workersFile的“C:\\Tomcat 5.0”替換成您的Tomcat安裝路徑。

7.設(shè)置IIS的ISAPI篩選器
點(diǎn)擊“開始菜單” -> “設(shè)置” -> “控制面板” ->“ 管理工具” -> “Internet 服務(wù)管理器”,然后找到 你的站點(diǎn)(我的計算機(jī)名是BBBear,“默認(rèn) Web 站點(diǎn)”)。點(diǎn)右鍵 -> “屬性”->“ISAPI篩選器”->“添加”->篩選器名稱:jakarta,可執(zhí)行文件:C:\Tomcat 5.0\conf\jk2\isapi_redirector2.dll。點(diǎn)“確定”保存。(這里的jk2是第3步使用的文件夾。)

8.配置用于重定向的虛擬目錄(非常關(guān)鍵的一步
在“默認(rèn) Web 站點(diǎn)”點(diǎn)右鍵 -> “新建” ->“ 虛擬目錄” -> “下一步” -> 別名填:jakarta ->下一步->目錄選擇為:C:\Tomcat 5.0\conf\jk2 -> 下一步 -> “執(zhí)行(例如ISAPI應(yīng)用程序或CGI)”一項(xiàng)一定要打上勾 -> 下一步 -> 完成。(一定要注意jakarta的名字不能改變,因?yàn)檫@個名字對應(yīng)這注冊表里jakarta對應(yīng),如果名字拼寫錯誤將導(dǎo)致失敗。)

9.檢查篩選器配置
重新啟動“默認(rèn) Web 站點(diǎn)”。然后在“默認(rèn) Web 站點(diǎn)”點(diǎn)右鍵 ->“屬性”->“ISAPI篩選器”,如果“jakarta”前面的箭頭是綠色的而且優(yōu)先級為“高”,那么表明配置已經(jīng)成功了。如果箭頭是紅色,那么請您重新檢查整個配置過程,看看有沒有弄錯的地方。如果確認(rèn)一切正確無誤,那就請您重新啟動機(jī)器,注意一定是重新啟動機(jī)器而不是重新啟動IIS,再重新查看其狀態(tài),這樣一般可以解決這個問題。

10.設(shè)置環(huán)境變量TOMCAT_HOME
桌面上,“我的電腦”點(diǎn)右鍵 ->“屬性”-> “高級”->“環(huán)境變量”->“系統(tǒng)變量”->新建變量名:TOMCAT_HOME, 變量值:C:\Tomcat 5.0 -> 點(diǎn)“確定”保存。

11.拷貝JAVA編譯工具包Tools.jar
把C: \j2sdk1.4.1_02\lib目錄下的tools.jar復(fù)制到Tomcat安裝目錄下的common\lib的目錄下(C:\Tomcat 5.0\common\lib\下)。

12.添加默認(rèn)文檔
“開始菜單” -> “設(shè)置” -> “控制面板” -> “管理工具” -> “Internet 服務(wù)管理器” -> 找到你的站點(diǎn)(我的計算機(jī)名是BBBear ,“默認(rèn) Web 站點(diǎn)”)-> 點(diǎn)右鍵 -> “屬性” -> “文檔”->添加->輸入“index.jsp”-> 確定 -> 再添加“index.html”-> 確定(因?yàn)橹@是Tomcat的默認(rèn)起始頁面)-> 。

13.設(shè)置網(wǎng)站根路徑
“主目錄”-> “本地路徑”一欄,選擇“C:\Tomcat 5.0\webapps\ROOT”。

14.重新啟動Tomcat和IIS
重新啟動Tomcat 然后再重新啟動IIS,

15.檢驗(yàn)我們的成果
  首先,打開http://localhost/。您看到了什么,對,Tomcat的默認(rèn)頁面。熟悉的“貓”的形象是不是讓您感覺到激動呢。嗯,不慌,好戲還在后面呢。其實(shí)到看到了Tomcat起始頁面您不應(yīng)該感到驚奇,因?yàn)槟屑?xì)看看這個頁面的后綴您就明白了,“HTML”對,它只是一個靜態(tài)頁面,而且是由IIS解析的。
  然后,您現(xiàn)在試著打開http://localhost/jsp-examples看看,返回“該頁無法顯示”的錯誤頁面,為什么?嗯,其實(shí)原因很簡單,因?yàn)槲覀兊腎IS的默認(rèn)目錄在/webapps/root下,而jsp-examples目錄是與root屬于同一級別的子目錄。所以當(dāng)您使用上述路徑訪問的時候IIS無法在root目錄下找到j(luò)sp-examples。怎么辦?嗯,如果您對IIS很熟悉的話,您一定能想到,對,在IIS中的當(dāng)前站點(diǎn)建立虛擬目錄就好了。
  接著,我們現(xiàn)在在IIS中建立名為jsp-examples,路徑為C:\Tomcat 5.0\webapps\jsp-examples的虛擬目錄(這個目錄是Tomcat自帶的Jsp例子程序),同時建立一個名為servlets-examples,路徑為C:\Tomcat 5.0\webapps\servlets-examples的虛擬目錄(這個目錄對應(yīng)的為Tomcat自帶的Servlet的例子程序)。為什么要這么做?待會您就知道了。
  現(xiàn)在您再使用http://localhost/ 這個路徑來訪問,然后在出現(xiàn)的Tomcat起始頁面的左下方找到JSP Examples 和 Servlet Examples 的鏈接,您點(diǎn)擊其中的 JSP Examples 后您就可以看到一個 JSP Samples 的頁面,在這里有許多的JSP例程,您隨便找一個,然后單擊“Execute”,看看結(jié)果是什么?如果是正常的返回結(jié)果頁面,嗯,恭喜您,這代表我們可以開始驚呼了,因?yàn)檫@代表我們前面的努力都得到了回報,IIS已經(jīng)成功的將JSP頁面交給Tomcat來解析。
  最后,現(xiàn)在讓我們來看看讓IIS轉(zhuǎn)發(fā)Servlet請求,我們先回到Tomcat起始頁面,然后試著點(diǎn)擊Servlet Examples 鏈接,嗯,同樣您將看到一個Servlet Samples頁面,現(xiàn)在您也隨便找一個Servlet程序然后點(diǎn)擊“Execute”看看,如果不出意外,您應(yīng)該看到正確的返回結(jié)果。嗯,我現(xiàn)在鄭重的宣布,您已經(jīng)成功完成了Tomcat與IIS的完美結(jié)合。恭喜!!

16.還需要羅嗦幾句
當(dāng)您在調(diào)試的時候配置都沒有問題,但是就是出現(xiàn)“該頁無法顯示”的頁面?為什么?在這里您需要注意以下幾點(diǎn):
  第一,Tomcat的啟動是需要一些時間的,尤其是您在Tomcat上使用Struts構(gòu)建的站點(diǎn),這個問題尤其突出。要看Tomcat是否成功啟動,您可以查看Tomcat的日志文件:c:\tomcat\logs\stdout.log,如果已經(jīng)包含“Server startup in 1125 ms”,則證明Tomcat服務(wù)已經(jīng)啟動成功。
  第二,在調(diào)試中容易出現(xiàn)一些很奇怪的現(xiàn)象,例如:改變了配置,但是執(zhí)行的結(jié)果頁面卻沒有任何變化。嗯,這個問題在開發(fā)Web程序最容易出現(xiàn)的問題,在這里我也根據(jù)自己開發(fā)Web程序的經(jīng)驗(yàn)告訴你一些避免的方法,當(dāng)你在改變配置后,您最好不要在以前的打開頁面上繼續(xù)嘗試,應(yīng)該重新打開一個窗口,因?yàn)镮E在訪問有頁面緩存,他會保存一些已經(jīng)被打開的頁面來提高性能,但這個性能對于開發(fā)者來說可能就是惡夢了。
  第三,您在更改workers2.properties這個文件后,如果想讓其生效您必須重新啟動IIS,注意是完全啟動,而不是在IIS管理器中停止,而是要讓IIS進(jìn)程重新啟動,當(dāng)然如果您也可以啟動您的計算機(jī)。
  第四,workers2.properties中的[URI]部分很值得注意,這部分的功能是告訴IIS,什么后綴的文件請求將轉(zhuǎn)發(fā)給Tomcat來解釋,在本文中您可以看到這部分的內(nèi)容如下:
  [uri:/*.jsp]
  [uri:/servlets-examples/*]
  
  [uri:/*.jsp],這句話的意思是所有的JSP文件將 由Tomcat來解釋。
  [uri:/servlets-examples/*] ,而這句話的意思是專門針對servlet的,因?yàn)樵趫?zhí)行servlet的時候沒有擴(kuò)展名,所以如果沒有此條語句,那么當(dāng)您在執(zhí)行servlet的時候就會出現(xiàn)找不到頁面的錯誤。而此處使用的/servlets-examples正好為Tomcat自帶的Servlet例子程序的目錄。同時它也對應(yīng)著IIS的虛擬目錄servlets-examples。如果您在[URI]字段中使用如下的語法,[uri:/*],那就意味著IIS會將當(dāng)前虛擬站點(diǎn)中的所有文件都交給Tomcat來解釋。
  第五,IIS中的虛擬目錄并不等于Tomcat的Server.xml中配置的上下文(Context)。而且您必須注意的是,如果您的IIS中為包含JSP或者Servlet的目錄配置了虛擬目錄,您不要忘記要在Tomcat中配置與目錄名相同的上下文,當(dāng)然,Tomcat 會自動的將主機(jī)根目錄下的目錄配置成為上下文,這當(dāng)然也是可以實(shí)現(xiàn)的,但是畢竟這并不可控,所以建議大家都為專門的目錄建立對應(yīng)的上下文。