1.安装 JDK 1.5与 Tomcat 5.5,生产环境建议安装exe版本以 服务的方式运行,JDK和exe版的Tomcat基本不需要配置.而我这边主要是用以调试,所以是下载zip文件形式的Tomcat.相关的配置方法,可以参考 这篇文章,注意IIS和Tomcat都使用各自默认的端口80和8080.
2.在IIS中把JSP相关的请求发送到Tomcat需要 Tomcat Connector的支持.事实上,Tomcat为主流的 Web Server 和 OS 都提供了支持.这应该是由于Tomcat将自己定位为JSP容器,而非 Web Server,即使它也可以作为 Web Server 使用.在上面的链接中下载 isapi_redirect.dll ,我把它放到了 Tomcat 目录里面的 bin\win32\i386 里面.然后 参考这里对 Connector 进行配置,我这里使用了注册表的方式,上面还有另一种通过properties文件进行配置的方法.这里要注意的是,虽然上面说在 Tomcat 的 conf 目录里能找到示例的配置文件,但我在tomcat里面却没有发现相关的文件.这里给出 workers.properties 和 uriworkermap.properties 简单示例
workers.properties
# workers.properties.minimal -
#
# This file provides minimal jk configuration properties needed to
# connect to Tomcat.
#
# The workers that jk should create and work with
#
worker.list = ajp13w
#
# Defining a worker named ajp13w and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13w.type = ajp13
worker.ajp13w.host = localhost
worker.ajp13w.port = 8009
#
# This file provides minimal jk configuration properties needed to
# connect to Tomcat.
#
# The workers that jk should create and work with
#
worker.list = ajp13w
#
# Defining a worker named ajp13w and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13w.type = ajp13
worker.ajp13w.host = localhost
worker.ajp13w.port = 8009
uriworkermap.properties
# uriworkermap.properties - IIS
#
# This file provides sample mappings for example ajp13w
# worker defined in workermap.properties.minimal
# The general sytax for this file is:
# [URL]=[Worker name]
/servlets-examples/*=ajp13w
# Optionally filter out all .jpeg files inside that context
# For no mapping the url has to start with exclamation (!)
#
# This file provides sample mappings for example ajp13w
# worker defined in workermap.properties.minimal
# The general sytax for this file is:
# [URL]=[Worker name]
/servlets-examples/*=ajp13w
# Optionally filter out all .jpeg files inside that context
# For no mapping the url has to start with exclamation (!)
workders.properties中可以定义多个worker,若要添加worker,首先要修改worker.list项,多个worker使用,号分隔,然后再通过 worker.<worker_name>.<property_name>的形式定义workder的属性.如上例中的 ajp13w,其中type表示Tomcat端使用的协议,除了ajp13外,常见的还有旧版的ajp12协议,host自然就是指tomcat所在的主机,我的理解是应该可以把它指到其他的主机上面,实现负载均衡等高级应用.port一般不需要更改,要注意这个port是提供ajp13服务的,与 8080的http是两回事.我在配置的时候就发生ajp13服务没有正常启动,重启了服务器之后才解决,要确认该服务器有无启动,可以查看logs下面的stdout开头的日志文件,基有发现"INFO: JK2: ajp13 listening on /0.0.0.0:8009" 字样的行,说明Tomcat的 ajp13已经正常运行.
uriworkermap.properties的配置方法也很简单,等号的左边是url的样式,右手边就是worker的名称.Connector会把匹配该样式的请求转发到指定的worker去进行处理.这里相当于在IIS把/servlets-examples/映射到Tomcat的/servlets-examples/应用程序.你也可以把IIS里面的站点根目录和Tomcat里面的站点根目录指到同一个目录,然后再把*.jsp和*.do映射到Tomcat去处理,这种方法应该比较适合生产环境,因为据说tomcat对静态文件的处理能力较差.
3.现在开始对IIS进行配置,首先打开 IIS管理器 , ISAPI和CGI限制 里面把isapi_redirect.dll添加进去,并设为允许,如果果你找不到这一项,请点击右边树形菜单的根选项,即是以计算机名称开头的项.只有在这里才能找到.这个相当于IIS6里面的"Web 服务扩展",要在这里有设定为允许的项才能在IIS里面被执行.
完成这一步之后,再在网站里面的"Default Web Site"添加应用程序.程序名应对应于在注册表中
extension_uri
的设置.此处为"jakarta",然后将物理路径指向isapi_redirect.dll所在的目录.完成之后点击这个应用程序,进入
处理程序映射,点击右手边的"
编辑处理程序权限...",把"执行"项勾打上.
随后为站点添加ISAPI筛选器以便Connector能截取到URL请求.点击"Default Web Site" -> "ISAPI 筛选器" ,把isapi_redirect.dll添加进去,名称可以随便起.
完成这个步骤以后,Connector就可以对请求进行过滤,把符合配置文件中的请求重写到
extension_uri
指定的uri进行处理,这里为/jakarta/isapi_redirect.dll,然后isapi_redirect.dll再转发到tomcat的8009由tomcat处理完成后再循原路发回去.
如对 workers.properties 进行更改,需要重启IIS.另外VISTA下面似乎uriworkermap.properties的动态加载功能也无法正常运行.每次更改也需要重启IIS..