环境:
Windows 2003 Server中文版+IIS6+Tomcat5.0.28,JDK 1.4.2安装目录为C:j2sdk1.4.2_05,Tomcat安装目录为D:Program FilesTomcat 5.0,环境变量JAVA_HOME和TOMCAT_HOME都已设置好并指向其各自的安装目录。(注意,接下来所有文件中涉及到tomcat路径的请自行修改为自己的Tomcat路径)
  Tomcat5和IIS6的安装我就不说了,网上的文档很多,假定此时我们已经安装好了Tomcat5和IIS6并都能独立运行,两者的默认网站均指向C:web目录。
  现在我们要做的是 [url]http://apache.linuxforum.net/tomcat/tomcat-connectors/jk2/binaries/win32/jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip[/url] 去下载JK2, 由JK2负责IIS和Tomcat的通讯,解开后得到isapi_redirector2.dll,我把它放在了%TOMCAT_HOME%iis下(目录随便)。
1、在Tomcat安装目录下的conf目录下建一个workers2.properties文件,把下面这段东东拷进去保存。注意file=".."之中的路径要用"/"哦!
[shm]
file=c:/Tomcat/logs/jk2.log
size=1048576
# 实际运用时把所有的localhost和8009换成你自己的IP和端口
[channel.socket:localhost:8009]
port=8009
host=localhost
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*.jsp]
[uri:/web/*]
worker=ajp13:localhost:8009
# define the worker
[status:status]
# Uri mapping
[uri:/jkstatus/*]
worker=status:status
再建一个jk2.properties文件
内容如下:
request.tomcatAuthentication=false
2、在注册表中加入项 "HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationJakarta Isapi Redirector2.0"
在这个项中追加一个字串值,名称=extension_uri 值=/jakarta/isapi_redirector2.dll
在这个项中追加一个字串值,名称=log_level 值=debug (根据情况选择 debug/inform/error/emerg)
在这个项中追加一个字串值,名称=worker_file 值=$TOMCAT_HOMEconfworkers2.properties (根据自己环境作相应的设定) 注意:2.0不用加入confuriworkermap.properties文件,注册项的名称一定要正确,包括空格
当然也可以自建一个注册表文件 注册表.reg
内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationJakarta Isapi Redirector2.0]
"serverRoot"="$TOMCAT_HOME"
"extensionUri"="/jakarta/isapi_redirector2.dll"
"workersFile"="$TOMCAT_HOMEconfworkers2.properties"
"logLevel"="DEBUG"
你是否已经看出isapi_redirector2.dll文件所需要的这么几个参数?有兴趣可以去看isapi_redirector2.dll的源代码。
3.设置IIS
在默认Web站点上点击右键选"属性",在弹出的页框里选择"ISAPI筛选器",点"添加",筛选器名称填jakarta,可执行文件中填入你的isapi_redirector2.dll的绝对路径。"确定"后点"确定"关闭属性页。再在"默认网站"上右键,选择"新建"->"虚拟目录",别名填jakarta,下一步,路径选为你的isapi_redirector2.dll存放的目录,我的是C: omcatiis,下一步,权限中记得把"执行"那项打勾,好了,完成。
  如果你用的是IIS5的话,到这里就可以结束了,但IIS6还没完,继续。
  在"Internet信息服务管理器"的"网站"中的"Web服务扩展"上点右键选择"添加一个新的Web服务扩展",弹出的框中扩展名填Tomcat(其实无所谓的),"要求的文件"选"添加"然后找到你的isapi_redirector2.dll后"确定"。"设置扩展状态为允许"也打上勾,确定。
  好了,配置完了。现在我们启动Tomcat5,然后net start w3svc启动IIS6。键入[url]http://localhost:8080/hello.jsp[/url](这个文件是我放在c:web下的)看看!然后再看看[url]http://localhost/hello.jsp[/url],如果两者执行结果一样,恭喜你,整合成功了!
  但或许此时还不行,这时你该确认以下几点:
  1.你的"Internet信息服务管理器"->"网站"->"默认网站"->"属性"->"ISAPI筛选器"中的jakarta是否是向上的绿色箭头?如果是红色的,检查一下你之前做的配置有没有少了或是写错了点什么,再重新配置一遍
  2.确认你的Tomcat安装目录下的commonlib目录中是否有tools.jar文件(Tomcat5好像是有的,但Tomcat4中是没有的),没有的话从JDK的lib下拷一个过去。
  3.IIS指向的目录最好和Tomcat指向的目录一致,不然会发生找不到图像和其他资源文件的问题。(这点不影响执行)
  4.英文文档中还提到应该把IIS6设置为IIS5隔离模式,"Internet信息服务管理器"->"网站"->"属性"->"服务",把"以IIS5.0隔离模式运行WWW服务"打上勾。不过我不打勾也能正常使用,如果你配置不成功也可以试试这个。
现在我们尝试一下[url]http://localhost:8080/../hello.jsp[/url],是不是jsp文件的源代码都出来了?我们现在来修补一下这个缺陷。
解决方法:控制面板->管理工具->Internet服务管理器,选中"所有网站"->属性,在"主属性"中点击"编辑",进入"WWW服务主属性"页面,选择"主目录",点击"应用程序设置"中的"配置",添加一个ISAPI应用程序,可执行文件就用那个isapi_redirector2.dll,扩展名用jsp,确定,然后重启IIS,问题解决!!!