1、整合 iis 与 tomcat,让服务器既运行 jsp 又运行 asp 2012 年 6 月 8 日 赵 QQ16921920 原创 前言:在网上找了好多攻略,各家都成功配置了,可是都没说到足够细致,为此,我走了一个多礼拜的弯路。最后终于也配置成功了,将全部过程留档备忘。 一、环境: iis6.0 tomcat6.0 jdk1.6 Windows2003Server 服务器原本是 jsp 架设,已经运行 N 久,最近我才接手。 二、准备工作:下载 isapi_redirector2.dll 220k 大小的 220580 字节 的版本 三、 设置 iis tomcat jdk 这些就不细说了。
2、 四、设置环境变量,我的电脑 -属性 -高级 -环境变量。 新建: CATALINA_BASE CATALINA_HOME TOMCAT_HOME 这三个都指向 tomcat 文件夹 classpath 内容如下 .;%JAVA_HOME%libdt.jar;%CATALINA_HOME%commonlibservlet-api.jar;%JAVA_HOME%libtools.jar; 注意小点和分号都不能少 JAVA_HOME 指向 jdk 文件夹 path 内容如下 %SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;C:P
3、rogram FilesMicrosoft SQL Server80ToolsBinn;.;%JAVA_HOME%bin;%CATALINA_HOME%lib;C:Program FilesMicrosoft SQL Server90DTSBinn;C:Program FilesMicrosoft SQL Server90Toolsbinn;C:Program FilesMicrosoft SQL Server90ToolsBinnVSShellCommon7IDE;C:Program FilesMicrosoft Visual Studio 8Common7IDEPrivateAssembl
4、ies;%JAVA_HOME%bin 其实就是在最后增加了 ;%JAVA_HOME%bin 五、拷贝文件: 经研究发现,服务器的 tomcat/文件夹中不存在 common 文件夹 而网上多 次提到要用 tomcat/common/lib/tools.jar 文件等 干脆,在 tomcat/下 新建 common 文件夹,然后复制 tomcat/lib 至 tomcat/common/lib 又从 jdk/lib/ 复制所有 .jar 至 tomcat/common/lib/ 下 六、设置 tomcat/conf/文件夹内的文件 1、 建个文件夹 tomcat/conf/jk2/ 复制 isa
5、pi_redirector2.dll 到此 2、 修改注册表,导入如下内容的 .reg Windows Registry Editor Version 5.00 HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationJakarta Isapi Redirector2.0 “serverRoot“=“E:Tomcat 6.0“ “workersFile“=“E:Tomcat 6.0confworkers2.properties“ “logLevel“=“DEBUG“ “extensionUri“=“/jakarta/isapi_redirecto
6、r2.dll“ 3、记事本打开 jk2.properties 在最后加一行 request.tomcatAuthentication=false 4、新建 workers2.properties 内容如下 shm file=“E:/Program Files/Apache Software Foundation/Tomcat 6.0/logs/jk2.log“ size=1048576 channel.socket:localhost:8009 host=localhost port=8009 # define the worker ajp13:localhost:8009 channel=c
7、hannel.socket:localhost:8009 worker=ajp13:localhost:8009 # Uri mapping uri:/ uri:/*.jsp uri:/*.do uri:!/*.asp status:status worker=status:status 重点是 uri:/这句,网上别人都写的是 uri:/*,这是严重误导! 如果加了 *号, .asp 文件也会被 tomcat 解析,导致无法打开,甚至原网页上的播放器播放的 .wmv 都不能识别,而无法播放,子文件夹的 .asp 也无法解析。 有的人就提出不写这行 uri:/那也不行 会导致点开主页比如 ht
8、tp:/localhost 找不到 index.jsp 也不执行 index.htm 或 index.asp, 就是找不到主页执行,稍后讲怎么配置 index.jsp 为主页 5、打开 server.xml 找到 这行,将前后的 去掉。此处也是重点! 有的版本的 tomcat 安装完毕之后,关于 AJP 和 8009 这里都是被注释起来,不执行的。我就是因为这里,怎么配置也不能实现 iis 和 tomcat 整合,后来在百度的千贴万页中好不容易看到这么一行,赶紧去掉了注释符号,成功整合! 找到 6、打开 web.xml 拽到最下面,写成如下 index.html index.htm index
9、.jsp 七、设置 IIS 1、默认网站,端口 80,主目录选择 /webapps/root/ 2、默认网站,右键属性, isapi 筛选器,添加 jakarta ,选择指向 isapi_redirector2.dll,勾上执行的框。 3、默认网站下,新建虚拟目录,指向 isapi_redirector2.dll 所在的文件夹,我的是 E:tomcat6.0confjk2 4、在 iis 中,修改 web 扩展服务,增加一个 jakarta 服务,指向 isapi_redirector2.dll 文件,勾上“允许” 5、在 jakarta 虚拟目录上右键,属性,选择“配置”,添加 .do 和
10、.jsp,用 isapi_redirector2.dll作为可执行文件 八、到这里,基本整合完成,然后在 webapps/root/下做一个 index.jsp作为主页,在 webapps/root/下建一个 WEB-INF文件夹,里面弄一个 web.xml 最后面写上 index.jsp 这样, /root/的主页就做好了 九、现在, isapi 筛选器应该是绿色向上箭头,访问 http:/localhost/ 能够 实现和 http:/localhost:8080/一样的效果,而访问 http:/localhost/xxxx.asp 也能够正常解析 十、之前我遇到的问题: uri:/这里写
11、成 uri:/*结果访问 jsp 正常, asp 无法解析,网页的 .wmv 视频也无法播放。 这句不写,就能访问 asp,访问指定的 jsp,但是访问路径,却不自动跳到 index.jsp。 即使在 iis 中设定 index.jsp 为主页也不好使。因为整合之后, iis 只负责解析 asp,而主页、路径之类的都已经由 tomcat 接手了。 筛选器如果不是绿色向上箭头,需要先确定 web 扩展服务是否已经允许和运行,然后重启电脑。 workers2.properties 一经修改,需要重启 iis,不用重启服务器,重启 iis 的命令为 开始 -运行 -cmd-输入 iisreset /
12、restart 即可 workers2.properties 中的 uri:!/*.asp这行其实没起作用 网上很多人写的 workers2.properties 代码中包含很多没用的信息,比如 info=xxxx 都是注释信息,可以不写,至于 status:status worker=status:status 这两句 则必须保留 。 里面的端口 8009 强烈建议不要改,就用这个,网上很多都写什么修改成你自己的端口,这反而是误导,我改了别的都运行不起来。后来发现在 server.xml 中根本就已经定义了 8009端口是 ajp13 的端口,就别改了,要改还得一起改,麻烦且可能出现别的错误
13、。 网上还有一种整合方法是建立 workers.properties (没有数字 2)和 uriworkermap.properties 然后在注册表中,修改 Jakarta Isapi Redirector1.0 这种方法我也尝试了,不过没成功,后来电脑中两套并存,但是起作用的是workers2.properties 这套方法。 Server.xml 和 Web.xml 要做好备份再仔细看和修改,别改错了,有的注释去掉了,反而导致tomcat 出错,甚至无法运行。 十一、感谢和参考文献(参考网站:) http:/ iis5 整合 tomcat6 的详细配置 - chinamfm的专栏 - 博
14、客频道 - CSDN.NET http:/ 原创【整合 iis+tomcat(成功)】 - - BlogJava http:/ 整合 IIS 与 tomcat(共用 80 端口的配置方法 )-学院 技术文摘 -红黑联盟 http:/ IIS6.0+tomcat6.0+JK 整合 (8080端口和 80 端口共用 jsp 网站 )_百度文库 http:/ IIS+TOMCAT_百度文库 附本人依然没有解决的问题: 之前服务器使用了 urlrewrite 组件,可以将 .do?id=123 隐藏转换成 newstg_123,可是这样一来, iis 就无法识别,也就不能转给 tomcat 解析,所以打开 newstg_123 这类都是失败的页面。目前为了实现 iis 和 tomcat 的整合,只好先忍痛割去 urlrewrite 组件和功能,实在是一大遗憾,希望有人能解决之。