目录
- 序
- 摘要
- 准备工作
- 下载
- Java 2 SDK 1.4.2 (或更高版本)
- Tomcat 5.0.24 (或更高版本)
- Tomcat Web Server 连接器
- 安装
- Java 2 SDK
- Tomcat 5
- Tomcat JK2 IIS 连接器
- 设置
- Tomcat
- Tomcat IIS 连接器
- Windows
- IIS
- 设置ISAPI筛选器
- 创建ISAPI筛选器使用的虚拟目录
- 重新启动IIS服务
- 测试
- Tomcat
- IIS
- 参考文献
序
最近遇到一个项目,无法避免的需要将IIS和Tomcat协调起来协同工作,同时解析asp和jsp两种脚本语言。
查看Tomcat官方HowTo,几经操作并未成功。查看网上讨论,发现中文资料介绍的都是tomcat4.x版本的配置方法,老旧已经不适用。后来对照多篇英文资料,学习、操作之后获得成功。
鉴于讨论此问题的中文资料之匮乏,遂决定将我的配置过程整理,但愿对同好者有所帮助。
此文章论述内容、书写格式仿照了http://virtualict.net/support/kb/iis6-Tomcat5-JK2.html,并引用了其中部分文字。
在我配置、翻阅资料的过程当中,感觉到了IIS、Apache Tomcat、JK2等官方文档对此问题论述的不详尽,甚至有时候感觉到了被误导,以至增加了解决问题的难度,期待与大家讨论。
本人的配置环境
window 2K professional sp4
IIS 5.0
j2sdk1.4.2_04
jakarta-tomcat-5.0.24
jakarta-tomcat-connectors-jk2.0.4
配置过程中涉及的路径如果没有特殊说明,则都不是系统要求,大家可以修改以适应自己机器的环境。
这里是另一个自动安装程序,使用方法本文不做讨论
Isapi redirector jk2.02 Installer - Integrating Tomcat with IIS
摘要
这是一篇讲述如何安装、配置Tomcat 5 Java Servlet & JSP服务到微软IIS 5.0服务器的文章,这篇文章是本人自己配置过程和经验的总结,并推荐了一些给过本人极大帮助的文档。
掌握方法的朋友只需要15分钟就能完成整个配置过程。
准备工作
Microsoft Windows 2000 professional, IIS5 已经安装并工作正常
需要下载的软件:
- Java 2 Standard Edition Software Development Kit 1.4.2.04 (或更高版本)
- Jakarta Tomcat 5.0 (或更高版本)
- jakarta Tomcat Connectors-JK2.0.4(或更高版本)
由于版本更新的问题,这里没有给出软件的准确下载地址,但根据下面的链接用户可以很容易找到所需软件的确切地址。
Java 2 SDK 1.4.2 (或更高版本)
来自 java.sun.com/downloads/ 选择 the J2SE 1.4.2 (或更高版本) All platforms
然后按照提示进入文件列表页面,下载文件
Tomcat 5.0.24 (或更高版本)
来自Apache Jakarta的for Win的编译版本。Tomcat 5.x 应该在页面的底部。写此文章的时候Tomcat已经发布了5.0.25版,不过配置过程是一样的。
选择 5.0.24 可执行文件 (或更高版本)
Tomcat Web Server 连接器
同样在Apache Jakarta下载页面。Tomcat Web Server 连接器就在Tomcat 5.0.24链接的下面
选择 JK2 编译版本
选择 win32, 然后选择下载jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip
注意 这个目录列表显示的文件名称被截断,所以你需要观察浏览器状态栏中的提示,确认你准备下载的文件应该是以"...iis.zip"为结尾的
安装
建议大家把下载的文件放在同一个文件夹里。
Java 2 SDK
运行j2sdk-1_4_2_04-windows-i586-p.exe 按照提示安装
可以更改安装路径到你习惯的地方
Tomcat 5
运行jakarta-tomcat-5.0.24.exe 按照提示安装.
如果要改变安装路径,可以在这个步骤操作。
可以更改至其它路径,如 C:/Tomcat 5.0
设定密码,妥善保管密码,不推荐空密码。
这个步骤是选择本地机器的jdk路径,一般情况下,安装文件会自动搜索并显示,如果没有正确显示,也可以手动更改。
成功安装后,程序会提示启动tomcat并查看readme文档。
注意: 启动Tomcat之前要确定系统没有其它服务已经占用8080端口(Tomcat默认端口)和8009端口( Tomcat's AJP13 连接器端口)
Tomcat正常启动后会在系统栏加载图标
在图标上右键鼠标可以看到一些设置项目
点击Configure...看到如下显示,选择Startup type为automatic自动启动。
Tomcat JK2 IIS 连接器
解压缩jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip得到如下文件夹
进入/bin/后可见
剪切/复制isapi_redirector2.dll 文件到Tomcat's bin/目录中
新建目录win32/i386/ 并粘贴isapi_redirector2.dll。
记住这个路径,稍后配置IIS的时候还会用到。这个路径不是系统要求的,可改变!
现在可以删除jakarta-tomcat-connectors-jk2.0.4-win32-IIS目录,这里面的文件已经没用了。实际上在jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip中我们只用到了isapi_redirector2.dll一个文件
设置
Tomcat
进入 Tomcat's conf/ 文件夹.
要支持 JK2 连接器, 你可能需要修改jk2.properties文件. 大多数情况下保留此文件的默认状态即可,本人的多次配置过程都没有修改过这个文件。
## 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
现在轮到workers2.properties,这个文件需要自己创建,内容如下(附件中有一个copy)
红色的这行要注意了,把"C:/Tomcat 5.0/work/"这个路径修改成你自己的路径,而jk2.shm这个文件不用担心,它现在不存在也没有关系,它会在需要的时候自动被创建。
[shm:] info=Shared memory file. Required for multiprocess servers file=C:/Tomcat 5.0/work/jk2.shm size=1000000 [channel.socket:localhost:8009] info=Ajp13 worker, connects to tomcat instance using AJP 1.3 protocol tomcatId=localhost:8009 [uri:/jsp-examples/*] info=JSP examples, map requests for all JSP pages to Tomcat. context=/jsp-examples [uri:/servlets-examples/*] info=Servlet examples, map requests for all servlets to Tomcat. context=/servlets-examples
看过网上的讨论,有些朋友配置过程中的问题就出现在这里,所以多讲几句:
这个文件中指定了解析jsp的目录,也就是"http://xxxxx/dir/aa.jsp"这个url中的"dir",比如我们的网站中要增加/dir/这个路径,并使这个路径下面的jsp能够被解析,那你就需要在workers2.properties文件中增加这样一段话
[uri:/dir/*]
info=JSP examples, map requests for all JSP pages to Tomcat.
context=/dir
并且在Tomcat的工作目录中建立"/dir/"这个目录。比如我们到现在为止,Tomcat的工作目录是默认的"/ROOT/",那我们就需要在"/ROOT/"路径下新建"/dir/"目录,并放置aa.jsp文件。重起服务之后,我们才能用"http://xxxxx/dir/aa.jsp"这样的url来访问aa.jsp文件。
过去有的朋友误以为"dir"是IIS工作目录中的路径,运行时无法显示页面,或者jsp代码没有解析,其实就是这个路径设置的问题。
值得注意的是如果IIS和Tomcat的工作目录同时存在"/dir/",那么服务器会把此路径连接至Tomcat处理。
当你的Tomcat和IIS一起正常工作后,你可以随时修改这个文件以增加新的目录来支持jsp的运行。
这里是关于worker2.properties这个文件更多的规则。
右键系统栏中的Tomcat服务图标,选择"Stop service",关闭服务。
在"管理工具-服务"中找到"Apache Tomcat"服务,并确定它已经启动。
Tomcat IIS 连接器
你已经放置isapi_redirector2.dll在你的路径下,本例子中是
C:/Tomcat 5.0/bin/win32/i386
现在需要添加一些必要的注册信息到注册表,redirector被IIS调用时会读到。建立一个.reg文件
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Jakarta Isapi Redirector/2.0]
"workersFile"="C://Tomcat 5.0//conf//workers2.properties"
"extensionUri"="/jakarta/isapi_redirector2.dll"
"logLevel"="debug"
"serverRoot"="C://Tomcat 5.0//"
在记事本中写入上面的文字,并保存为 reg.reg (附件中有一个copy)
双击.reg文件
成功则显示如下:
注册表中可以看到:
现在可以删除这个.reg文件了
![]()
Windows
添加两个系统环境变量,他们是CATALINA_HOME和JAVA_HOME.
在桌面上右键"我的电脑",选择"属性-高级-环境变量"
CATALINA_HOME 指向你的Tomcat安装目录,本例子中是 C:/Tomcat 5.0
JAVA_HOME 指向Java SDK安装目录,本例子中是 C:/j2sdk1.4.2_04
IIS
安装ISAPI筛选器
进入ISAPI筛选器 界面
点击 添加 按钮,键入一个新的筛选器名称,名称可以随意起
再点击 浏览 按钮,选择isapi_redirector2.dll。本例子中是
C:/Tomcat 5.0/bin/win32/i386/isapi_redirector2.dll
点击确定。IIS重起之后新的筛选器才会生效,我们先不重起,稍后再做。
点击确定保存修改,退出站点属性对话框。
注意Note: 你可以选择特定的站点进行设置,增加筛选器,也可以对所有站点同时增加筛选器
在IIS树中右键左侧的"计算机",调出属性,选择"编辑"调出主属性对话框
调出主属性对话框,添加筛选器。
创建筛选器所需要的虚拟目录
选择需要加载Tomcat服务站点,右键选择新建,再选择虚拟目录
创建虚拟目录,别名为jakarta。注意这个名字是固定值,不要拼写错误!
指定目录为isapi_redirector2.dll所在目录. 本例子中是 C:/Tomcat 5.0/bin/win32/i386
选择执行,使之可用
成功建立虚拟目录之后,你应该在管理其中看到如下显示。
重新启动IIS服务
选择计算机,右键,选择重新启动IIS
选择重新启动Internet服务,点击确定
操作系统中管理工具-事件查看器中可以查看服务的启动情况,isapi_redirector2.dll会把它的出错信息写入事件查看器,而不是像较早版本那样写入一个文件中。
启动之后在IIS控制台,站点属性中的ISAPI筛选器的列表中,可以看到Tomcat连接器的状态,有绿色向上箭头就对了
测试
Tomcat
首先测试Tomcat安装的例子能否运行,使用Tomcat自己的服务器和端口
测试服务器中的servlets: http://localhost:8080/servlets-examples/
测试服务器中的JSP: http://localhost:8080/jsp-examples/
测试Tomcat管理界面: http://127.0.0.1:8080/admin/
IIS
现在我们访问IIS中的同一个例子,来测试连接器是否工作,注意修改地址和端口跟你的IIS相符合
http://localhost/servlets-examples/
http://localhost/jsp-examples/
如果一切正常,则你已经使得IIS5在Tomcat JK2 IIS 连接器的工作下可以解析jsp&servlet程序了,祝贺你。
并乐意得到你的经验和对此文章的反馈