原理:在iis中使用isapi_redirect转发给tomcat服务器处理
环境:
windows 7, iis7, apache-tomcat-7.0.53
一:正确安装iis
注意:
当然建议先安装iis,然后再安装.net framework,否则会出现IIS HTTP错误 404.17-Not Found这样奇怪的错误
三:下载isapi_redirec
下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
特别注意,32位及64位系统使用对应的dll,否则会出现类似 调用GetFilterVersion失败 这样的异常
32位使用:tomcat-connectors-1.2.40-windows-i386-iis.zip
64位使用:tomcat-connectors-1.2.40-windows-x86_64-iis.zip
解压得到isapi_redirec的dll,将其重命名为:isapi_redirect.dll
四:配置isapi_redirec第一步
1:在Tomcat的安装文件夹【tomcat_home】下面新建文件夹jakarta,将isapi_redirect.dll 文件拷贝到里面
2:将isapi_redirect.dll文件拷贝到 【tomcat_home】/conf/ 文件夹下面
五:配置isapi_redirec第二步
有以下两个方式,下面第一个方式是大多网友的文章描述的,但是我是没有试验成功,估计跟系统设置、系统版本等因素有关,就没必要深究了,建议使用方式二
1:方式一
新建isapi_redirect.reg注册表文件,然后双击整合到注册表中
内容:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\2.0] "extension_uri"="/jakarta/isapi_redirect.dll" "log_file"="D://sw//tomcat7//logs//isapi_redirect.log" "log_level"="debug" "worker_file"="D://sw//tomcat7//conf//workers.properties" "worker_mount_file"="D://sw//tomcat7//conf//uriworkermap.properties" "tomcat_start"="D://sw//tomcat7//bin//startup.bat" "tomcat_stop"="D://sw//tomcat7//bin//shutdown.bat"
2:方式二
在【tomcat_home】/conf/ 文件夹下面(isapi_redirect.dll文件在里面), 新建立一个与dll文件名相同,扩展名为properties的配置文件,即:isapi_redirect.properties,isapi_redirector.dll初始化时,默认会在自己所在的目录寻找同名的配置文件,如果没有再到注册表中读取配置信息.
isapi_redirect.properties的内容:
extension_uri=/jakarta/isapi_redirect.dll log_file=D:/sw/tomcat7/logs/isapi_redirect.log log_level=debug worker_file=D:/sw/tomcat7/conf/workers.properties worker_mount_file=D:/sw/tomcat7/conf/uriworkermap.properties
特别特别特别注意
isapi_redirect.properites的文件需要注意编码问题,在本次测试中我使用ansi编码才行,之前使用utf-8编码存储的时候,发生调用 GetFilterVersion 失败
六:配置isapi_redirec第三步
在【tomcat_home】/conf/ 文件夹下面新建workers.properties文件
workers.properties内容
workers.tomcat_home=D:\sw\tomcat7\ workers.java_home=C:\Program Files\java\jdk.1.7.0_67 ps=/ #testiistom、examples为访问Tomcat服务器的一个标签, #对应【tomcat_home】/webapps/文件夹下面的testiistom和examples文件夹,可以设置多个,用逗号隔开 worker.list=testiistom,examples worker.testiistom.type=ajp13 worker.testiistom.host=localhost worker.testiistom.port=8009 worker.testiistom.lbfactor=1 worker.examples.type=ajp13 worker.examples.host=localhost worker.examples.port=8009 worker.examples.lbfactor=1
七:配置isapi_redirect第四步
在【tomcat_home】/conf/ 文件夹下面新建uriworkermap.properties文件
uriworkermap.properties内容:
/testiistom/*=testiistom /examples/*=examples
1:等号左边是路径规则,符合此规则的就通过Connector转发给tomcat
比如说在浏览器上访问 http://localhost/examples/,符合 /example/*的规则,那么它就会转发给Tomcat对应的worker,转发目标worker名称为examples
2:等号右边即是workers.properties文件定义的worker
八:配置IIS步骤一
1:打开IIS,点击电脑节点,即最顶端那个节点
2:在中间区域框中找到【ISAPI和CGI限制】,双击它
3:双击【ISAPI和CGI限制】后,在右边框点击【添加】
ISAPI或CGI路径(I): 选择【tomcat_home】\conf\isapi_redirect.dll
描述:jakarta
允许执行扩展路径(A):要勾选
九:配置IIS步骤二
1:打开IIS,点击网站下面的【Default Web Site】节点
2:在中间区域框找到【ISAPI筛选器】,双击它
3:双击【ISAPI筛选器】后,在右边框点击【添加】
筛选器命名(F):jakarta
可执行文件(E):选择【tomcat_home】\conf\isapi_redirect.dll
十:配置IIS步骤三
1:打开IIS,点击网站下面的【Default Web Site】节点
2:在中间区域框找到【处理程序映射】,双击它
3:双击【处理程序映射】后,在右边框点击【添加脚本映射...】
请求路径: *.jsp
可执行文件(E):选择【tomcat_home】\conf\isapi_redirect.dll
名称:JSP
十一:配置IIIS步骤四
1:打开IIS,右键点击网站下面的【Default Web Site】-》添加虚拟目录
名称:jakarta
物理路径:【tomcat_home】\conf
说明:在你需要整合Tomcat的网站(例如Default Web Site)下面,都要建立jakarta虚拟目录,并指向【tomcat_home】\conf,这个虚拟目录的名称必须与 五:配置isapi_redirec第二步 中配置的extension_uri的名称相同
十二:配置IIIS步骤五
1:打开IIS,点击网站下面的【Default Web Site】节点下面的 jakarta 虚拟目录节点
2:在中间区域框找到【处理程序映射】,双击它,然后在右边框找到【编辑功能权限】,将所有的权限都勾选
十三:测试
1:在testiistom文件夹下面新建test.jsp文件
test.jsp内容:
<%@ page contentType="text/html;charset=gb2312" %> <HTML> <HEAD> <TITLE>JSP测试页面</TITLE> <HEAD/> <BODY> <% out.println("<h1> Hello World! </h1>"); %> </BODY> </HTML>
2:重启iis
3:重启tomcat
4:测试访问
http://localhost/ //显示iis主页
http://localhost:8080 //显示Tomcat主页
http://localhost/examples/ //符合/example/*规则,跳转到Tomcat对应的example项目
http://localhost/testiistom/test.jsp //符合/testiistom/*规则,跳转到Tomcat对应的testiistom项目的test.jsp文件并运行
5:注意
修改了properties文件后,需做如下操作
关闭iis 的网站(例如你使用的是Default Web Site)-》
停止Default Web Site对应的程序池,然后再次启动,然后进行程序池回收 -》
启动程序池-》
启动Default Web Site(或者点多几次重新启动) -》
启动Tomcat
另外,如果上面操作无数次你还是无法启动IIS,或者启动IIS以及Tomcat后,连Asp.net网站都无法访问的,恭喜,我不知道原因,重启系统,又OK,呵呵。